sudoのちょっとしたトラブル

root以外のユーザを指定してsudoを実行しようとすると、実行を許可されていません、みたいなエラーが出た。

$ sudo -u foo ls /
Sorry, user hoge is not allowed to execute '/bin/ls /' as foo on host_name.

色々調べていると、sudoersファイル内でユーザ権限の設定をしていない事が分かった。

hoge ALL = (ALL) [NOPASSWD:] ALL
#一つ目のALLは接続元、二つ目の括弧付きALLはユーザ、三つ目はコマンドをそれぞれ表している。

二つ目の括弧付きを省略していると、ユーザはrootのみになる。sudo -lで自分の設定を確認できる。

$ sudo -l
User hoge may run the following commands on this host:
    (root) NOPASSWD: ALL

sudoersファイルの修正後。

$ sudo -l
User hoge may run the following commands on this host:
    (ALL) NOPASSWD: ALL


よく分からないまま使っているとトラブル発生時に困る例。