/ etcで失われた権限メタデータを回復する方法は? [コピー]

/ etcで失われた権限メタデータを回復する方法は? [コピー]

コマンドが誤って実行されました。

sudo chmod -R 777 /etc/

権限の正しい状態を返す方法はありますか?

答え1

この答えはバックアップがないと仮定します。

情報(権限メタデータ)がシステムから失われるため、外部ソースなしでは回復できません。

他のLinuxかもしれません。可能であれば、あなたと同じディストリビューションを使用することをお勧めします。

まず、すべてのディレクトリに対する権限を755に、すべてのファイルに対して644にリセットします。/etc次のスクリプトを使用してこれを実行できます。

find -type d -print0|xargs -n 500 -P 1 -0 chmod 755
find -type f -print0|xargs -n 500 -P 1 -0 chmod 644

次に、権限データをテキストファイルにダンプします。他のシステムではコマンドの使用

find -print 0|xargs -0 -P 1 -n 500 ls -ld|sort -k +9 > permdata_ok.txt

permdata.txtリモートシステムから1つを取得できます。ソートが必要です。理由は後で説明します。このファイルをリモートシステムからローカルシステムに移動します。

ローカルシステムでも同じスクリプトを実行permdata_ok.txtしますpermdata_bad.txt

これでトリックが出ます。これらのファイルを並べて比較してみてください。

コマンドは次のとおりですdiff -urNw permdata_bad.txt permdata_ok.txt。開発者ではない場合、出力構文はビューにはよくありませんが、慣れている可能性があります。

ファイルモードとファイルの違いを確認できます。違いが大きすぎる場合は手動でリセットしてください。

両方のシステムにすべてのファイルが存在するわけではないので、合理的な考え方が必要です。

システムがセキュリティに敏感な場合は、700最初のステップで/ everythingに設定するのが最善です。600これにより、今後さらに権限関連の問題が発生しますが、セキュリティ抜け穴は発生しません。

答え2

バックアップがある場合は、古いものでも以下を使用してくださいstar

cd /
star -xpU -meta pat=etc* < backup.tar

これにより、コンテンツは復元されず、権限の所有者などのファイルのメタデータのみが復元されます。)

同じオペレーティングシステムバージョンの2番目のインストールがある場合は、次のコマンドを使用してシステムでメタデータバックアップを実行します。

cd /
star -c -meta etc > /tmp/backup.tar

次に、次のコマンドを使用して、破損したシステムからメタデータを抽出します。

cd /
star -xpU -meta < backup.tar

それでもできない場合は、再インストールする必要があります...

マニュアルページをご覧くださいhttp://schilytools.sourceforge.net/man/man1/star.1.htmlより多くの情報を知りたいです。

@dsstorefile1が述べたように、他のシステムからメタデータをコピーすることは、破損したシステムから欠落しているファイルへの参照がない場合にのみ完全な解決策ですが、メタデータが復元された後に/ etc /でチェックインできます。ファイルは破損していますが、古いファイルです。回復されたよりもまだ777があります。

注:ファイルの内容とすべてのメタデータを比較できます。さらに重要なのは、オプションを使用して比較ターゲットを設定できるため、star権限の比較にも使用できます。star -diffstardiffopts=

したがって、他の同様のシステムのバックアップがある場合は、以下を実行できます。

cd /
star -diff -v diffopts=perm pat=etc* < backup.tar

権限のみを比較してください。以下を使用してバックアップをstar -c -dump ...作成した場合

cd /
star -diff -vv diffopts=perm,dir pat=etc* < backup.tar

ローカルシステムにありますが、バックアップから欠落しているファイルも一覧表示されます。

関連情報