我不知道如何让用户(在本例中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.