Debian GNU/Linux Lennyでsudoを使えるようにする
Linuxで作業を行う際には度々rootユーザーになる必要に迫られる。
ただ、頻繁にrootユーザーになるのは出来るだけ避けるべきだ。
- 自分がrootユーザーであることを忘れて作業をしてしまう場合がある。
- 頻繁にrootユーザーになる為のパスワードを入力していると、誰かにパスワードを盗み読まれる可能性がある。
解決手段としては一般ユーザーからsudoコマンドを使って作業を行うようにする方法がある。
一般的にはrootで作業を行う場合は
$ su - パスワード: # vi abc.txt
とするが、sudoコマンドを使うようにすれば、
$ sudo vi abc.txt [sudo] password for user:
というように、root権限で行いたい作業のコマンドの後ろにsudoをつけ、一般ユーザーのパスワードを使うことでrootユーザーと同じ作業を行うことが出来る。
一般ユーザーにsudoコマンドを使う権限を与えるにはrootユーザーからvisudoコマンドを使って、sudoコマンドの設定ファイルである/etc/sudoersを編集する。
# visudo
Debian Lennyの場合、標準でnanoエディタが起動する。
# /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コマンドを使えば、全てのコマンドをスーパーユーザ権限で使えるように設定しています。
私はnanoエディタは使ったことが無いのですが、下に出ているコマンドのヒントで何とか作業出来ました。
一般的なエディタと同じような操作で編集した後、Ctrlキーを押しながらxキーを押します。
すると、変更を保存するかどうか聞いてくるのでyキーを押します。
File Name to Write: /etc/sudoers.tmpというような表記が出るので、Enterキーを押せば書き込みが完了し、visudoが終了します。
この際、もし構文にエラーがあればその旨が表示されるので、eキーを押せば編集し直すことが出来、xキーを押せば、保存せずに終了することが出来る様です。
以下に私が実際に使っているファイルを示します。
私の場合、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