因為windows系統會把檔案看成物件 訂定父子權限(繼承)不是問題。
但linux就不同了,linux把權限分成3個:
(擁有者 , 擁有者群組 , 其他使用者)
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可以調用系統檔案。而就也發展出比較嚴謹的權限方法(附加權限)
windows可設定檔案特殊存取權限,而linux也有類似。且相較windows的方法更加嚴謹 順帶一提(基本上linux是不需裝防毒軟體的)。
這些都是專門解決執行權問題的方式 所以只能附加在x(執行)
『以系統管理員身分執行』應該是windows用戶最熟悉的詞了。而在linux的安全性裡並沒有以root執行的行為(頂多su),所以必須賦予檔案可為最高權限執行。之前談到為何windows有些檔案連admin都無法存取;而linux也會發生擁有者無法變更檔案的情形,所以最高權限是誰就非常重要了。
現在賦予此目錄其他人的w(寫入)權限。但如只要讓其他人可修改文件,而不是刪除或移動甚至亂修改權限。
解決方法就是讓目錄或檔案賦予sticky,如此一來只有擁有者(最高權限)或root才能對檔案或目錄下做更動。
用法跟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是怎麼解決此問題的。(歡迎指教)