Linux権限障害を1回記録
2245 ワード
今日の誤操作を思い出すと本当に動悸がして、もう少しでシステムを再インストールするところだった.
この問題を解決するには、まず最高管理者権限の復元から始めます.現代のLinuxシステム、例えばUbuntu系は、
このエラーの多くは,
解決の構想は簡単で、
NFS共有ディレクトリは権限を保持できるため、別のマシンを使用してこのNFSディレクトリをマウントし、実行します.
すべての権限情報を保持する
次に、元のホストで次のことを行います.
成功した!
次に、
これで、
SSHサービスを再開し、断線後に再接続できるようにします(ネットワークの状態は誰も予想できないので注意してください).その他のコマンドは、AskUbuntu:リカバリ/*ディレクトリ権限を参照してください.
原文は次のとおりです.http://yfwz100.github.io
/data
というディレクトリの所有者を変更しようとした結果、sudo chown zhi:zhi /
が誤って実行され、システム全体の権限が現在のユーザーzhiにリセットされました.これで何が問題になりますか?このディスカッションを見てください:AskUbuntu:sudo権限エラーは、sudo
コマンドが実行できず、SSHサーバが応答を停止し、ソフトウェアをインストールできず、リモートログインできません.残念なことに、このサーバはリモートホストであり、システムを直接再インストールしたり、root権限を修復したりすることはできません.今日作ったインフラが廃棄されると思って、本当に気分が悪いです.この問題を解決するには、まず最高管理者権限の復元から始めます.現代のLinuxシステム、例えばUbuntu系は、
sudo
スキームを採用し、rootパスワードをランダムパスワードに設定しているため、直接suをrootに切り替えるのは現実的ではない.sudo
を直接実行すると、次のようになります.sudo: /usr/bin/sudo must be owned by uid 0
このエラーの多くは,
/usr
ディレクトリまたはサブディレクトリの権限を誤って変更したためである.解決の構想は簡単で、
/usr/bin/sudo
という命令の権限を復元することだ.1つの方法はrecovery modeに入ることです.このモードでは、基本的に好きなようにすることができます.詳細はAskUbuntu:sudo権限エラーを参照してください.しかし、リモートホストであれば、そうはいきません.では、いくつかの脆弱性を見つける必要があります.私は今回/data
という共有のNFSディレクトリから始めました(幸い前にNFSを構築する際に権限を設定していなかったので、そうしないとマウントできないかもしれません).NFS共有ディレクトリは権限を保持できるため、別のマシンを使用してこのNFSディレクトリをマウントし、実行します.
$ sudo cp -a /usr/bin/sudo /data
$ sudo cp -a /usr/lib/sudo/* /data
すべての権限情報を保持する
sudo
コマンドおよび関連するライブラリファイルを取得します.次に、元のホストで次のことを行います.
$ rm /usr/bin/sudo
$ mv /usr/lib/sudo /usr/local/lib/sudo.bak
$ ln -s /data /usr/lib/sudo
/usr/bin/sudo
を削除し、/usr/lib
ディレクトリを/data
に置き換えます.sudo
コマンドを実行すると、実際には/usr/lib/sudo
ディレクトリを呼び出すライブラリに接続され、ライブラリファイルの権限がチェックされますが、/usr/lib/sudo
ディレクトリの形式や権限はチェックされず、脆弱性が感じられます.いずれにしても、今実行します.$ /data/sudo
成功した!
次に、
/data/sudo
コマンドを使用して/usr/bin/sudo
および/usr/lib/sudo
をリカバリします.$ /data/sudo cp -a /data/sudo /usr/bin/sudo
$ /data/sudo chown -R root:root /usr/lib/sudo.bak
$ /data/sudo cp -a /usr/lib/sudo.bak /usr/lib/sudo
これで、
sudo
コマンドの復元が完了しました.次に、元のUbuntuと照らし合わせて、残りの権限が間違っているディレクトリを元の権限に復元します.重要な権限の1つ:$ sudo chown -R root:root /var/run/ssh*
SSHサービスを再開し、断線後に再接続できるようにします(ネットワークの状態は誰も予想できないので注意してください).その他のコマンドは、AskUbuntu:リカバリ/*ディレクトリ権限を参照してください.
原文は次のとおりです.http://yfwz100.github.io