2026年5月21日
2026年5月21日
sudoersで特定のコマンドのみ許可する方法
はじめに
Linuxサーバーを運用する上で、セキュリティ強化は重要な要素の一つです。特にsudoを使用して管理者権限での操作を行う場合、そのアクセス管理が適切に行われることが求められます。本記事では、特定のコマンドのみを実行できるようにsudoersファイルで設定する方法について解説します。
症状・背景
このテーマが必要になる主な場面は以下の通りです:
- サーバー管理者が複数存在し、それぞれに異なる権限を付与したいとき
- 特定のコマンドのみを一部のユーザーに対して許可して、他のコマンドは実行させたくない場合
- リソース管理のために、特定の操作を実行できるユーザーを制限したいとき
手順・設定方法
ステップ1: sudoersファイルの編集
まず、/etc/sudoersファイルを開き、特定のコマンドのみを実行できるように設定します。この操作はroot権限が必要です。
# nano /etc/sudoers
ステップ2: 特定のユーザーに特定のコマンドのみを許可する
次に、特定のユーザーに対して特定のコマンドのみを実行できるように設定します。以下は具体的な例です:
# ユーザーuser1に対してlsコマンドだけを許可する
user1 ALL=(ALL) NOPASSWD: /usr/bin/ls
# グループgroup1のすべてのユーザーに対して、serviceコマンドとrestartコマンドのみを許可する
%group1 ALL=(ALL) NOPASSWD: /usr/sbin/service, /sbin/restart
ステップ3: 複数のコマンドを同時に許可する
複数のコマンドに対して特定のユーザーに許可する場合も可能です。以下は、user2がserviceとrestartコマンドを使用できるように設定する例です:
# ユーザーuser2に対してserviceとrestartコマンドを許可する
user2 ALL=(ALL) NOPASSWD: /usr/sbin/service, /sbin/restart
ステップ4: 実践/トラブルシュート/監視
設定が正しく適用されていることを確認するために、コマンド実行を試みます。たとえば、user1がlsコマンドを実行できるかテストします:
# user1としてログインしてlsコマンドを実行
$ sudo ls
注意事項
- 重要なのは、許可するコマンドは最小限にすること。不要な権限付与はセキュリティリスクを高めます。
NOPASSWDオプションを使用するとパスワード入力が省けますが、その分安全性が低下しますので注意が必要です。- 設定の変更後は、sudoの動作確認を行い、必要なユーザーが指定したコマンドのみを実行できるか確認してください。
まとめ
1. 最小限の権限付与: 特定のユーザーに必要なコマンドだけを許可することでセキュリティ強化します。
2. NOPASSWDの使用注意: パスワード入力不要な設定は慎重に行いましょう。
3. 定期的なレビュー: 環境が変更された場合はsudoersファイルも適宜更新しましょう。
4. トラブルシュート: コマンド実行に問題が出た場合はsudoersファイルの確認が必要です。
5. セキュリティポリシーの策定: これらの設定は組織全体のセキュリティポリシーの一環として整備することをおすすめします。
関連記事: