九、特殊權限set_uid、set_gid、stick_bit;軟鏈接文件;硬鏈接文件
(一)特殊權限set_uid(針對文件)
set_uid:該權限針對二進制可執行文件,使文件在執行階段具有文件所有者的權限。比如,passwd這個命令就具有該權限。當普通用戶執行passwd命令時,可以臨時獲得root權限,從而更改密碼。通俗的來說,就是普通用戶在編輯這個文件的時候才會獲得root用戶的改文件的權力。
設置這個命令的前提是這個文件需要是二進制文件,且須為可執行文件。
二進制文件:如ls命令,passwd命令這些命令的文件就是二進制文件。
更改密碼的文件:/etc/shadow
# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
紅色背景文件,s權限,代表set_uid權限。
如何給文件授權s權限:u代表uid
# chmod u+s /usr/bin/ls
# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
此時的s為小寫。
去掉這個權限:
# chmod u-s /usr/bin/ls
將命令改u-s即可。
另外一種寫法:
# chmod u=rws /usr/bin/ls
# ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117656 11月 6 2016
此時的s權限為大寫S,這是因為沒有root沒有了x權限,再命令:
# chmod u+x /usr/bin/ls
即可。大寫的S變為小寫的s。
目錄也可以加s權限,但是目錄不是可執行的文件,因此加s權限無意義。
(二)特殊權限set_gid(可作用文件,也可作用目錄)
set_gid:該權限可以作用在文件上(二進制可執行文件),也可以作用在目錄上。當作用在文件上時,其功能和set uid一樣,會使文件在執行階段具有文件所屬組的權限。目錄被設置這個權限後,任何用戶在此目錄下創建的文件都具有和該目錄所屬組相同的組。
如何設置這個權限,命令:
# chmod g+s /usr/bin/ls
# ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
×××背景文件,s權限在組權限的位置段。
# mkdir 123
# chmod g+s 123
# chown :user1 123
# touch 123/678
# ls -l 123/
總用量 0
-rw-r--r--. 1 root user1 0 1月 31 20:28 678
此處,123目錄下新建的678文件所屬組自動改為了user1。
(三)特殊權限stick_bit(sticky bit)
stick_bit:可理解為防刪除位。文件是否可以被某用戶刪除,主要取決於該文件所在的目錄是否對該用戶具有寫權限。若沒有寫權限,則這個目錄下的所有文件都不能刪除,同時也不能添加新文件。若希望用戶能添加文件但不能刪除目錄下其他用戶的文件,則可以對父目錄增加該權限。設置該權限後,用戶對目錄具有了寫權限,但不能刪除其他用戶的文件。防止別人刪除自己的文件,root用戶除外。
當有特殊權限時,第一位數字可以是0、1(--t)、2(-s-)、3(-st)、4(s--)、5(s-t)、6(ss-)、或7(sst)。
# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
# ls -ld /tmp/
drwxrwxrwt. 14 root root 4096 1月 31 20:45 /tmp/
回顧passwd,它是s--,所以是4;而/tmp/是--t,所以是1 。
passwd用數字表示為4755;/tmp/用數字表示為1777。
格式和set_uid和set_gid同理;chmod o+t dirname。
(四)軟鏈接文件(類似於Windows的快捷方式)
軟鏈接文件:與硬鏈接不同,軟鏈接是建立一個獨立的文件,當讀取這個鏈接文件時,它會把讀取的行為轉發到該文件所鏈接的文件上。可以節省空間,既可以鏈接文件,也可以鏈接目錄。做軟鏈接盡量使用絕對路徑。可以軟鏈接文件,也可以目錄,也可以跨分區。
制作軟鏈接的命令:
# ln -s [源文件] [軟鏈接文件]
ln命令格式:ln [-n] [源文件] [目的文件]
常用選項是-s。若不加-s就是建立硬鏈接,加上-s就是建立軟鏈接。
經驗:若有一個服務A會一直寫數據到B文件中,快把這個B文件的分區寫滿了,可以把B文件復制一份到根分區裏,這裏復制後的文件稱為B1,然後再刪除B文件,再建立一個軟鏈接,將B1軟鏈接到B來。
(五)硬鏈接文件
硬鏈接文件:當系統要讀取一個文件時,會先讀iNode信息,再根據iNode中的信息到塊區域將數據取出來。硬鏈接是直接再建立一個iNode鏈接到文件放置的塊區域,即進行硬鏈接時該文件內容沒有任何變化,只是增加了一個指向這個文件的iNode,並不會額外占用磁盤空間。
格式同軟鏈接格式一樣。
兩個限制:(僅支持文件)
1)不能跨文件系統,因為不同的文件系統有不同的iNode table;
2)不能鏈接目錄。
九、特殊權限set_uid、set_gid、stick_bit;軟鏈接文件;硬鏈接文件