如何允许用户仅使用 sudo 运行 apt-get update 命令?

Ale*_*owe 8 permissions security sudo users

我无法弄清楚如何允许用户(在这种情况下test)只能apt-get update使用sudoers文件运行命令。当我尝试添加用户然后对其进行测试时,它仍然不允许用户运行该命令。

有人可以帮我吗?我一整天都在研究这个,但仍然无法弄清楚。我可能输入错误。

我正在使用 Ubuntu 14.04。

And*_*rra 8

首先,编辑/etc/sudoers唯一的visudo

您可以设置权限为用户joeapt-get命令仅添加以下行:

%joe your_hostname=(root):/usr/bin/apt-get
Run Code Online (Sandbox Code Playgroud)

以 身份登录后joe,您可以检查权限:

sudo -l
Run Code Online (Sandbox Code Playgroud)

编辑:用户将能够使用 apt-get 更新、升级、安装等;因为这些只是 apt-get 命令的标志。


ash*_*ash 6

看看 Andre Herman Bezerra 的答案,评论中指出了唯一的问题,这并不限制用户仅更新(他们可以安装/删除软件包)。

如果您想限制用户只能更新,最好执行以下操作。

创建一个组或使用该%staff组。

在此示例中,我选择使用员工用户组。

更新sudoers文档。

export editor="vi" && sudo visudo
Run Code Online (Sandbox Code Playgroud)

创建一个Cmnd_Alias将定义允许的脚本。

Cmnd_Alias UPDATER_ONLY = /usr/local/bin/updater.sh
Run Code Online (Sandbox Code Playgroud)

您需要定义如何允许该命令。

# Require staff to enter password when updating.
%staff ALL= UPDATER_ONLY

# Or, password is not required, just run the updater.
%staff ALL= NOPASSWD: UPDATER_ONLY
Run Code Online (Sandbox Code Playgroud)

最后,您需要创建外壳。

为了防止任何人编辑该文件,该文件应由 root 拥有且只读,或者在运行sudo时创建。

$ sudo echo '#!/bin/bash' >> /usr/local/bin/updater.sh
$ sudo echo 'sudo apt-get update && sudo apt-get upgrade -y' >> /usr/local/bin/updater.sh
$ sudo chmod 0755 /usr/local/bin/updater.sh
Run Code Online (Sandbox Code Playgroud)

这应该如下所示:

$ ls -la /usr/local/bin/updater.sh
-rwxr-xr-x 1 root root 60 Jan 22 08:50 /usr/local/bin/updater.sh*
Run Code Online (Sandbox Code Playgroud)

我们快完成了!

您需要记住通过将用户添加到员工组来允许此权限。

sudo usermod -aG staff the-user
Run Code Online (Sandbox Code Playgroud)

如果有人尝试安装某些东西,他们会收到以下内容:

test-me@comp0:~$ sudo apt-get install test
[sudo] password for test-me: 
Sorry, user test-me is not allowed to execute '/usr/bin/apt-get install test' as root on comp0.
Run Code Online (Sandbox Code Playgroud)