允许某些来宾执行某些命令


19

我想创造一些我的Debian / Ubuntu的主机的新用户是能够更新使用命令的服务器apt-get updateapt-get dist-upgrade,但我不wan't给他们充分sudo访问能够为其他人做任何事情。这可能吗?也许有一种方法可以创建一个他们无法编辑但可以执行的脚本,该脚本将以root用户身份执行?


2
请参阅man sudoerssudo cat /etc/sudoers
goldilocks 2015年

谢谢@goldilocks,我一直认为sudoers文件只是为了允许人们之前被授予root用户访问权限。
Programster

Answers:


30

Sudo/etc/sudoers文件不只是用于授予用户完全的root访问权限。

您可以使用以下命令使用现有的sudo用户编辑sudoers文件: sudo visudo

您可以对要授予访问权限的命令进行分组,如下所示:

Cmnd_Alias SHUTDOWN_CMDS = /sbin/poweroff, /sbin/halt, /sbin/reboot
Cmnd_Alias UPDATE_COMMANDS = /usr/bin/apt-get

然后,您可以为这些命令赋予特定的用户特权,如下所示:

[User's name] ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS, UPDATE_COMMANDS

可以在下图中看到在此处输入图片说明

现在,如果您尝试执行这些命令sudo apt-get updatesudo apt-get dist-upgrade将在不要求输入密码的情况下执行这些命令。如果要提示您输入密码,请删除NOPASSWD授予用户访问命令组权限的位。

如果尝试以sudo用户身份运行其他任何内容,系统将提示您输入密码,然后失败。

参考文献


6
需要注意的是给用户权限运行apt-get,甚至只是apt-get upgrade让他们充分的root访问权限!许多升级脚本允许交互式用户执行Shell,例如,当配置文件更改时。为了安全起见,请限制apt-get于某些命令,并强制其为非交互式。请参阅为我的ssh用户提供无密码的sudo apt-get update和安全apt-get upgrade吗?
吉尔(Gilles)'所以

就我而言,我必须在%sudo ...
Aleksey

有没有一种方法可以仅从命令行执行?
卡米尔·吉兹奇
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.