visudoコマンド(sudoコマンドの為の設定ファイルの編集)
- visudo [ -c ] [ -f sudoers ] [ -q ] [ -s ] [ -V ]
- sudoers ファイル(sudoコマンドのための設定ファイル)を編集する。
-
スーパー権限でvisudoとコマンドを打つことで、sudoresファイルを標準のテキストエディタで編集できる。一般的にはviが起動するが、Debianではnanoエディタが起動した。DebianでのやりかたはDebian GNU/Linux Lennyでsudoを使えるようにするを参照。
普通に編集し終わると、visudoが勝手に文法チェックを行ってくれ、エラーが出た場合はエラーが出た行番号を表示し、どうするか聞いてくる。
eを押せば再編集が出来、xを押せば編集せずに終了。qを押せば編集を保存して終了するため、qを押すのは本当にエラーが無くなったときにしよう。
-
実際の編集は以下のように行う。
# /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # Defaults env_reset # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL) ALL # Uncomment to allow members of group sudo to not need a password # (Note that later entries override this, so you might need to move # it further down) # %sudo ALL=NOPASSWD: ALL
「root ALL=(ALL) ALL」と言う風になっている文章の下に、権限を与えたいユーザーを加える。書式は以下の通り。
ユーザ ホスト=(権限) コマンド
ユーザには、sudo権限を与えたいユーザー名を記述する。今回の例ではsaoriにする。
ホストは使用したいホストを書く。一般的にはALLと書く様です。
権限には「誰の権限でコマンドを実行したいか」を書くようです(例:(root))が、ここも一般的にはALLにすることが多い様です。
コマンドにはsudoで扱えるコマンドを絶対パスで指定します。複数指定する場合は,(カンマ)で区切ります。
一般的には、以下のような設定にすることが多い様です。
# /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # Defaults env_reset # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL) ALL saori ALL=(ALL) ALL # Uncomment to allow members of group sudo to not need a password # (Note that later entries override this, so you might need to move # it further down) # %sudo ALL=NOPASSWD: ALL
上記は、単純にsaoriユーザーにsudoコマンドを使えば、全てのコマンドをスーパーユーザ権限で使えるように設定しています。
以下に私が実際に使っているファイルを示します。
私の場合、localhostの名前がdebianになっているので
$ hostname debian
このようになります。
# /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # Defaults env_reset # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL) ALL saori debian=(ALL) /usr/bin/aptitude, /etc/init.d/apache2 # Uncomment to allow members of group sudo to not need a password # (Note that later entries override this, so you might need to move # it further down) # %sudo ALL=NOPASSWD: ALL
これにより、saoriユーザーからsudoコマンドを使うことでaptitudeコマンドとapache2の操作のコマンドを使うことが出来ます。
指定したいコマンドのパスは、一度rootユーザーになってwhichコマンドを使用することで調べることが出来ます。
$ su - パスワード: # which aptitude /usr/bin/aptitude
- 参考にしたサイト
- UNIXの部屋 コマンド検索: sudo