接觸linux一段時間了,有個權限問題讓我一直郁悶。網上也沒找到(估計是關鍵字不對),就是這個0777,最前面的0是什麼意思。最近看到一本書(Linux與unix shell程式設計指南),終于找到答案了。
先說一下777什麼意思吧,linux下檔案權限分為所屬使用者權限、所屬組權限和其他權限。
每一個又分為r(讀)w(寫)x(可執行)。如果你在linux中運作 ls -l就會顯示權限如:
Java代碼
-rwxr-xr-x 1 root root 12 09-02 15:21 my_test.sh
“-”表示檔案類型不用管。第一個rwx是所屬使用者的權限,表示所屬使用者(root)對本檔案可讀(r)可寫(w)可執行(x)。第二個”-rx“表示屬于同一組的使用者的權限可讀(r)不可寫(-)可執行(x)。第三個表示其他使用者的權限可讀不可寫可執行。
這些數字就分别對應針對不用使用者的權限。第一個7表示第一個rwx,當然第二個就表示第二個,第三個就表示第三個。
下面就說說7表示什麼權限
7換成2進制就是 111,這樣就對了,正好對應rwx。當然都知道1表示true,是以,7的權限就是rwx了,如果上面的my_test.sh改成777的話,ls -l 那就顯示:
-rwxrwxrwx 1 root root 12 09-02 15:21 my_test.sh
反過來,你知道上面的my_test.sh 的權限用數字應該是什麼呢,
應該是 111101101 = 755
下面說一下最前面的那個0是什麼意思:
0777前面的0原來是叫個suid和guid的東西。
suid意味着如果某個使用者對屬于自己的shell腳本設定了這種權限,那麼其他使用者在執行這一腳本時也會具有其屬主的相應權限。
guid則表示執行相應腳本的使用者将具有該檔案所屬使用者組中使用者的權限。
是不是不大明白呀,下面舉個例子:
上面的mysql_test.sh檔案權限是所屬使用者(root)是7,如果設定了suid,那麼其他任何使用者的權限都是7,如果設定了guid,那麼任何使用者的權限都是5。
如何設定suid和guid:
設定suid就是把0變為4,設定guid就把0變為2,如果都設定那就是6了
chmod 4777 mysql_test.sh
出自 http://chen498402552-163-com.iteye.com/blog/1164407