sudo:Operation not permitted事件
阿新 • • 發佈:2021-06-26
前言
事情是這樣的,在風和日麗的一天,我如往常一樣在伺服器上敲下了sudo xxxx,然而,這個指令竟然被kill了。
sudo: Operation not permitted
Killed
思索10min無所得,遂求助運維同學,答曰:4755。
咦,4755?這熟悉的陌生人,《鳥哥的Linux私房菜》裡就有介紹過耶。
正文開始。
一、SUID
1.SUID的限制與作用
SUID即Set UID,s標誌出現在user位的x上。
- SUID 許可權僅對二進位程式(binary program)有效;(不能夠用在 shell script 上面,因為shell script只是在執行一堆binary program)
- 執行者對於該程式需要具有 x 的可執行許可權;
- 本許可權僅在執行該程式的過程中有效 (run-time);
- 執行者將具有該程式擁有者 (owner) 的許可權。 (執行過程中暫時獲得該程式擁有者的許可權)
- SUID對於目錄無效
2.前言答案
關鍵就在於這個s,我的sudo會被kill掉,就是因為少了s:
leah@ubuntu:~$ ll /usr/bin/sudo
-rwsr-xr-x 1 root root 155008 Aug 27 2015 /usr/bin/sudo*
二、SGID
1.SGID作用在檔案
SGID即Set GID,顧名思義,s標誌出現在group的x上。
- SGID 對二進位程式有用;
- 程式執行者對於該程式來說,需具備 x 的許可權;
- 執行者在執行的過程中將會獲得該程式群組的支援。
2.SGID作用在目錄
- 使用者若對於此目錄具有 r 與 x 的許可權時,該使用者能夠進入此目錄;
- 使用者在此目錄下的有效群組(effective group)將會變成該目錄的群組;
- 用途:若使用者在此目錄下具有 w 的許可權(可以新建檔案),則使用者所建立的新檔案,該新檔案的群組與此目錄的群組相同。
三、SBIT
SBIT 目前只針對目錄有效,作用:
- 當使用者於於此目錄具有 w, x 許可權,亦即具有寫入的許可權時;
- 當使用者在該目錄下建立檔案或目錄時,僅有自己與 root 才有權力刪除該檔案
舉例來說,/tmp的許可權為drwxrwxrwt,任何人都可以在 /tmp 內新增、修改檔案,但僅有該檔案/目錄建立者與 root 能夠刪除自己的目錄或檔案。
四、SUID/SGID/SBIT 許可權配置
SUID、SGID和SBIT用數字表示分別為
- 4:SUID
- 2:SGID
- 1:SBIT
到這裡已經很清晰了,破解本次事件關鍵就是:
chmod 4755 /usr/bin/sudo
當然咯,這樣也行:
chmod u+s /usr/bin/sudo
或者這樣:
chmod u=rwxs /usr/bin/sudo
再來看個有趣的例子:
leah@ubuntu:~$ touch test.txt
leah@ubuntu:~$ ls -l test.txt
-rw-rw-r-- 1 leah leah 0 Jun 23 09:38 test.txt
leah@ubuntu:~$ chmod 7666 test.txt
leah@ubuntu:~$ ls -l test.txt
-rwSrwSrwT 1 leah leah 0 Jun 23 09:38 test.txt
發現了嗎?大S和大T哦~ 原因很簡單,user都沒有x,其他人又怎麼可能執行?所以,就是空啦!