二週特殊權限set_uid 特殊權限set_gid 特殊權限stick_bit 軟連接文件硬鏈接文件

2.18 特殊權限set_uid

主要用在命令文件上,賦予普通用戶執行此命令時臨時擁有此命令全部者的權限,系統中passwd命令默認擁有此命令。linux

Linux系統中每一個普通用戶均可以更改本身的密碼,這是合理的設置。windows

問題是:用戶的信息保存在文件/etc/passwd中,用戶的密碼保存在文件/etc/shadow中,也就是說用戶更改本身密碼時是修改了/etc/shadow文件中的加密密碼,可是,ui

-rw-r--r-- 1 root root 1787 Oct 27  2009 /etc/passwd加密

-r-------- 1 root root 1187 Oct 27  2009 /etc/shadowspa

/etc/passwd文件每一個用戶都有讀權限可是隻有root有寫權限,/etc/shadow文件只有超級用戶root有讀寫權限,也就是說普通用戶對這兩個文件都沒有寫權限沒法寫入新密碼,爲何普通用戶能夠更改密碼呢?操作系統

PS:在linux中設置或更改用戶密碼,是先寫入到/etc/passwd文件而後經過pwconv命令轉換到/etc/shadow文件,執行pwunconv命令可觀察到轉換前效果,會觀察到/etc/shadow文件神奇的消失掉了,而/etc/passwd文件中原來打x的地方變成了真正的加密密碼。.net

其實,用戶能更改密碼真正的祕密不在於文件的權限,而在於更改密碼的命令passwd 。繼承

-rwsr-xr-x 1 root root 22960 Jul 17  2006 /usr/bin/passwdget

passwd命令有一個特殊的權限標記s ,存在於文件全部者的權限位上。這是一類特殊的權限SetUID ,能夠這樣來理解它:當一個具備執行權限的文件設置SetUID權限後,用戶執行這個文件時將以文件全部者的身份執行。passwd命令具備SetUID權限,全部者爲root(Linux中的命令默認全部者都是root),也就是說當普通用戶使用passwd更改本身密碼的時候,那一瞬間忽然靈魂附體了,實際在以passwd命令全部者root的身份在執行,root固然能夠將密碼寫入/etc/shadow文件(不要忘記root這個傢伙是superuser什麼事均可以幹),命令執行完成後該身份也隨之消失。it

chmod u+s 給文件添加set_uid權限

chmod u-s 給文件取消set_uid權限

chmod 4755 /usr/bin/ls 在ls 3位權限的基礎上加4表示添加全部者的s權限

chmod 755 /usr/bin/ls 取消全部者的s權限

不能使用chmod u=rws /usr/bin/ls 來添加全部者的s權限,由於這樣設置全部者沒有x權限,全部者的權限會顯示rwS,須要chmod u+x /usr/bin/ls加上x權限才變成rws。

2.19 特殊權限set_gid

做用於命令文件:臨時擁有此命令屬組的權限

做用於目錄:任何用戶在此目錄下建立的文件以及子目錄的屬組都爲此目錄的屬組,此目錄子目錄下建立的文

件以及目錄屬組也和此目錄相同。

添加此權限後會在屬組的權限位上x變爲s

chmod g+s 添加set_gid權限

chmod g-s 取消set_gid權限

chmod 2755 /usr/bin/ls 添加set_gid權限

chmod 755 /usr/bin/ls 取消set_uid權限

應用實例:

1.給ls命令加上setgid權限

[root@localhost ~] chmod 2755 /usr/bin/ls

[root@localhost ~] ll  /usr/bin/ls

-rwxr-sr-x. 1 root root 117616 6月 10 2014 /usr/bin/ls

2.給/tmp/SMB目錄加上setgid權限

[root@localhost tmp] chmod g+s SMB

[root@localhost tmp] ll -d SMB/

drwxr-sr-x. 2 root root 6 6月 27 21:36 SMB/

若是SMB目錄加上其餘用戶寫的權限的話,切換到其餘用戶登陸,在SMB建立的文件及目錄屬組就會是root

2.20 特殊權限stick_bit

防刪除位做用:

普通文件的sticky位會被linux內核忽略(不對文件生效)

目錄的sticky位表示這個目錄裏的文件只能被owner和root刪除

若是用戶對目錄有寫權限,則能夠刪除其中的文件和子目錄,即便該用戶不是這些文件的全部者也沒有文件讀或寫許可。粘着位出現執行許可的位置上,用t表示,設置了該位後,其它用戶就不能夠刪除不屬於他的文件和目錄。可是該目錄下的目錄不繼承該權限,要再設置纔可以使用。

注:可否刪除一個文件不取決於文件自己的權限,而在因而否有上級目錄寫的權限。

chmod o+t 添加防刪除位權限

chmod o-t 取消防刪除位權限

chmod 1777 添加防刪除位權限

chmod 777 取消防刪除位權限

chmod +t 添加防刪除位權限

chmod -t 取消防刪除位權限

系統中/tmp目錄默認帶有防刪除位權限:

[root@localhost tmp] ll -d /tmp

drwxrwxrwt. 11 root root 4096 6月 27 21:45 /tmp

當一個目錄被設置爲"粘着位"(用chmod a+t),則該目錄下的文件只能由:

1、超級管理員刪除

2、該目錄的全部者刪除

3、該文件的全部者刪除

也就是說,即使該目錄是任何人均可以寫,但也只有文件的屬主才能夠刪除文件。

有時你設置了s或t 權限,你會發現它變成了S或T,這是由於在那個位置上你沒有給它x(可執行)的權限,這樣的話這樣的設置是不會有效的,你能夠先給它賦上x的權限,而後再給s或t 的權限。

2.21 軟連接文件

軟連接至關於windows中的快捷方式,它其實是一個特殊的文件。在符號鏈接中,文件其實是一個文本文件,其中包含的有另外一文件的位置信息。

1.軟連接,以路徑的形式存在。相似於Windows操做系統中的快捷方式

2.軟連接能夠 跨文件系統 ,硬連接不能夠

3.軟連接能夠對一個不存在的文件名進行連接

4.軟連接能夠對目錄進行連接

語法:

ln -s 源文件 目標文件

ln -s /tmp/gavin/ /root/

linux系統中默認帶有不少軟連接,好比/bin /sbin /lib64 /lib等,/usr/lib64目錄中存在不少軟連接,作軟連接時最好都使用絕對路徑,以避免挪動位置後找不到源文件。

軟連接只會在你選定的位置上生成一個文件的鏡像,不會佔用磁盤空間,軟連接文件自己的大小和絕對路徑以及文件名的長短有關。

2.22 硬鏈接文件

硬連接只能用在文件,不能用在目錄

1.硬連接,以文件副本的形式存在。但不佔用實際空間。

2.不容許給目錄建立硬連接

3.硬連接只有在同一個文件系統中才能建立

語法:

ln 源文件 目標文件

ln /etc/passwd /root/

相關文章
相關標籤/搜索