Linuxでsudoコマンドを実行できません

Linuxでsudoコマンドを実行できません

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 -lACLも削除する必要があることを意味します。

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設定が必要なため、リポジトリが機能しない場合はこれを行わないでください。)

おすすめ記事