誤って root 権限で chown を実行した

誤って root 権限で chown を実行した

誤って次のコマンドをルートとして実行しました。 chown mike -Rf / backups ポイントは、/ とバックアップの間にスペースを追加したことです。これは私のミスです。1〜2 秒後にコマンドを停止しました。どうすれば回復できますか? 現在、DirectAdmin に問題があります。たとえば、アクセスすると、次のエラーが表示されます。

Unable to determine Usertype
user.conf needs to be repaired
http://help.directadmin.com/item.php?id=456

あるいは、メールの受信が停止し、他に何が問題なのかもわかりません...

答え1

システムは所有権の改訂を追跡しないため、バックアップに戻さずにこれを元に戻す方法はありません。

今後の変更をロールバックできるように、今すぐバックアップを作成しておくのが最善です。

システムにパッケージを再インストールすると、所有権の問題のほとんどは解決されるでしょう。Debian/Ubuntu では次のようにします。

apt-get install --reinstall package

rpmベースシステム上でrpm -Uvh --force package.rpm 問題が発生している場合は、パッケージを適切にセットアップすると、変更した構成ファイルが上書きされることはありません。

同様の別のシステム、またはバックアップがある場合は、そこから元の所有権情報を取得してシステムに適用できます。まず、使用したいファイルとディレクトリのリストを作成します。

find / -user mike

そのリストを使用して、バックアップまたは同様のシステム内のマイクが所有していないファイルを検索します。

答え2

それは実行している OS によって異なります。

Solaris 10 以前の場合は、次のコマンドを使用して、パッケージに属するファイルとディレクトリに影響するすべての所有者の問題を修正できます。

pkgchk -f

Solaris 11 の場合、次のようになります。

pkg fix

AIX にも同様のパッケージ修正コマンドがあると思います。

rpmベースのOS(Red Hat、Fedoraなど)を実行している場合は、

rpm -aV

パッケージ データベースと矛盾するファイルとディレクトリを検出します。次に、次のコマンドを実行してそれらを修正します。

rpm --setugids <package-name>

ただし、影響を受ける各パッケージ名を渡す必要があります。 あるいは、単に次のコマンドを実行することもできます。

for package in $(rpm -qa); do rpm --setugids $package; done

Debian ベースの OS を実行している場合、ファイルの所有権はパッケージ データベースに保存されないため、所有権を復元するための参照としてバックアップ (ある場合) を使用するか、同様のシステムを見つける必要があります。

答え3

私は文末の誤字でまったく同じ間違いを犯しました

chown -R root:root /folder/subfolder /

スラッシュの前のスペースに気づきませんでした :(

ここで質問することで、別のインストール済み Debian サーバーから所有者とグループを取得して、ようやく問題を解決できたと思います。そのサーバーでは、次の操作を実行しました。

find / -not -path '/proc/*' -not -path '/var/www/*' -not -path '/home/*' ! \(  -name root -o  -group root \) | xargs stat --format 'chown %U:%G %n' | sort -k 2,3 > chown_owner_and_group.sh
chmod +X chown_owner_and_group.sh

次に、ファイルの所有者とグループを復元する必要があるサーバーにファイルをコピーし、次の操作を実行しました。

./chown_owner_and_group.sh

答え4

唯一の解決策は、同じディストリビューションの別のインストールと比較して、所有者を正しくリセットすることだと思います。

関連情報