允许某些客人执行某些命令

Pro*_*ter 23 permissions sudo privileges

我想在我的一些 Debian/Ubuntu 主机上创建一个新用户,该用户能够使用命令apt-get update和更新服务器apt-get dist-upgrade,但我不想给他们完整的 sudo 访问权限来做任何其他事情。这可能吗?也许有一种方法可以创建一个他们无法编辑但可以执行的脚本,该脚本将以 root 用户身份执行?

Pro*_*ter 38

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
Run Code Online (Sandbox Code Playgroud)

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

[User's name] ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS, UPDATE_COMMANDS
Run Code Online (Sandbox Code Playgroud)

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

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

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

参考

  • 请注意,授予用户运行 `apt-get` 的权限,甚至仅仅是 `apt-get upgrade`,** 授予他们完全的 root 访问权限**!许多升级脚本允许交互式用户执行 shell,例如当配置文件发生更改时。为了安全起见,将 `apt-get` 限制为某些命令,并强制它是非交互式的。请参阅 [为我的 ssh 用户提供无密码 sudo 以获取 `apt-get update` 和 `apt-get upgrade` 是否安全?](http://unix.stackexchange.com/questions/205385/is-it-safe -for-my-ssh-user-to-be-given-passwordless-sudo-for-apt-get-update-an) (7认同)