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

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

有人可以帮帮我吗? 我整天都在研究这个问题,但仍然无法弄明白。 我可能输错了。

我正在使用Ubuntu 14.04。

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

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

创建组或使用%staff组。

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

更新sudoers文档。

 export editor="vi" && sudo visudo 

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

 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 

最后,您需要创建shell。

为了防止任何人编辑文件,这应该由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 

这应该如下所示:

 $ 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. 

首先,仅使用visudo编辑/etc/sudoers

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

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

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

 sudo -l 

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