在linux系統(tǒng)中,存在兩種類型的用戶:root用戶和普通用戶。root用戶幾乎不受權(quán)限限制,而普通用戶則受到嚴(yán)格的權(quán)限控制。
當(dāng)使用ls -l命令查看目錄內(nèi)容時(shí),會(huì)看到一系列字符,如下圖所示:
這些字符的含義如下:
- 擁有者:表示文件或目錄的所屬者。
- 所屬組:表示文件或目錄所屬的組。
-
第一個(gè)字符:
- d:表示目錄。
- -:表示普通文件。
-
后面九個(gè)字符(每組三個(gè)):
- r表示讀權(quán)限。
- w表示寫權(quán)限。
- x表示執(zhí)行權(quán)限。
這些權(quán)限分為三組:
- 第一組:擁有者的權(quán)限。
- 第二組:所屬組的權(quán)限。
- 第三組:其他人的權(quán)限。
要改變這些權(quán)限,可以使用以下命令:
- u:改變擁有者的權(quán)限。
- g:改變所屬組的權(quán)限。
- o:改變其他人的權(quán)限(other)。
也可以使用八進(jìn)制方法進(jìn)行權(quán)限更改:
- rwx:每一位權(quán)限可以用二進(jìn)制表示,1表示有權(quán)限,0表示無權(quán)限。每組用八進(jìn)制表示。
要更改文件或目錄的所有者和所屬組,需要使用以下命令:
- chown:更改擁有者。
- chgrp:更改所屬組。
這些操作需要root權(quán)限。
進(jìn)入一個(gè)目錄需要什么權(quán)限呢?答案是需要x權(quán)限。
在目錄內(nèi)創(chuàng)建文件則需要w權(quán)限。
目錄的初始權(quán)限為777,普通文件的初始權(quán)限為666。但實(shí)際顯示的權(quán)限可能不同,這是因?yàn)閡mask的影響。umask中的權(quán)限不會(huì)出現(xiàn)在最終的權(quán)限中。
我的umask值是0002。
更改umask后,新創(chuàng)建的文件權(quán)限會(huì)發(fā)生變化。
最終的權(quán)限并不是簡(jiǎn)單的初始權(quán)限減去umask,而是通過位運(yùn)算得出的:最終權(quán)限 = 初始權(quán)限 & (~umask)。
粘滯位(sticky bit)可以防止用戶在共享目錄中刪除他人創(chuàng)建的文件或目錄。例如,創(chuàng)建一個(gè)共享目錄mytmp,并設(shè)置所有權(quán)限:
假設(shè)有兩個(gè)用戶,分別是temp和ML。
在沒有設(shè)置粘滯位的情況下,用戶可以在共享目錄中刪除其他用戶的文件:
設(shè)置粘滯位后,用戶就無法刪除其他用戶的文件了: