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

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

我不知道如何让用户(在本例中test)只能apt-get update使用文件运行命令sudoers。每当我尝试添加用户然后测试时,它仍然不允许用户运行命令。

有人能帮我吗?我研究了一整天,还是没搞明白。我可能输入错了。

我正在使用 Ubuntu 14.04。

答案1

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

您可以为用户设置仅joe用于apt-get命令的权限,只需添加以下行:

%joe your_hostname=(root):/usr/bin/apt-get

一旦以 身份登录joe,您就可以检查权限:

sudo -l

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

答案2

看看 Andre Herman Bezerra 的回答,唯一的问题是在评论中指出的才不是限制用户只能更新(他们可以安装/删除软件包)。

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

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

在这个例子中,我选择使用员工用户组。

更新sudoers文档。

export editor="vi" && sudo visudo

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

Cmnd_Alias UPDATER_ONLY = /usr/local/bin/updater.sh

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

# 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

最后,您需要创建外壳。

为了防止任何人编辑该文件,该文件应该由 root 拥有并且只读或运行时创建须藤

$ 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

它看起来应该像这样:

$ ls -la /usr/local/bin/updater.sh
-rwxr-xr-x 1 root root 60 Jan 22 08:50 /usr/local/bin/updater.sh*

我们快完成了!

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

sudo usermod -aG staff the-user

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

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.

相关内容