
ユーザーがricardo
を使用してシステムを更新できるようaptitude
にしながら、 sudo を使用して他のコマンドを実行できないようにする sudo ルールを設計したいと考えています (彼は問題のあるユーザーです)。このルールには、私が見逃している落とし穴がありますか?
ricardo ALL=(root) /usr/bin/aptitude
Ricardo は のみを使用しaptitude
、 は使用しませんapt-get
。また、現時点では Ubuntu がどこにもインストールされていないため、 が/usr/bin/aptitude
許可する正確な正しいファイルではない可能性があることを理解しています。
このルールに落とし穴がある場合、どうすれば改善できるでしょうか?
答え1
aptitude
このコマンドは、リポジトリ キャッシュの更新とシステムの安全なアップグレードの実行以外の目的でのユーザーの使用を制限します。
ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade
同様のコマンドを使用すると、ユーザーは完全なアップグレードを実行できますが、それ以上のことはできません。
ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude full-upgrade
パーaptitude のドキュメント (10.04)、safe-upgrade
:
インストールされたパッケージを最新バージョンにアップグレードします。インストールされたパッケージは、使用されていない限り削除されません。
対照的に、full-upgrade
:
インストールされたパッケージを最新バージョンにアップグレードし、必要に応じてパッケージを削除またはインストールします。このコマンドは safe-upgrade よりも保守的ではないため、不要なアクションを実行する可能性が高くなります。ただし、safe-upgrade ではアップグレードできないパッケージをアップグレードすることは可能です。
ユーザーに実行を許可するかどうかは、ご自身の判断で決めてください。不明な場合は、 のみを許可する最初のルールを使用してくださいsafe-upgrade
。
ユーザーにパッケージのインストールを許可したい場合(セキュリティ上の利点は大幅に減少しますが、仮定の話です)、コマンド*
の後にを含める必要があります。aptitude
ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade, /usr/bin/aptitude install *
ricardo
そうでない場合、ユーザーはコマンドの実行を許可されていないというエラー メッセージが表示されます/usr/bin/aptitude install <package_name>
。
答え2
sudo -l
ユーザーが実行できるコマンドを確認するには、を使用します。たとえば、ricardo が実行できるコマンドを確認するには、次のようにします。
sudo -ll -U ricardo
彼が適性を発揮できるかどうかを見るために、
sudo -ll -U ricardo /usr/bin/aptitude
これは、sudo によって展開されたコマンド名を出力するか、ユーザーがコマンドの使用を許可されていない場合はコード 1 で終了します。
これは、最近の Debian ベースのシステムであればテスト用に動作するはずです。構文は Ubuntu 固有のものではありません。
ソース:男須藤
答え3
実際には何も見えない間違っているsudoersの行で。残念ながら、私sudo
は の設定をあまりいじったことがないので、その場合、私のアドバイスは信頼できないかもしれません。幸い、私ができる私が安全だとわかっている行をお伝えします:
ricardo ALL=/usr/bin/aptitude
この行は、ricardo がやaptitude
などの sudo 対応グループのメンバーでない限り、ricardo が root としてのみ実行できることを保証します。sudo
admin