sudo:Operation not permitted事件

前言

事情是这样的,在风和日丽的一天,我如往常一样在服务器上敲下了sudo xxxx,然而,这个指令竟然被kill了。

sudo: Operation not permitted
Killed

思索10min无所得,遂求助运维同学,答曰:4755。

sudo:Operation not permitted事件

咦,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,其他人又怎么可能执行?所以,就是空啦!

上一篇:Error: 0x800f0954 DISM failed. No operation was performed.


下一篇:Java设计模式(一)——工厂方法模式