Linux
如何將 sudo 限制為僅用於 rpm/deb 的使用者
無論如何限制使用者的 sudo,以便僅呼叫 rpm/deb 來安裝軟體包?
要賦予
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 <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
任何其他包管理器,或者實際上,對於任何允許執行程式碼的程序都是如此)