Linux CentOSを使用していますが、突然sudoコマンドを実行することはできません。次のエラーが発生します。 rootユーザーでも同じエラーが発生します。
$ sudo ls
sudo: unable to stat /etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
ファイルの権限は次のとおりです。
ls -l /etc/sudoers
-rwxr-xr-x 1 root root 4241 Jun 9 20:36 /etc/sudoers
# which sudo
/usr/bin/sudo
# ls -l /usr/bin/sudo
--ws-wx-wx. 1 root root 130712 Jun 10 2014 /usr/bin/sudo
システムにどのような問題がありますか?どうすれば解決できますか?
編集1
以下のコマンドの出力を参照してください。
# ls -Z /etc/sudoers
-r--r----- root root ? /etc/sudoers
このファイルに対してchmod 440を実行しましたが、権限が破損しているようです。
編集2
/etc/sudoers権限を設定するために次のコマンドを実行しましたが、まだ正しくありません。
root@Cool-Too ~]# chmod 440 /etc/sudoers
[root@Cool-Too ~]# ll /etc/sudoers
-r--r----- 1 root root 4241 Aug 14 22:16 /etc/sudoers
[root@Cool-Too ~]# ll -Z /etc/sudoers
-r--r----- root root ? /etc/sudoers
ベストアンサー1
実際、あなたの権限は非常に低いです。
次のようにする必要があります。
-r--r----- 1 root root 4188 Mar 31 11:30 /etc/sudoers
---s--x--x 1 root root 130720 Mar 31 13:09 /usr/bin/sudo
この問題を解決するには、root
chmod 4111 /usr/bin/sudo
chmod 440 /etc/sudoers
+
出力にフラグが表示されている場合は、ls -l
ACLも削除する必要があることを意味します。
setfacl -b /usr/bin/sudo /etc/sudoers
(この問題はないようです。完全性のために含めました。)
あなたの権限が破損しているため、SELinuxタグも破損する可能性があります。次のコマンドを使用して、SELinuxラベルが正しいことを確認する必要がありますls -Z
。
-r--r-----. root root system_u:object_r:etc_t:s0 /etc/sudoers
---s--x--x. root root system_u:object_r:sudo_exec_t:s0 /usr/bin/sudo
これらの問題は修正できるはずです。restorecon
restorecon -v /usr/bin/sudo /etc/sudoers
最後に、インストールに完全に問題がある可能性があります(例:PAMの設定/etc/sudo.conf
)。どのファイルが変更されたかを確認できます。
rpm --verify sudo
これにより、誤ったファイルが表示された場合は、そのファイルを削除してsudoを再インストールする必要があります。
例えば
rm /etc/sudo.conf /etc/pam.d/sudo*
yum reinstall sudo
(これはジョブyum
設定が必要なため、リポジトリが機能しない場合はこれを行わないでください。)