轉自:http://chen498402552-163-com.iteye.com/blog/1164407
接觸linux一段時間了逊笆,有個權限問題讓我一直郁悶唧躲。網上也沒找到(估計是關鍵字不對)粘昨,就是這個0777,最前面的0是什么意思窗市。最近看到一本書(Linux與unix shell編程指南)溪猿,終于找到答案了。
先說一下777什么意思吧抠艾,linux下文件權限分為所屬用戶權限苛萎、所屬組權限和其他權限。
每一個又分為r(讀)w(寫)x(可執(zhí)行)检号。如果你在linux中運行 ls -l就會顯示權限如:
-rwxr-xr-x 1 root root 12 09-02 15:21 my_test.sh
“-”表示文件類型不用管腌歉。
第一個rwx是所屬用戶的權限,表示所屬用戶(root)對本文件可讀(r)可寫(w)可執(zhí)行(x)齐苛。
第二個”-rx“表示屬于同一組的用戶的權限可讀(r)不可寫(-)可執(zhí)行(x)翘盖。
第三個表示其他用戶的權限可讀不可寫可執(zhí)行。
這些數(shù)字就分別對應針對不用用戶的權限凹蜂。
第一個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 的權限用數(shù)字應該是什么呢蒿涎,
應該是 111101101 = 755
下面說一下最前面的那個0是什么意思:
0777前面的0原來是叫個suid和guid的東西哀托。
suid意味著如果某個用戶對屬于自己的shell腳本設置了這種權限,那么其他用戶在執(zhí)行這一腳本時也會具有其屬主的相應權限劳秋。
guid則表示執(zhí)行相應腳本的用戶將具有該文件所屬用戶組中用戶的權限仓手。
是不是不大明白呀胖齐,下面舉個例子:
-rwxr-xr-x 1 root root 12 09-02 15:21 my_test.sh
上面的mysql_test.sh文件權限是所屬用戶(root)是7,如果設置了suid俗或,那么其他任何用戶的權限都是7,
如果設置了guid岁忘,那么任何用戶的權限都是5辛慰。
如何設置suid和guid:
設置suid就是把0變?yōu)?,設置guid就把0變?yōu)?干像,如果都設置那就是6了
chmod 4777 mysql_test.sh