2018-3-29
2.19 特殊權限set_gid
2.20 特殊權限stick_bit
2.21 軟鏈接文件
2.22 硬連接文件
2.18 特殊權限set_uid
了解就好
更改root密碼時,使用過passwd命令,看一下passwd在哪還有權限。
是一個紅色的文件,並且權限位前三位不是rwx而是rws第一次見。
rwx分別是可讀可寫可執行。這個s是set_uid的權限。
再linux下passwd支持普通用戶自己改密碼,改密碼就意味著要改密碼的文件。/etc/shadow就是這個文件
權限-----,這樣的文件普通用戶為什麽能改?root自己都沒權限。root用戶必定是super管理員(有改權限的權限),就算---也能改。
現在又想讓普通用戶能改密碼,文件又不能讓他寫。所有就有了這個特殊權限set_uid(除了所有者,其他用戶當他去執行帶set_uid權限的這個命令時,執行的那一瞬間就會被賦予這個命令的所有者的權限)也就是普通用戶執行set.就臨時擁有root身份的意思。
要給一個文件設置setuid前提是二進制文件。
昨天講的權限中 9位分3段,u=user g=group o=ohter,分成了這三組。
首先我切換到wt用戶(普通用戶)
su - **切換用戶。ls一下/root/目錄
顯然不行,普通用戶權限不夠。
可以看到普通用戶是---,不可寫不可讀不可執行。那先回到root給ls設置一個sd權限,用chmod u+s//u就是user /usr/bin/ls (可以理解為臨時變身root用戶)
再來看 這個也變紅色了,s也有了。再回到wt用戶看一下,果然能看了,單權限依舊沒變 還是---。
也就是ls臨時擁有了root用戶的權限,要去掉他-s就ok
換一種方法附加sd權限,chomd u=rws /usr/bin/ls
s變大S了,是因為這樣沒有x權限了,所以加上就ok
又變成小s了。實際上大寫的S也不受影響(因為加了S本身就又執行的內容,所以就算沒x也沒問題)。
sd也可以加目錄上,不過沒什麽意義,目錄不用去執行。
總的來說set_uid就是給一個臨時root的權限,比較方便,像普通用戶也可以去修改root密碼這類的權限。
2.19 特殊權限set_gid
先把上面的ls還原成原來的rwx
然後chmod g+s /usr/bin/ls
看一下文件變成了×××的背景,其實set_gid的功能和setuid挺像的,只不過是換了個角色。
原來是普通用戶擁有所有者的身份,現在的普通用戶臨時擁有所屬組的身份。
r-s可以看到所屬組上又個s。
對於root 所有者和所屬組都是r-x,所以set_gid也能使wt查看root。
那也可以對目錄設置這個權限。
當給一個目錄設置setgid那這個子文件的子目錄和所屬組,會與剛才創建目錄的所屬組保持一致。
2.20 特殊權限stick_bit
系統又一個目錄有這個權限
這個權限最後一個rwt,這個t就是stick_bit。
誰的文件誰做主,防刪除權限,靠他的副級目錄決定。(比如tmp下有wt sxx都再用 防止其他人刪除文件)
很簡單 比如
user1可以修改aming的文件,但不能刪除。 所以這個權限就是防刪除位,只有有權限的人才可以刪除。(這個權限就是防刪除,root用戶除外)
把目錄權限改成rwxrwxrwx 777。 那就可以被其他用戶刪除了。
這三個權限大致理解一下就可以了不用深究。
2.21 軟鏈接文件
類似於windows的快捷方式
這個bin就是軟連接 其實就是一個軟鏈接,比如/bin/ls 和ls一樣的一個文件。
再文件本身存了另外一個路徑。路徑越長就越大。
lib64裏軟鏈接特別多,綠色的。
軟鏈接比較節省空間比拷貝方便。
ln -s 要做的鏈接 目標地 這個格式做軟鏈接。 例:ln -s /tmp/yum.log /root/wt/yum.log
軟連接 還可以連接目錄,同樣的操作格式。相對路徑的做法只會再當前目錄下,移動時可會除出錯紅色閃爍警告。
還可以劃分區。
2.22 硬連接文件
硬鏈接不支持對目錄做硬鏈接,只支持對文件。
兩個文件inode號一樣,相互為硬鏈接,而軟鏈接只是一個快捷方式找不到源時候就會問題,硬鏈接就沒問題相當於多了一個文件。
由於硬鏈接是有著相同 inode 號僅文件名不同的文件,因此硬鏈接存在以下幾點特性:
文件有相同的 inode 及 data block;
只能對已存在的文件進行創建;
不能交叉文件系統進行硬鏈接的創建;
不能對目錄進行創建,只可對文件創建;
刪除一個硬鏈接文件並不影響其他有相同 inode 號的文件。
2018-3-29