そもそも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コマンドを実行すると、今度は使えるようになっているはずです。