![/ etcで失われた権限メタデータを回復する方法は? [コピー]](https://linux33.com/image/139485/%2F%20etc%E3%81%A7%E5%A4%B1%E3%82%8F%E3%82%8C%E3%81%9F%E6%A8%A9%E9%99%90%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%9B%9E%E5%BE%A9%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
コマンドが誤って実行されました。
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 -diff
star
diffopts=
したがって、他の同様のシステムのバックアップがある場合は、以下を実行できます。
cd /
star -diff -v diffopts=perm pat=etc* < backup.tar
権限のみを比較してください。以下を使用してバックアップをstar -c -dump ...
作成した場合
cd /
star -diff -vv diffopts=perm,dir pat=etc* < backup.tar
ローカルシステムにありますが、バックアップから欠落しているファイルも一覧表示されます。