Linuxゲリラ戦記

visudoコマンドの使い方

左を向いているペンギンみたいなキャラクター、ナックス

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