文件中除了普通的讀、寫、執行權限外,還有一些特殊的權限,咱們可使用 chmod和chown命令來設置。 他們分別是SUID, SGID, Stricky Bit, ACL's, SUDO and SELinux 等,管理員可使用這些命令管理文件/文件夾。html
1)什麼是SUID?linux
2) 如何設置SUID?socket
3) 什麼地方使用SUID?學習
SUID (Set owner User ID up on execution) 是給予文件的一個特殊類型的文件權限。在 Linux/Unix中,當一個程序運行的時候, 程序將從登陸用戶處繼承權限。SUID被定義爲給予一個用戶臨時的(程序/文件)全部者的權限來運行一個程序/文件。簡而言之用戶在執行程序/文件/命令的時候,將獲取文件全部者的權限以及全部者的UID和GID。 ui
上面的解釋比較難理解,下面舉例詳細說明之。 spa
例1: passwd 命令 unix
當要改變帳戶的密碼的時候,咱們使用passwd命令,此命令的全部者爲root。在咱們改變密碼的時候, passwd命令將編輯一些配置文件, 如/etc/passwd, /etc/shadow,這些文檔只能經過root帳戶擁有權限打開或者瀏覽。因此若是咱們試着去除SUID並給予passwd所有權限,它沒法打開其餘文件,如/etc/shadow更新密碼。在咱們執行 passwd命令的時候,咱們將會遇到權限拒絕的錯誤或者一些其餘的錯誤。因此passwd命令設置SUID將root用戶權限給予普通用戶 ,使得後者能夠更新/etc/shadow和其餘文件。htm
例2: ping 命令 blog
相似的若是咱們執行 ping命令,當咱們執行這個命令的時候,它會打開socket文件和端口發送和接受IP包。普通用戶無此權限。因此這個命令設置SUID位,當普通用戶在執行這個命令的時候,被授予全部者(Root)權限。當這個命令執行的時候,它將 Root用戶的權限授予普通用戶來打開socket文件和端口。繼承
例3: crontab 和 at 命令
當咱們使用crontab或者at命令計劃一些工做的時候,咱們須要編輯一些位於/etc/目錄和crotab相關的配置文件,這些文件普通用戶是沒有修改權限的。因此crontab/at命令被設置SUID,能夠寫入數據。
文件如何設置SUID?
有兩中方式設置SUID
1) Symbolic way(s, Stands for Set) 符號方式
2) Numerical/octal way(4) 數字方式
使用 chmod 命令設置文件 SUID : file1.txt
Symbolic way: 符號方式:
chmod u+s file1.txt
將全部者的執行權限位被設置成s。
Numerical way:數字方式
chmod 4750 file1.txt
在 4750中, 4 說明 SUID 位被設置, 7 爲全部者讀寫執行權限, 5 爲全部組的讀執行權限,其餘無任何權限。
如何檢查一個文件是否設置了SUID位?
使用 ls –l 命令檢查是否全部者執行權限被s或者S所取代。
好比: file1.txt 列出設置SUID先後的屬性
設置 SUID前:
ls -l
total 8 -rwxr--r-- 1 xyz xyzgroup 148 Dec 22 03:46 file1.txt
設置SUID後:
ls -l
total 8
-rwsr--r-- 1 xyz xyzgroup 148 Dec 22 03:46 file1.txt
A) SUID在哪來使用 ?
1) 須要root帳戶來執行一個寫命令/程序/腳本。
2) 不想給特定用戶以認證可是想做爲使用者來執行一些程序。
3) 不想使用SUDO命令可是想給予一個文件/腳本執行權。
B) 我在文件權限看到 「S」 大寫的 「s」,這是什麼?
給文件/文件夾設置 SUID後,若是在文件的權限部分看到 ‘S’ ,說明這個用戶對這個文件/目錄沒有執行權。
以下:
chmod u+s file1.txt
ls -l -rwSrwxr-x 1 surendra surendra 0 Dec 27 11:24 file1.txt
若是你想將S轉變成s,像下面同樣增長這個文件的執行權。
chmod u+x file1.txt ls -l -rwsrwxr-x 1 surendra surendra 0 Dec 5 11:24 file1.txt
你將會看到小寫的 's' 已經出如今執行屬性的位置上了。
SUID 帶執行權限:
SUID 不帶執行權:
C) 如何在Linux/Unix中尋找設置了SUID的文件 .
find / -perm +4000
上面的find命令將會查找帶有SUID位(4000)的文件。
D) 能夠爲文件夾設置SUID嗎?
能夠,若是有須要。(Linux將全部的東西都當文件對待)。
E) SUID 的數字值?
4.
原文地址:http://www.linuxnix.com/2011/12/suid-set-suid-linuxunix.html