SUID

什麼是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_Linux

 

SUID 不帶執行權:

 

SUID_Linux_without_execute_permissions

 

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章