web-dev-qa-db-ja.com

CentOSでファイル所有者を元に戻す

誤って、タイプミスのある愚かなコマンドを実行しました。ユーザー「teamspeak」を作成し、現在のディレクトリとそのサブディレクトリのファイル所有者を変更したかったのですが、誤って「/」で実行しました。

コマンドの実行中は「root」ではなく「teamspeak」のユーザーでしたそして次のようなものを実行しました:

chown -r teamspeak:teamspeak /*

私は多くの行を見ました、私が読むことができたのは、ファイル所有者の変更に失敗したこと、進行状況は/ libの周りであり、CTRL + Cを押して停止したときはおそらく/ bootでした。

ただし、再起動後にサーバーが使用可能になることはありません(ファイル所有者のことは90%確信しています)。

ホストが提供するレスキューイメージモードで起動しようとしています。

ファイルパーミッションを元に戻す方法があるかどうか疑問に思いました。

および/または

teamspeak:teamspeakに属するすべてのファイルを検索し、それらをroot:rootにするコマンド

少なくとも、正しく起動して、サーバーからすべてのデータベースをフェッチします。

1
adrianTNT

この問題は修正され、データセンターの技術者が開始して次のように述べました。

マシンはエラーでBIOSで停止し、介入を待っていました。

詳細情報を待っていますが、/ bootディレクトリがroot:root以外のユーザーに設定されているため、おそらく起動の警告でした。

今、私はsshに入り、find / -user 'teamspeak'を実行して、間違ったユーザー設定のファイルを確認しました。

/mnt
/lib
/lost+found
/root
/etc
/lib64
/opt
/sbin
/var
/var/tmp/yum-teamspeak-6jBpFg
/usr
/boot
/home
/home/teamspeak
/home/teamspeak/.viminfo
/home/teamspeak/.bashrc
/home/teamspeak/.bash_profile
/home/teamspeak/.bash_logout
/home/teamspeak/.bash_history
/srv
/selinux
/tmp
/bin
/media

これらは多くの変更されたファイル/フォルダではなく、結果にはサブディレクトリも含まれているようです。そこで、同じOS(CentOS 6)を搭載した別のマシンと比較しました。これらはすべてroot:rootであるはずでした。元に戻し、再起動すると、正常に起動しました。

Pfew :)

1
adrianTNT

"teamspeak:teamspeakに属するすべてのファイルを検索し、それらをroot:rootにするコマンド"

試してみてください

find / -user 'teamspeak' | xargs chown root:root
2

問題は、rootがすべてのファイル/フォルダーの所有者ではないため、ファイル/フォルダーの所有者をrootに戻すとすべての問題が解決しない場合があることです。

2つの選択肢があると思います。

  1. 可能であれば、OSを再インストールしてください。
  2. これを別の実行中のシステムと比較し、必要に応じて所有者を変更するという面倒な作業に取り掛かります。最初のステップとして、所有者をルートに変更することから始めることができます。
1
Khaled

奇妙なことに、OPはrootの代わりにユーザー「teamspeak」としてコマンドを実行することにより、明らかにマシンをダウンさせました(または少なくとも再起動を阻止しました)。コマンドが実行される前にボックスにすでにアクセス許可の問題がない限り、これは発生しないはずです。

変更されたファイルは最初からルート所有されるべきではないため、Janneの答えは機能しませんが、findを使用するという考えは有効かもしれません。

AdrianTNTが回復プロセスのどこにあるかはわかりませんが、これが私が行うサニティチェック/検証です。

1)それを実行しますfind / -user teamspeakそして変更されたファイルのリストを取得します2)このリストを別のCentOSボックスのファイル所有権と比較します3)別のCentOSボックスが利用できない場合(または十分に迅速に起動できない場合)、少なくとも目玉を実行しますファイルリストの。所有権が変更されたシステムファイルを探します。

このリストができたら、別のCentOSボックスを見たいと思うでしょう。前述のように、非特権ユーザーによるchownは、そのようなボックスを台無しにしないでください。間違いの前に許可の問題があった可能性があります。

1
cjc

バックアップがない場合、私の頭に浮かぶ唯一の解決策は、サーバーを再インストールし、そのコマンドを二度と実行しないことです:D

CDから起動し、ディスクをマウントして、必要なファイルを回復することもできます。

0
Chris