一般ユーザーを sudo できるようにする

提供:maruko2 Note.
移動: 案内, 検索

目次

sudoers ファイルの編集方法

sudo の動作設定は /etc/sudoers に記述されおり、このファイルを編集することで sudo の動作を変更することができる。

/etc/sudoers ファイルは root ユーザでも読み出し権限しかなく、さらに記述内容を間違えると sudo コマンドが正常に動作しなくなることもあるため、/etc/sudoers 編集専用の visudo コマンドを使い編集する。

visudo コマンドは保存時に自動的に構文チェックし、誤った記述をしていると警告が出る。

/etc/sudoers ファイルのパーミッションを変え、エディタで編集するような事はしない。

visudo コマンドは root 権限で実行する。CentOS の場合、vi エディタが起動する。

visudo

保存してエディタを終了すれば、すぐに反映される。

保存時に構文確認される

エディタ終了時に、記述内容の構文確認がされ、記述に間違いがあると次のようにエラー表示される。

>>> /etc/sudoers: syntax error near line 96 <<<
What now? Enter
Options are:
  (e)dit sudoers file again
  e(x)it without saving changes to sudoers file
  (Q)uit and save changes to sudoers file (DANGER!)

e + Enter で再編集するか、x + Enter で保存せずに終了するかどちらか選ぶ。

設定例

root ユーザについては次のように設定されている。

root   ALL=(ALL)   ALL
sudoers 構文の意味
root ALL= (ALL) ALL
root ユーザは、 すべてのホストから すべてのユーザに変身でき、 すべてのコマンドを実行できる。

%wheel のように % を付けるとグループ名を指定する事になる。

%wheel   ALL=(ALL)   ALL

sudo コマンド実行時にパスワードを求めないようにするには次のように記述する。

%wheel   ALL=(ALL)   NOPASSWD: ALL

変身できるユーザを指定したり、特定のコマンドのみ許可することもできる。

foo   ALL=(root)   /etc/init.d/httpd,/sbin/shutdown
apache   ALL=(bar)    NOPASSWD: /home/bar/bin/*

Defaults 行で、sudo の動作を変更する事ができる。設定できるパラメーターは複数あり、man sudoers に説明されている。

例えば、sudo コマンドを実行する時に毎回パスワードを求めるようにするには次のようにする。

Defaults timestamp_timeout = 0

timestamp_timeout のデフォルト値は 5 で、パスワードを入力すると 5 分間は入力を求められない。0 にすることで毎回パスワードを求められるようになる。

CentOS 6 のデフォルト設定

CentOS 6 のデフォルト設定は次のようになっている。

  1. Defaults    requiretty
  2. Defaults   !visiblepw
  3. Defaults    always_set_home
  4. Defaults    env_reset
  5. Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
  6. Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
  7. Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
  8. Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
  9. Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
  10. Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
  11. root	ALL=(ALL) 	ALL
Defaults requiretty
sudo コマンドを tty にログインしているユーザからしか実行できなくなる。
cron や cgi-bin スクリプトから sudo コマンドを実行するには、コメントアウトする必要がある。

例えば、requiretty を有効にした状態では apache から sudo を実行することができず、/var/log/secure に sorry, you must have a tty to run sudo のようなログが記録される。

Defaults !visiblepw
visiblepw オプションは、sudo コマンドを実行するターミナルでエコーの制御ができなかった場合、sudo の実行を拒否する。
!visiblepw としているので、visiblepw を off に設定しているのと同じ(デフォルト動作)。
デフォルト off
Defaults always_set_home
環境変数 HOME を sudo コマンドで変身したユーザのホームディレクトリに変更する。
sudo -u でユーザを指定しない限り root になる。
デフォルト off
Defaults env_reset
環境変数 LOGNAME, MAIL, SHELL, USER, USERNAME, SUDO_* をリセットする。
デフォルト on

環境変数については、sudo のバージョンによって man sudo の内容が異なるので注意。

参考ページ

LINEで送る このエントリーをはてなブックマークに追加
個人用ツール
名前空間
変種
表示
操作
案内
ツールボックス

注目のページ

このサイトのはてなブックマーク数