sudo コマンドを使用すると、管理者は /etc/sudoers という構成ファイルをセットアップし、特定のユーザーが想定 ID の下で実行できる特定のコマンドを定義できます。
sudo コマンドは多くの点で su に似ていますが、いくつかの重要な追加機能があります。管理者は、sudo を構成して、通常のユーザーが制御された方法で別のユーザー (通常はスーパーユーザー) としてコマンドを実行できるようにすることができます。特に、ユーザーは 1 つまたは複数の特定のコマンドに制限され、他のコマンドは制限されない場合があります。もう 1 つの重要な違いは、sudo を使用する場合、スーパーユーザーのパスワードにアクセスする必要がないことです。 sudo を使用した認証には、ユーザー自身のパスワードが必要です。たとえば、スーパーユーザー権限が必要な backup_script という架空のバックアップ プログラムを実行できるように sudo が構成されているとします。 sudo を使用すると、次のようになります:
$ sudo backup_script Password: System Backup Starting...
コマンドを入力すると、(スーパーユーザーのパスワードではなく) パスワードの入力を求められ、認証が完了すると、指定されたコマンドが実行されます。
sudo V/s su
su と sudo の重要な違いの 1 つは、sudo は新しいシェルを起動せず、別のユーザーの環境をロードしないことです。これは、sudo を使用しない場合とは異なる方法でコマンドを引用する必要がないことを意味します。この動作は、さまざまなオプションを指定することでオーバーライドできることに注意してください。また、-i オプションを指定することで、sudo を使用して (su - によく似た) 対話型のスーパーユーザー セッションを開始できることにも注意してください。詳細については、sudo の man ページを参照してください。
sudo によって付与される権限を確認するには、-l オプションを使用して一覧表示します。
$ sudo -l User me may run the following commands on this host: (ALL) ALL
sudo コマンドの例
1. ユーザーの現在の sudo ステータスを一覧表示するには:
# sudo -l # sudo -U santosh -l (for specific user)
2. 出力をロングリストするには:
# sudo –U santosh -ll
3. ユーザーのキャッシュされた認証情報を削除するには:
# sudo -k
4. 読み取り不能なディレクトリのファイル リストを取得するには:
# sudo ls /usr/local/protected
5. root および adm グループのユーザーのみがアクセスできるシステム ログを表示するには:
# sudo -g adm view /var/log/syslog
6. マシンをシャットダウンするには:
# sudo shutdown -r +15 "quick reboot"
7. コマンドをバックグラウンドで実行するには:
# sudo -b mount /dev/cdrom /DVD
8. 別のユーザーとしてコマンドを実行するには:
# sudo –u oracle /xyz/abc.sh
9. プライマリ グループを特定のグループに設定して、特定のコマンドを実行するには:
# sudo –g DBA /xyz/abc.sh
10. ユーザー認証情報を検証するには:
# sudo –v ### updates his cached credentials, like if password has been changed.
最終的な考え
許可されている場合、sudo はスーパーユーザーとしてコマンドを実行します。 sudo の許可されたユーザーとそのユーザーが実行を許可されているコマンドは、sudo 構成ファイル /etc/sudoers にリストされています。 .許可されていないユーザーがコマンドを実行しようとすると、sudo は管理者に電子メールで通知します。デフォルトでは、メッセージは root アカウントに送信されます。コマンドを実行しようとするユーザーは、パスワードの入力を求められます。認証されると、sudo はユーザーのタイムスタンプを設定します。タイムスタンプから 5 分間、ユーザーはパスワードの入力を求められることなく、さらにコマンドを実行できます。この猶予期間は、/etc/sudoers ファイルの設定によって上書きされる場合があります。構成例については、/etc/sudoers も参照してください。