メール サーバーをデバッグしようとしているときに、次のように入力しました。
chmod -R 777 /
の代わりに:
chmod -R 777 .
さらに悪いことに、何かを修正するためにサインインに使用するスクリプトを変更したことを忘れていたため、これらすべてを root として実行しました。システムのほとんどのバックアップは取っていません (悪い選択だったことはわかっています)。
「chmod -R -777 / からの回復」や「'chmod -R 777 /' の後に何をすべきか」という質問とは異なり、私はまだ root としてサインインしており、システム全体が変更されたわけではないので、システムをある程度制御できます。また、損害を最小限に抑えるために、1 秒以内に ^C d でコマンドを終了しました。それ以来、サーバーをインターネットから物理的に切断しています。
パッケージ マネージャーのデータに基づいてファイル システムの権限を復元するスクリプトがあれば、この問題を修正できると思いますが、その方法がわかりません。これが不可能な場合は、サーバーからデータを保存して OS を再インストールするにはどうすればよいでしょうか。
ファイルが失われる潜在的なリスクがあることは承知していますが、それにもかかわらず再インストールよりも回復を優先します。
これは現在の出力ですls -la /
:
drwxrwxrwx 22 root root 4096 Sep 7 2016 .
drwxrwxrwx 22 root root 4096 Sep 7 2016 ..
drwxr-xr-x 2 root root 4096 May 18 07:55 bin
drwxr-xr-x 3 root root 4096 Sep 21 07:53 boot
drwxr-xr-x 19 root root 3180 Sep 11 20:54 dev
drwxrwxrwx 92 root root 4096 Aug 23 07:50 etc
drwxr-xr-x 4 root root 4096 May 23 2016 home
lrwxrwxrwx 1 root root 31 Feb 24 2016 initrd.img -> /boot/initrd.img-3.16.0-4-amd64
drwxrwxrwx 18 root root 4096 Feb 24 2016 lib
drwxr-xr-x 2 root root 4096 Jun 20 07:00 lib64
drwx------ 2 root root 16384 May 19 2016 lost+found
drwxrwxrwx 2 root root 4096 May 5 2015 media
drwxr-xr-x 2 root root 4096 May 5 2015 mnt
drwxr-xr-x 3 root root 4096 May 28 2016 opt
dr-xr-xr-x 148 root root 0 Sep 3 21:55 proc
drwxrwxrwx 10 root root 4096 Aug 19 17:58 root
drwxr-xr-x 22 root root 800 Sep 21 17:09 run
drwxrwxrwx 3 root root 4096 Jun 20 07:00 sbin
drwxr-xr-x 4 root root 4096 Sep 20 23:18 sftp
dr-xr-xr-x 13 root root 0 Sep 3 21:55 sys
drwxrwxrwx 8 root root 4096 Sep 21 17:17 tmp
drwxrwxrwx 11 root root 4096 Feb 24 2016 usr
drwxr-xr-x 14 root root 4096 Jun 25 06:21 var
lrwxrwxrwx 1 root root 27 Feb 24 2016 vmlinuz -> boot/vmlinuz-3.16.0-4-amd64
パニックになってDebianではなくUbuntuフォーラムをクリックしたことに気付きました... メールサーバーを修復する方法ではないことはわかっています。 何が壊れたのかを確認するための、雑な修正でした
これを正しいフォーラムに再投稿しました
答え1
権限エラーの修正
ルートディレクトリの権限をデフォルトに復元するにはどうすればいいですか?
ルール 1: コマンドラインに慣れていない場合は、root としてコマンドを実行しないでください。
chmod -R 777 /
ルートとして実行システムが壊れてしまいます。
rm -rf /
ルートとして実行大惨事になります!。
root として実行した場合はchmod -R 777 /
、次の手順に従って復元してください。
ステップ1:
次のスクリプトをコピーし、コンソールに貼り付けて、fixpermissionスクリプトを生成します。
echo '
chmod -R 755 /bin /boot /dev /etc/ /home /lib /lib64 \
/media /mnt /opt /run /sbin /srv /usr /var
chmod -R 777 /initrd.img /vmlinuz
chmod -R 1777 /tmp
chmod -R 555 /sys
chmod -R 555 /proc
chmod -R 700 /root
' > fixpermission
chmod +x fixpermission
./fixpermission
上記は、fixpermission という名前のスクリプトを作成し、./fixpermission
まだ呼び出されていない場合はそれを実行します。
ステップ2:
実行するstat -c '%A %a %n' /*
と、適切なディレクトリと復元された権限が表示されます。
例: ディレクトリの権限構造は次のようになります。
root@plab:~# stat -c '%A %a %n' /*
drwxr-xr-x 755 /bin
drwxr-xr-x 755 /boot
drwxr-xr-x 755 /dev
drwxr-xr-x 755 /etc
drwxr-xr-x 755 /home
lrwxrwxrwx 777 /initrd.img
lrwxrwxrwx 777 /initrd.img.old
drwxr-xr-x 755 /lib
drwxr-xr-x 755 /lib64
drwx------ 700 /lost+found
drwxr-xr-x 755 /media
drwxr-xr-x 755 /mnt
drwxr-xr-x 755 /opt
dr-xr-xr-x 555 /proc
drwx------ 700 /root
drwxr-xr-x 755 /run
drwxr-xr-x 755 /sbin
drwxr-xr-x 755 /srv
dr-xr-xr-x 555 /sys
drwxrwxrwt 1777 /tmp
drwxr-xr-x 755 /usr
drwxr-xr-x 755 /var
lrwxrwxrwx 777 /vmlinuz
lrwxrwxrwx 777 /vmlinuz.old
ステップ3:
システムを再起動してください。
お役に立てれば。