iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
0

linux權限

因為windows系統會把檔案看成物件 訂定父子權限(繼承)不是問題。
但linux就不同了,linux把權限分成3個:

(擁有者 , 擁有者群組 , 其他使用者)

  • chmodxxx

chmod在終端機用來表達檔案權限方法,而xxx就分別為上面三個(u , g , o)

xxx是一組8進位的數字 , 用來表示<讀r><寫w><執行x>
r=4,w=2,x=1

Ex:chmod750表示?
U:可讀可寫可執行
G:可讀可執行不可寫入
O:不可讀不可寫不可執行
*終端機表示法: -rwxr-x---

多一個 - 就是linux的檔案頭標法 用來表示什麼檔案 ( - 就是文件 d 就是目錄)



chmodxxx。但沒有像windows一樣的特殊權限。
linux的文件最多有權限問題的應該就屬.sh檔了,.sh可以調用系統檔案。而就也發展出比較嚴謹的權限方法(附加權限)

linux附加權限

windows可設定檔案特殊存取權限,而linux也有類似。且相較windows的方法更加嚴謹 順帶一提(基本上linux是不需裝防毒軟體的)。
這些都是專門解決執行權問題的方式 所以只能附加在x(執行)

  • Set UID& GID

『以系統管理員身分執行』應該是windows用戶最熟悉的詞了。而在linux的安全性裡並沒有以root執行的行為(頂多su),所以必須賦予檔案可為最高權限執行。之前談到為何windows有些檔案連admin都無法存取;而linux也會發生擁有者無法變更檔案的情形,所以最高權限是誰就非常重要了。

  • Sticky Bit(粘滯位)

現在賦予此目錄其他人的w(寫入)權限。但如只要讓其他人可修改文件,而不是刪除或移動甚至亂修改權限。
解決方法就是讓目錄或檔案賦予sticky,如此一來只有擁有者(最高權限)或root才能對檔案或目錄下做更動。


chmodxxxx

用法跟chmodxxx就差在他多一個數字,前三個數字跟chmodxxx用法一模一樣

而最前面的八進數分別代表

su(setUID) == 4
sg(setGID) == 2
t(粘滯位) == 1

Ex:(有一個linux目錄權限設為 chmod5733)
代表u可rwx(且擁有者為最高權限)、g可-wx、o為-wx(但只可正常寫入 無法變更檔案)
終端機表示法:drws-wx-wt (d代表目錄)

  • 大小寫區分

你會發現特殊權限表示替代了執行(x)的位置 那要如何表示是否執行呢?
使用大小寫就可區分了:

Ex:有一個文件chmod5734
終端機表示法:-rws-wxr-T (T隱含o為不可執行)


總結:
win和linux哪種權限較實用呢?主觀來講,linux不用考慮磁碟格式與路徑問題(win只要權限脫離ntfs系就會無效)。因為chmod附加權限大致上即可解決,且因權限定義簡單(大致上windows做得到的權限chmod都沒問題)、和程式(如python的os.chmod後面會談到)相容性較好,所以server或nas會採用linux的chmod。
但windows有趣的地方在於他每個權限定義較為模糊(複雜)。且因繼承權限的關係,所以須注意上層與裝置格式的任何變動。(因為可能一變動整個資料組都會無效)

個人覺得這樣蠻困擾的,蠻想知道win server是怎麼解決此問題的。(歡迎指教)


上一篇
[D25] windows權限與指令
下一篇
[D27] pythonOS_概論和檔案處理
系列文
從寫程式到脫離菜雞的歷練(以python為主的資處與檔案權限)32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言