setuid,setgid,sticky許可權分析

2021-09-21 04:30:58 字數 3283 閱讀 3300

linux下建立新檔案時,預設uid和gid來分配檔案許可權。想讓其他人也能訪問檔案 ,要麼改變其他使用者所在安全組的訪問許可權,要麼給檔案分配乙個新的包含其他使用者的缺省屬組。在一台擁有多人許可權的linux上,建立文件並共享 ,這很煩瑣,幸好linux為我們提供解決的簡單方法;linux還為每個檔案和目錄儲存了3個額外的資訊位。

定義:設定使用者id(suid)當檔案被使用者使用時,程式會以檔案屬主的許可權執行。

現實中的應用:

檢視/usr/bin/passwd 與/etc/passwd檔案的許可權

san@san-ubuntu16:~$ ls -alh /etc/passwd

-rw-r--r-- 1 root root 2.4k 12月 1014:

06 /etc/passwd

san@san-ubuntu16:~$ ls -alh /usr/bin/passwd

-rwsr-xr-x 1 root root 53k 5月 17

2017 /usr/bin/passwd

說明:

由於/etc/passwd檔案儲存的是使用者的賬號與密碼資訊,因此它的屬主和屬組都是root系統管理員;並且通常只有root才能讀寫修改,屬組和其他使用者唯讀;

/usr/bin/passwd是執行修改和檢視/etc/passwd檔案的程式,但從許可權上看,/etc/passwd僅有root擁有寫的許可權,可實際上每個使用者都可以通過/usr/bin/passwd命令去修改這個檔案(普通使用者不加sudo只能修改自己的,加sudo輸入root密碼擁有root許可權除外),於是這裡就涉及了linux裡的特殊許可權setuid,正如-rwsr-xr-x中的s 就是設定了suid

作為普通使用者是沒有許可權修改/etc/passwd檔案的,但給/usr/bin/passwd以suid許可權後,普通使用者就可以通過執行passwd命令,臨時的擁有root許可權,去修改/etc/passwd檔案了

同樣的例子就是ping命令

新增suid許可權:

chmod u+s 「檔案」

定義:設定組id(sgid)對檔案來說,程式會以檔案屬組的許可權執行;對於目錄來說,目錄中建立的新檔案會以目錄的缺省屬組作為缺省屬組。

新增sgid許可權

chmod g+s "目錄"

實驗:/home/san/test/目錄下有乙個test2目錄

預設許可權如下:

san@san-ubuntu16:~/test$ ls -alh

drwxrwxr-x 2 san san 4.0k 12月 10 14:05 test2

通過:

chmod g+s test2 對test2目錄設定sgid許可權如下:

san@san-ubuntu16:~/test$ chmod g+s test2/

san@san-ubuntu16:~/test$ ls -alh

總用量 48k

drwxr-xr-x 3 san san 4.0k 12月 10 14:05 .

drwxr-xr-x 60 san san 4.0k 12月 10 13:05 ..

drwxrwsr-x 2 san san 4.0k 12月 10 14:05 test2

此時切換到root使用者再到tes2目錄下建立乙個檔案a.txt

san@san-ubuntu16:~/test$ su root

密碼: #輸入root密碼

root@san-ubuntu16:/home/san/test/test2# ls -alh

總用量 8.0k

drwxrwsr-x 2 san san 4.0k 12月 10 14:24 .

drwxr-xr-x 3 san san 4.0k 12月 10 14:05 ..

**-rw-r--r-- 1 root san 0 12月 10 14:24 a.txt**

由於test2加了sgid許可權,所以切換到root時建立的檔案缺省屬組已經變成了san組。

貼上位(sticky),對檔案目錄新增了sticky許可權後,此目錄下的檔案或目錄,是誰建立的只有建立者才能刪除(root除外),即使在這個擁有sticky目錄下建立的檔案是777許可權,非建立本身(除root) 其他使用者都不能刪除,linux系統中/tmp目錄就是這個許可權。

san@san-ubuntu16:/tmp$ ls -alh /

drwxrwxrwt 10 root root 4.0k 12月 10 14:38 tmp

實驗:現系統中有兩個使用者 乙個san 乙個dong

san賬號切換到/tmp下建立san.txt 修改許可權為777

san@san-ubuntu16:/tmp$ touch san.txt

san@san-ubuntu16:/tmp$ chmod 777 san.txt

dong賬號切換到/tmp下建立dong.txt 修改許可權為777

dong@dong-ubuntu16:/tmp$ touch dong.txt

dong@dong-ubuntu16:/tmp$ chmod 777 dong.txt

最後的許可權如下:

san@san-ubuntu16:/tmp$ ls -alh |egrep "*.txt"

-rwxrwxrwx 1 dong dong 0 12月 10 14:36 dong.txt

-rwxrwxrwx 1 san san 0 12月 10 14:35 san.txt

近道理說san使用者 對dong.txt檔案也是可執行和修改刪除的,我們來刪除下試試看

san@san-ubuntu16:/tmp$ rm -rf dong.txt

rm: 無法刪除'dong.txt': 不允許的操作

沒有 許可權,這就是sticky許可權起的作用。

我們自己也可以建立目錄並賦予sticky許可權

設定sticky許可權:

chmod o+t "目錄"

suid 主要對可執行檔案的執行有效,當可執行檔案設定了suid後,其他使用者(普通使用者,即原本對這個可執行檔案沒有許可權的使用者)執行這個檔案時,以該檔案的屬主許可權臨時來執行.

sgid對檔案和目錄均有效,對於檔案,程式將在檔案使用者組的許可權下執行;當目錄設定sgid許可權時,其下的所有檔案或目錄的缺省屬組都和父目錄(設定sgid)保持一致;

sticky粘著位,程序結束後,檔案仍然保留在記憶體中;針對目錄新增時,其目錄下的檔案或目錄,只有建立本人完全擁有,非建立者或root不能刪除修改,即使這個檔案是777許可權.

ccf201612 3許可權查詢(90分)

相當複雜的模擬題,有乙個點不懂,就是輸入的p段不知道有什麼用,既然後面輸入的角色段裡的許可權都會包含在p段裡,那這個p段感覺沒什麼用,所以我只是做了接收字串,沒有做任何處理,可能扣的10分就來自這裡吧。定義了三個結構體,分別表示許可權,角色,使用者,來作為資料結構接收資料。剩下的就是模擬和查詢了。第...

2分鐘快速了解企業使用者許可權

作者 小菜 許可權按型別劃分為三類 頁面許可權 操作許可權和資料許可權。頁面許可權很好理解就是能不能進這個頁面 操作許可權就是對於這個頁面中的增刪改查按鈕以及其他按鈕能不能操作 至於資料許可權,就是不同使用者進來看到的資料不一樣,比如說研發部門只能看到研發部的資料,產品部只能看到產品部的資料。使用者...

linux 檔案許可權(一部分)

1 檔案型別 普通檔案 d 目錄 c 字元裝置 s 套接字 p 管道 b 塊裝置 l 鏈結 2 rw r r 檔案讀寫許可權 rw r r 所屬人許可權 所屬組許可權 其他人許可權 r 讀 w寫 x執行rw x對檔案 可以檢視檔案中的字元 可以更改檔案內字元 可以執行檔案內記錄的程式動作 對目錄可以...