一般ユーザーを sudo できるようにする
目次 |
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 のデフォルト設定は次のようになっている。
Defaults requiretty
Defaults !visiblepw
Defaults always_set_home
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
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 の内容が異なるので注意。 |