sudo / su の使い方

root などの権限で実行

書き方

sudo コマンド
sudo -i
sudo -u ユーザー コマンド
sudo -l(自分に許されたコマンド)
sudo -l -U ユーザー(他人の権限)

/etc/sudoers と /etc/sudoers.d/ の決まりで許されたコマンドを実行します。許されていなければ「Sorry, user … is not allowed to execute …」、実行の記録は /var/log/secure に残ります。sudo -i で root のシェルへ、exit で戻ります。

よく使うオプション

オプション意味
-iroot としてログインしたのと同じシェルに入る
-u ユーザーroot ではなく、指定したユーザーとして実行する
-l自分に許されているコマンドを出す
-e ファイルroot のファイルを、自分のエディタで安全に直す(sudoedit と同じ)

例

$ sudo systemctl restart httpd

root の権限が要るコマンドを、そのときだけ root として実行します。

$ sudo -lUser ec2-user may run the following commands on web01:
    (ALL) NOPASSWD: ALL

このユーザーに sudo で何が許されているかを確かめます。

$ sudo -u postgres psql

postgres ユーザーとして psql を起動します。

$ sudo -i

root のシェルに入ります。終わったら exit で元のユーザーに戻ります。

$ su - alice

su はほかのユーザーに切り替えます。- を付けると、そのユーザーでログインしたのと同じ環境になります(alice のパスワードが要ります)。

よくある間違い・注意

  • sudo を許されていないユーザーで使うと「is not in the sudoers file」となり、その記録は /var/log/secure に残ります。
  • /etc/sudoers は直接書き換えず、visudo で直します。書き間違えると sudo が使えなくなるためです。
  • root のシェルに入ったままにせず、作業が終わったらすぐ exit します。

実際に打って練習する

Linux レベル1 コースの Lv44「王の許し sudo」で覚えます(第3章 権限の城(権限とユーザー))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜16 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。

Linux コマンド一覧(LinuC レベル1 の範囲)へ戻る