作为管理员,如何限制用户安装特定的软件包?

我想知道管理员如何禁止用户/组下载某些软件包。例如,比如说youtube-dl软件包可以下载YouTube视频,或者rtorrent
那么应该怎么做才能禁止用户安装特定的软件包呢?考虑到这些软件包可能与mp3、视频、种子等相关。
附注:这些用户拥有sudo权限。

这些用户有sudo权限吗? - Maythux
是的,一定。因为我已经提到过他们可以下载软件包,但其中一些与视频/MP3/种子相关的软件包必须对他们禁用。 - Virtual Travels
只有管理员才能安装任何软件包。 - Pilot6
你能解释一下背景吗?你将无法在其他管理员中充当“超级”管理员,但你可以通过欺骗来增加难度。这取决于情况和你的同行管理员的水平,如果这是一个可接受的解决方案。 - Jacob Vlijm
1个回答

首先,你应该知道其他人是sudoers,所以你不能限制他们的访问权限,但是有一个巧妙简单的方法可以实现你想要的效果。
首先,你应该明确指定所有你想要限制的软件包。
打开sudoer配置文件:
sudo visudo 

例如,我将在这里阻止名为user的用户安装youtube-dl。请将此行添加到文件中。
user ALL = ! /usr/bin/apt-get install youtube-dl

现在用户名为user的用户无法安装youtube-dl软件包。
$ sudo apt-get install youtube-dl
[sudo] password for user: 
Sorry, user user is not allowed to execute '/usr/bin/apt-get install youtube-dl' as root on userPC.

重新为其他用户和其他软件包执行相同的操作。
最后,您还应该防止这些用户编辑sudoer配置文件本身,因此您需要为每个用户添加一行。
user ALL = ! /usr/bin/apt-get install youtube-dl \
           ! /usr/sbin/visudo

所以现在给用户
$ sudo visudo 
[sudo] password for user: 
Sorry, user user is not allowed to execute '/usr/sbin/visudo' as root on userPC.

欢迎,但要记住,如果您的用户是高级用户,最好将他们从“sudo”中移除。上述操作可以很容易地被一些高级用户覆盖。 - Maythux
这里的“高级用户”是指有更深入了解和运用知识的用户。他们可以通过覆盖设定或修改设置来进行操作。 - Virtual Travels
一个具有sudo权限的用户可以轻松更改root密码,从而他可以使用root账户,并且在这种情况下,无论你做什么都没有意义。 - Maythux
有没有办法限制sudo用户执行诸如sudo reboot/shutdown之类的命令? - Virtual Travels
是的,有的,只需阅读我上面的答案,我说明了如何做到。 - Maythux