Linux真小白入門教程第十三集——檔案許可權及安全性
ls命令可檢視檔案許可權
輸出結果的第一個欄位即描述了檔案和目錄許可權的編碼。
第一個字元代表了物件的型別:
-代表檔案
d代表目錄
l代表連結
c代表字元型裝置
b代表塊裝置
n代表網路裝置
後面的三組字元,每組都定義了三種訪問許可權
r 代表物件可讀
w 代表物件可寫
x 代表物件可執行
若沒有某種許可權,該許可權位置會出現單破折線代替,分別為(物件的屬主,物件的屬組,系統其他使用者)
w位置被取代,說明其他使用者沒有寫的許可權
umask命令可以用來顯示和設定所建立檔案和目錄的預設許可權
0022的第一位代表了一項特別的安全特性,叫做“黏著位”(後續會講到這個東西)
後面三位表示檔案或者目錄對應的umask八進位制值,將每一個八進位制位其轉化為3位二進位制
三位的八進位制數分別代表了屬主、屬組和其他使用者的讀寫許可權,例如664代表了屬組和屬主成員都有讀和寫的許可權,而其他使用者只有讀的許可權。
掩碼:指的是一串二進位制數字,通過與目標數字的按位操作,達到遮蔽指定位而實現需求。
Linux系統上預設的八進位制umask值為022,但umask值只是個掩碼,它會遮蔽掉不想授予該安全級別的許可權
對於檔案來說,全許可權是666,所有使用者都有讀和寫的許可權
對於目錄來說,全許可權是777,所有使用者都有讀寫和執行的許可權
所以檔案一開始是666,減去umask值022後,剩下的檔案許可權就變成了644。
在大多數的Linux的發行版中,umask值通常會設定在/etc/profile啟動檔案中
可以用umask命令為預設umask設定指定一個新值
將umask設定為026後,檔案的許可權變為640
將umask設定成026後,目錄的許可權變為751
chmod命令可以用來改變檔案和目錄的安全性設定
chmod options mode file
mode引數可以使用八進位制模式或符號模式進行安全性設定
而符號模式則更加複雜
[ugoa ]
[+-=]
[rwxXstugo]
第一組符號:u代表使用者,g代表組,o代表其他,a代表上述所有
第二組符號:+表示像在現有許可權上增加許可權,-代表在現有許可權上移除許可權,=表示將許可權設定為後面的值
第三組符號:表示代表作用到設定上的許可權
X:如果物件是目錄或者它已有執行許可權,賦予執行許可權。 s:執行時重新設定UID或GID。 t:保留檔案或目錄。 u:將許可權設定為跟屬主一樣。 g:將許可權設定為跟屬組一樣。 o:將許可權設定為跟其他使用者一樣。
u-x 移除了屬主已有的執行許可權,ls的 -F 引數可以再具有執行許可權的檔名後加一個星號*(這裡被移除了)
改變所屬關係
chown命令用來改變檔案的屬主
chgrp命令用來改變檔案的預設屬組
命令格式如下
chown options owner[.group] file
chown也可以同時改變屬主和屬組
也可以只改變屬組
(注意:只有root使用者能改變檔案的屬主,任何屬主都可以改變檔案的屬組,但前提是屬主必須是原屬組和目標屬組的成員)
chgrp命令可以改變檔案或目錄的預設屬組
此時使用者賬戶必須是檔案的屬主,除了能夠更換屬組之外,還得是新組的成。這是Linux共享檔案的一個途徑。
共享檔案在Linux上的實現方式是建立組
建立新檔案時,Linux會用預設的UID和GID給檔案分配許可權,如果想讓其他人也能夠訪問檔案,要麼改變其他使用者所在組的訪問許可權,要麼就給檔案分配一個包含其他使用者的新預設組
chmod命令修改SGID或者SUID都可以實現大範圍環境中建立文件並將文件與人共享。
SGID位會強制某個目錄下建立的新檔案或目錄都沿用該父目錄的屬組,而不是建立這些檔案的使用者的屬組。這可以為系統的使用者之間共享檔案提供一個簡便的途徑。