sudoers ファイルで sudo アクセスを制限する
このステップでは、sudoers ファイルを使用して、ユーザーの sudo 権限を特定のコマンドに制限する方法を学びます。これは最小特権の原則を実装するもので、ユーザーはタスクを実行するために必要な最小限の特権のみを持つべきであるという原則です。
sudoers ファイルの理解
/etc/sudoers
ファイルは、誰が sudo コマンドを使用できるか、およびどのコマンドを実行できるかを制御します。このファイルは、通常のテキストエディタで直接編集しないでください。構文エラーがあるとシステムからロックアウトされる可能性があります。代わりに、常に visudo
コマンドを使用してください。このコマンドは保存前に構文エラーをチェックします。
sudoers ファイルの編集
sudoers ファイルを安全に編集するには、visudo
コマンドを使用します。
sudo visudo
これにより、sudoers ファイルがデフォルトのエディタ(通常は nano または vi)で開きます。
sudoers 構文の理解
sudoers ファイルの sudo エントリの基本構文は次の通りです。
user_or_group host=(run_as_user:run_as_group) NOPASSWD: commands
ここで:
user_or_group
:このルールが適用されるユーザーまたはグループ
host
:このルールが適用されるホスト名(通常は ALL)
run_as_user
:コマンドが実行されるユーザー(通常は ALL、つまり root)
run_as_group
:コマンドが実行されるグループ(省略可能)
NOPASSWD
:パスワードを入力せずにコマンドを実行できるオプションのタグ
commands
:sudo で実行できる特定のコマンド
制限付き sudo アクセスの追加
ファイルの末尾までスクロールし、次の行を追加して、trusted_advisor
にパスワードなしで cp
と mv
コマンドのみを実行する権限を付与します。
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
nano でファイルを保存するには、Ctrl+O
を押してから Enter
を押し、終了するには Ctrl+X
を押します。
制限付き sudo アクセスのテスト
では、制限付き sudo アクセスが期待通りに機能するかテストしましょう。まず、現在のディレクトリにテストファイルを作成します。
echo "This is a test file" > important_file.txt
次に、trusted_advisor
ユーザーに切り替えます。
su - trusted_advisor
求められたらパスワードを入力します。
ファイルをルートディレクトリにコピーしてみましょう。これは許可されているはずです。
sudo cp /home/labex/project/important_file.txt /root/
これはパスワードを求めずに成功するはずです。
次に、許可されたリストにないコマンド、たとえば cat
を実行してみましょう。
sudo cat /root/important_file.txt
cat
は許可されたコマンドのリストにないため、許可が拒否されるエラーが表示されるはずです。
最後に、ファイルがルートディレクトリにコピーされたことを確認します。
sudo ls /root/
出力に important_file.txt
が表示されるはずです。
trusted_advisor
ユーザーのセッションを終了します。
exit
テストファイルの削除
後片付けとして、テストファイルを削除します。
sudo rm important_file.txt