?一.linux權(quán)限的概念:
1.用戶:
在用戶匹配過程中,系統(tǒng)會(huì)依次進(jìn)行匹配,首先是文件或目錄的擁有者,然后是所屬組,最后是其他用戶。
也就是說,用戶要么是擁有者,要么是所屬組成員,要么是其他用戶。
例如,如果擁有者沒有某個(gè)權(quán)限,而所屬組有該權(quán)限,擁有者仍然無法獲得該權(quán)限。
由于文件或目錄的1.擁有者、2.所屬組和3.其他用戶這三類用戶的設(shè)置不同,不同的用戶可能擁有不同的權(quán)限。
注意:上述用戶權(quán)限規(guī)則適用于普通用戶,超級(jí)用戶root可以無視所有權(quán)限限制。
下圖展示了文件或目錄的擁有者和所屬組:
2.文件/目錄屬性:
我們可以通過更改文件或目錄的擁有者、所屬組和其他用戶的權(quán)限來調(diào)整其權(quán)限。
文件或目錄有三種基本權(quán)限:讀取權(quán)限(r)、寫入權(quán)限(w)和執(zhí)行權(quán)限(x)。每個(gè)權(quán)限類別(擁有者、所屬組、其他用戶)各有三個(gè)權(quán)限,共九個(gè)權(quán)限位,用“-”表示沒有該權(quán)限。
例如:
不考慮最前面的字母。
1.test.cpp文件的權(quán)限是:前三個(gè)字母(rw-)表示擁有者有讀取和寫入權(quán)限,但沒有執(zhí)行權(quán)限。
2.中間三個(gè)字母(r–)表示所屬組只有讀取權(quán)限,沒有寫入和執(zhí)行權(quán)限。
3.后三個(gè)字母(r–)表示其他用戶也只有讀取權(quán)限。
?二.更改權(quán)限:1.更改rwx權(quán)限:chmod:
功能:設(shè)置文件的訪問權(quán)限。
格式:chmod [參數(shù)] 權(quán)限 文件名。
常用選項(xiàng):
●-R 遞歸修改目錄及其文件的權(quán)限。
注意:只有文件的擁有者和超級(jí)用戶root可以更改權(quán)限。
參數(shù)包括:+-=
u:代表擁有者。
g:代表所屬組。
o:代表其他用戶。
a:代表所有用戶。
例如:
為擁有者添加執(zhí)行權(quán)限。
也可以使用三個(gè)八進(jìn)制數(shù)來表示權(quán)限:
r:100(十進(jìn)制:4),w:010(2),x:001(1)。
rw:110(6),rx:101(5),wx:011(3)。
rwx(7)。
操作說明:
chmod 三個(gè)八進(jìn)制數(shù) 文件名稱
二.改變文件的擁有者,所屬組:1.更改擁有者:
chown 新的擁有者 文件名稱
2.更改所屬組: chgrp 新的所屬組 文件名稱
-R 遞歸修改文件所屬組
?三.對于umask的理解:新建文件的默認(rèn)權(quán)限是0666(rw-rw-rw-)。
新建目錄的默認(rèn)權(quán)限是0777(rwxrwxrwx)。
然而,新建文件或目錄的實(shí)際權(quán)限與此不同,這是因?yàn)樽罱K權(quán)限是由初始權(quán)限與umask值的邏輯與(&)運(yùn)算決定的。
超級(jí)用戶的umask默認(rèn)值是0022,普通用戶的umask默認(rèn)值是0002。
因此,超級(jí)用戶新建的目錄權(quán)限為0777 & (~0022) = 0755。
新建文件的權(quán)限為0666 & (~0022) = 0644。
?四.粘滯位的理解:chmod -t
首先需要理解,刪除目錄或文件的權(quán)限取決于你是否擁有其上一級(jí)目錄的寫入權(quán)限,而不是文件本身的寫入權(quán)限。
由于某些原因,我們可能需要?jiǎng)?chuàng)建一個(gè)共享目錄,所有用戶都具有rwx權(quán)限(如下圖)。然而,在這種設(shè)置下,雖然其他用戶沒有寫入權(quán)限,但他們可以刪除你在share目錄下新建的文件。因?yàn)閯h除share目錄下的文件取決于你在share目錄是否有寫入權(quán)限,而在共享目錄中,所有人都可以刪除別人的文件。
在這種情況下,我們引入了粘滯位。
為目錄添加粘滯位后,即使你對該目錄有寫入權(quán)限,只要文件不是你創(chuàng)建的,你就無法刪除該文件。