阻止sudo用户的命令


10

我不需要管理员更改我的root密码。我不希望任何sudo用户执行以下命令:

sudo passwd $root

我已经使用以下命令在sudoers文件中尝试了它:

%sudo ALL=(ALL) ALL, !/usr/bin/passwd $root

我该如何阻止?


您的意思是您的系统中有多个可sudo-able用户吗?或者是其他东西?请编辑问题以提供任何新信息。
埃德温

Answers:


15

根据sudoers手册

   It is generally not effective to "subtract" commands from ALL using the
   ’!’ operator.  A user can trivially circumvent this by copying the
   desired command to a different name and then executing that.  For
   example:

       bill        ALL = ALL, !SU, !SHELLS

   Doesn’t really prevent bill from running the commands listed in SU or
   SHELLS since he can simply copy those commands to a different name, or
   use a shell escape from an editor or other program.  Therefore, these
   kind of restrictions should be considered advisory at best (and
   reinforced by policy).

这就是为什么您的sudoers政策不起作用的原因。

如果要阻止用户获得root权限并更改其密码,请尝试以下过程:

  • 假设您的sudoers包含以下指令:

     root    ALL=(ALL:ALL) ALL
     %sudo   ALL=(ALL:ALL) ALL
    
  • 假设您的用户名是foo,他的组是foosudogroups命令输出为:

    foo sudo
    
  • foosudo组中删除用户:gpasswd -d foo sudo此后,用户foo无法使用sudo运行任何命令。

  • 编辑sudoers文件。使用此命令:

    sudo visudo -f /etc/sudoers.d/foo
    
  • 定义用户foo权限,例如:

    foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
    

    这意味着用户foo可以在目录中运行/usr/bin/passwdand su命令以外的任何命令。注意:如果用户foo想更改密码,可以运行passwd不带的命令sudo

  • 用户foo权限的另一个示例:

    foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    

    这意味着用户foo可以在目录中运行任何命令,/usr/bin/并可以更改任何人的密码,但所有计算机上的root用户除外。

您可以通过定义Cmnd_Aliases和创建“权限级别” 来定义命令组。您可以在sudoers manual的 EXAMPLE部分中找到有用的示例,这是有关如何使用sudoers 的有用链接


我必须foo ALL=/usr/bin/*, !/usr/bin/passwd知道为什么会这样吗?
clurect

-1

通过添加命令别名visudo

Cmnd_Alias PASSWD=/usr/bin/passwd
Cmnd_Alias SU=/bin/su

通过添加限制visudo

%nopasswdgroup ALL = ALL, !PASSWD, !SU

将用户添加到名为nopasswdgroup的组:

usermod -aG nopasswdgroup nopasswduser
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.