什麼是SUID?在Linux/Unix中如何設置SUID

文件中除了普通的讀、寫、執行權限外,還有一些特殊的權限,咱們可使用 chmod和chown命令來設置。 他們分別是SUID, SGID, Stricky Bit, ACL's, SUDO and SELinux 等,管理員可使用這些命令管理文件/文件夾。html

1)什麼是SUID?linux

2) 如何設置SUID?socket

3) 什麼地方使用SUID?學習

什麼是SUID,Linux中如何設置?

SUID (Set owner User ID up on execution) 是給予文件的一個特殊類型的文件權限。在 Linux/Unix中,當一個程序運行的時候, 程序將從登陸用戶處繼承權限。SUID被定義爲給予一個用戶臨時的(程序/文件)全部者的權限來運行一個程序/文件。簡而言之用戶在執行程序/文件/命令的時候,將獲取文件全部者的權限以及全部者的UID和GID。 ui

上面的解釋比較難理解,下面舉例詳細說明之。 spa

經過如下例子來學習SUID:

例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

 

和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.txt
ls -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

相關文章
相關標籤/搜索