パスワードなしでrootになるには,visudoコマンドで設定することです.
なのですが,Ubuntuで設定して,うまくいくときといかないときがあって,苦労していました.
つい先日,常にうまく行く方法を知ったので,ここに書いておきます.
前提として,Ubuntuを標準的な方法でインストールしていること,作ったユーザは一つ(自分のユーザ)だけであることとします.
まず,Ubuntuのメニューで,アプリケーション>アクセサリ>端末 を選び,シェルを起動します.
そこで,sudo -iというコマンドを実行し,自分のパスワードを入力します.プロンプトが「(略)$」から「(略)#」に変わります.
visudoを実行します.テキストエディタが開き,ファイルを編集できます.初期の内容はこんなの:
# /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 # Allow members of group sudo to execute any command # (Note that later entries override this, so you might need to move # it further down) %sudo ALL=(ALL) ALL # #includedir /etc/sudoers.d # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL
それで,このファイルの最後に,
自分のユーザ名 ALL=(ALL) NOPASSWD: ALL
を書きます.Debian(もっと前からか?)では,root指定の直後に書いて,うまくいっていましたが,Ubuntuでは,デフォルト設定のあとに書くのが肝心です.複数の文書で,「後ろ優先」のルールを確認できます.
端末を開き、sudo visudoと入力します。 以下の行を開いた設定ファイル最後の部分に追加します(最後に書かない場合、後続の設定で書き換えられるかもしれません)。
UbuntuTips/Others/RootSudo - Ubuntu Japanese Wiki
一人のユーザに複数のエントリがマッチするときは、順番に適用される。複数の指定がマッチしている箇所については、最後にマッチしたものが使用される (それが一番明示的なマッチだとはかぎらないが)。
Man page of SUDOERS
それでファイルに保存して,visudoについてはおしまいなのですが,念のため「grep 自分のユーザ名 /etc/group」というコマンドを実行してみると,adminの後ろに自分のユーザ名が入っています.だから,Ubuntuでroot指定の直後に「自分のユーザ名 ALL=(ALL) NOPASSWD: ALL」と書くのでは,それより後ろの「%admin ALL=(ALL) ALL」が優先され,パスワードが必要になってしまうんだな,ということです*1.