ちょっとひどいミスを犯して自分で修正しようとしていますが、助けが必要です。
構文エラーのため、すべてのファイルとフォルダの権限が変更されました。幸いなことに、この問題が発生している間にこれを見て正常に防止しました。 「のみ」/bin
、/boot
および/dev
影響を受けます。以下は、発生したイベントの一部です(完全ログ:http://pastebin.com/4BkbXEqD):
Apr 11 21:34:08 *** sftp-server[20582]: set "/.newrelic" mode 40754
Apr 11 21:34:08 *** sftp-server[20582]: set "/bin" mode 40554
Apr 11 21:34:09 *** sftp-server[20582]: set "/boot" mode 40554
Apr 11 21:34:09 *** sftp-server[20582]: set "/cgroup" mode 40754
Apr 11 21:34:09 *** sftp-server[20582]: set "/dev" mode 40754
Apr 11 21:34:09 *** sftp-server[20582]: opendir "/.newrelic"
Apr 11 21:34:09 *** sftp-server[20582]: closedir "/.newrelic"
Apr 11 21:34:09 *** sftp-server[20582]: opendir "/.newrelic"
Apr 11 21:34:10 *** sftp-server[20582]: closedir "/.newrelic"
Apr 11 21:34:10 *** sftp-server[20582]: opendir "/"
Apr 11 21:34:10 *** sftp-server[20582]: closedir "/"
Apr 11 21:34:10 *** sftp-server[20582]: opendir "/bin"
Apr 11 21:34:10 *** sftp-server[20582]: closedir "/bin"
Apr 11 21:34:10 *** sftp-server[20582]: set "/bin/mknod" mode 100754
Apr 11 21:34:10 *** sftp-server[20582]: set "/bin/cat" mode 100754
Apr 11 21:34:10 *** sftp-server[20582]: set "/bin/ping6" mode 100754
たとえば、MySQLはこれ以上実行されておらず、ダメージがさらに大きいようです。
これらのフォルダとファイルの読み取りおよび実行権限を復元しようとしましたが、実際には以前の状態が何であるかわかりません。
システムを動作状態に復元するには?
答え1
ルートシェルを起動したら、ルートシェルから権限を復元できる必要があります。コンソールにrootとしてログインすると、rootシェルを取得できます。この時点で、構成によっては、su
通常のアカウントを使用してrootアクセス権を取得したり取得できなかったりsudo
、root以外のアカウントを使用してログインできないことがあります。
投稿した履歴が完全であれば幸運になり、ファイル(/etc
および回復するのが最も難しい権限を持つファイル/var
)は影響を受けません。
Apr 11 21:34:08 *** sftp-server[20582]: set "/.newrelic" mode 40754 Apr 11 21:34:08 *** sftp-server[20582]: set "/bin" mode 40554 Apr 11 21:34:09 *** sftp-server[20582]: set "/boot" mode 40554 Apr 11 21:34:09 *** sftp-server[20582]: set "/cgroup" mode 40754 Apr 11 21:34:09 *** sftp-server[20582]: set "/dev" mode 40754
40754(8進表記)は、所有者が書き込み可能で、所有者とグループが実行可能で、誰もが読み取ることができるディレクトリを表します。一番右の3桁だけが権限を表し、前の数字はファイル形式をエンコードし、変更できません。ディレクトリに対する「実行」権限は、実際にはそのディレクトリのファイルにアクセスする権限を意味するため、ほとんどのユーザーはそのディレクトリのファイルにアクセスできなくなります。ほとんどの最上位ディレクトリには権限755が必要です。これは、誰もが読んで実行でき、所有者だけが書き込むことができることを意味します(例外は/lost+found
通常700/tmp
で、1777でなければならず、所有者などの特殊なファイルシステムには書き込めませ/proc
ん/sys
)。それが何であるかわかりません/.newrelic
。標準のトップレベルディレクトリではありません。
chmod 755 /bin /boot /cgroup /dev
Apr 11 21:34:10 *** sftp-server[20582]: set "/bin/mknod" mode 100754 …
/bin
とにあるほとんどのファイルは、/sbin
誰でも読んで実行できる必要があり、所有者だけが書き込むことができます。それらのいくつかは必要ですユーザーIDの設定。
chmod a+x /bin/* /sbin/*
chmod 4755 /bin/su /bin/sudo /bin/mount /bin/umount /bin/ping /bin/ping6
chmod 4754 /bin/fusermount
私の考えでは、/boot
すべてのファイルとディレクトリは誰でも読むことができ、ディレクトリは実行可能でなければなりませんが、ファイルはそうではありません。
find /boot -type d -exec chmod 755 {} + -type f -exec chmod 644 {} +
これにより、/dev
ファイル間で権限が大きく異なります。幸いなこと/dev
に、インメモリファイルシステムなので、再起動後は問題ありません。再起動せずに権限を復元できる場合は、/dev
次のコマンドが有効になると思います。
udevadm trigger --sysname-match='*'
答え2
実際、システムはログに表示されるよりも深刻な影響を受けたようです!
たぶん開発フォルダのためであるかもしれませんし、シンボリックリンクのためかもしれません。しかし、フォーラムなどをクロールしてフォルダごとに試した後、ついに次のコマンドでサーバーを保存しました。
for package in $(rpm -qa); do rpm --setperms $package; done
@Gillesと彼の素晴らしい答えに特に感謝します
! @dhagが私の質問を編集し、丁寧な公式を削除しました。