⚠この記事はブログ移転前のアーカイブです
$ sudo chmod -R 777 /*

とか、どう見てもやったらいけないコマンドを平気で打つような大馬鹿者がいるみたいですよ。

sudo: /etc/sudoers の状態取得 (stat) ができません
sudo:有効な sudoers のソースが見つかりません。終了します
sudo: ポリシープラグインを初期化できません

なんてこった

drwxrwxrwx root root bin
drwxrwxrwx root root boot
drwxrwxrwx root root dev
drwxrwxrwx root root etc
drwxrwxrwx root root home
drwxr-xr-x root root lib
drwxr-xr-x root root lib64
drwx------ root root lost+found
drwxr-xr-x root root media
drwxr-xr-x root root mnt
dr-xr-xr-x root root proc
drwx------ root root root
drwxr-xr-x root root run
drwxr-xr-x root root sbin
drwxr-xr-x root root srv
dr-xr-xr-x root root sys
drwxrwxrwt root root tmp
drwxr-xr-x root root usr
drwxr-xr-x root root var
#(一部変更加えてます)

大惨事だった。ひどい。ひどすぎる

/etc が777になってしまうのがもう最悪。sudoが使えなくなってしまう。どうしたものか

Live CD を使おう

sudo が使えないのは /etc/sudoers や、/bin/suなどのパーミッションが変更されてしまったから。Live CDで別のLinuxシステムをブートし、その環境下でパーミッションを変更することで対処可能。rootでLiveブートできるLinuxイメージならなんでもいいけど、今回は環境に合わせてUbuntu 15.10

Ubuntu Server | http://www.ubuntu.com/download/server

sc

CDや、USB、DriveDroidなどに入れてサーバーでLive CDをブートする。言語の指定後、ブート画面になるが、

『Rescue broken system』を選択。

適当に進んでいけばレスキューモードになる

パーミッションの修復

まず、どのディレクトリがやられてしまっているのか確認しましょう。HDDをマウントして、マウントしたディレクトリに入ります

mount /dev/sda1 /mnt
cd /mnt
ls -l

drwxrwxrwx root root bin
drwxrwxrwx root root boot
drwxrwxrwx root root dev
drwxrwxrwx root root etc
drwxrwxrwx root root home
drwxr-xr-x root root lib
drwxr-xr-x root root lib64
drwx------ root root lost+found
drwxr-xr-x root root media
drwxr-xr-x root root mnt
dr-xr-xr-x root root proc
drwx------ root root root
drwxr-xr-x root root run
...略

どうやら 『bin』『boot』『dev』『etc』が最優先で直さなくてはいけなさそうな感じ。

所有者以外の書き込み禁止

大多数のシステムはこれでOK

chmod -R go-w /bin
chmod -R go-w /etc
chmod -R go-w /boot
chmod -R go-w /dev

sudo やsshなどのパーミッション修復

sudo やssh周りはやや特殊なパーミッションなので、個別に設定

chmod 440 /etc/sudoers
chmod 440 /etc/sudoers.d/README
chmod 755 /etc/sudoers.d
chmod 640 /etc/shadow /etc/gshadow
chmod 600 /etc/ssh/*_key
chmod 600 /etc/ssh*key
chmod 710 /etc/ssl/private
chmod 710 /etc/cups/ssl
chmod 1777 /tmp /var/tmp /var/lock
chmod 4755 /bin/su /usr/bin/passwd /usr/bin/sudo /usr/bin/sudoedit
chmod 2755 /var/mail /var/spool/mail

そんなファイル/ディレクトリねーよ と言われたらスルー

で、

reboot

Live CDは取り出す。

あとは自分で設定したパーミッションを修復して終わり。

マジで焦ったけどすぐになんとかなった。でも正直再インストールのほうがいいと思います。はい