什麼是SUID?在Linux/Unix中如何設置SUID
文件中除了普通的讀、寫、執行權限外,還有一些特殊的權限,我們可以使用 chmod和chown命令來設置。 他們分別是SUID, SGID, Stricky Bit, ACL's, SUDO and SELinux 等,管理員可以使用這些命令管理文件/文件夾。
1)什麼是SUID?
2) 如何設置SUID?
3) 什麼地方使用SUID?
什麼是SUID,Linux中如何設置?
SUID (Set owner User ID up on execution) 是給予文件的一個特殊類型的文件權限。在 Linux/Unix中,當一個程序運行的時候, 程序將從登錄用戶處繼承權限。SUID被定義爲給予一個用戶臨時的(程序/文件)所有者的權限來運行一個程序/文件。簡而言之用戶在執行程序/文件/命令的時候,將獲取文件所有者的權限以及所有者的UID和GID。
上面的解釋比較難理解,下面舉例詳細說明之。
通過以下例子來學習SUID:
例1: passwd 命令
當要改變賬戶的密碼的時候,我們使用passwd命令,此命令的所有者爲root。在我們改變密碼的時候, passwd命令將編輯一些配置文件, 如/etc/passwd, /etc/shadow,這些文檔只能通過root賬戶擁有權限打開或者瀏覽。所以如果我們試着去除SUID並給予passwd全部權限,它無法打開其他文件,如/etc/shadow更新密碼。在我們執行 passwd命令的時候,我們將會遇到權限拒絕的錯誤或者一些其他的錯誤。所以passwd命令設置SUID將root用戶權限給予普通用戶 ,使得後者可以更新/etc/shadow和其他文件。
例2: ping 命令
類似的如果我們執行 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
和SUID有關的一些問答:
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.txtls -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