sudoコマンドが使えないとき

そもそもsudoコマンドとは

一般ユーザーがrootユーザのようになんでもできてしまうと色々と問題になります。

したがって、一般ユーザーは、ある一定の権限しか通常与えられていません。しかし、特定のコマンドのみの実行を任意のユーザに許可したい場合、sudoコマンドを用います。

sudoコマンドの利用設定は、/etc/sudoersファイルに書かれています。

編集するには、rootユーザでvisudoコマンドを実行します。すると、デフォルトエディタで/etc/sudoersファイルが開かれます。

sudoコマンドを打ち込んだ際、以下の結果が返ってきた場合の対処法をまとめました。OSは、Ubuntuです。

1.

sudo: /etc/sudoers.d is owned by uid 501, should be 0

2.

username is not the sudoers file. This incident will be reported.

1の場合

解決するには、rootユーザに切り替える必要があります。

$ su

このあと、パスワードを要求されますが、これは、rootユーザのパスワードです。

chownコマンドでファイルやディレクトリの所有者、所属グループを変更しましょう。

# chown -R root:admin /etc/sudoers.d

rootユーザから戻ります。

# su username

もう一度、sudoコマンドを実行すると、今度は使えるようになっているはずです。

2の場合

原因として、今のユーザがsudoできるグループにいないことが挙げられます。

Debian(Ubuntuなど)では、sudoグループ、RedHat(CentOSなど)では、wheelグループにあたります。

以下のコマンドを実行することで、グループがあるか、また、今のユーザが入っているのか確認します。

RedHatでは、sudoをwheelに変えてください。

$ cat /etc/group | grep sudo
sudo:x:10:

sudo:x:10:の後ろにユーザ名が列挙されますが、何もないのでsudoグループには、誰も所属していないことがわかります。

解決するには、rootユーザに切り替える必要があります。

$ su

このあと、パスワードを要求されますが、これは、rootユーザのパスワードです。

sudoを実行できるユーザーに切り替えます。

#usermod -aG sudo username(sudoコマンドを実行したいユーザ名)

グループに入ったか確認します。

# cat /etc/group | grep sudo
sudo:x:10:username

rootユーザから戻ります。

# su username

もう一度、sudoコマンドを実行すると、今度は使えるようになっているはずです。

参考資料

https://unix.stackexchange.com/questions/179954/username-is-not-in-the-sudoers-file-this-incident-will-be-reported