1. 程式人生 > 其它 >sudo:Operation not permitted事件

sudo:Operation not permitted事件

前言

事情是這樣的,在風和日麗的一天,我如往常一樣在伺服器上敲下了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,其他人又怎麼可能執行?所以,就是空啦!