Railsアプリのパブリックフォルダーへのアクセス許可を変更しようとしたときに、誤ってコマンドchown -R root /を実行しました。これにより、/ディレクトリ上のすべてのフォルダーへのアクセス許可が変更されたと思います。私の質問は、これはどれほど危険であるかということです。実際、より良い質問は、これを元に戻す方法はありますか?
ここで問題を軽減する1つの方法(解決はしませんが、穴から抜け出すのに役立ちます)は、類似システムでプロセスを実行して、ファイルの適切な所有権を収集することです。完全に一致する可能性はやや低いと思いますが、両方のO/Sが同じレベルにあり、同様のパッケージがインストールされている場合は、幸運かもしれません。
ファイルのパーミッションをファイルに収集したら、自分のシステムでプロセスを実行して、適切なシステムからファイルとパーマ/所有権を読み取り、自分のシステムに置き換えることができます。 Linux上にこれを行う小さな自家製アプリがいくつかあります。
例えば。
777*0*0*S*16*1334559119*1334532895*1361208513*/usr/lib32/*libgomp.so.1
644*0*0*F*67370*1359536382*1359374461*1359717843*/usr/lib32/*librt.a
644*0*0*F*59044*1334559119*1334532931*1355405098*/usr/lib32/*libgomp.so.1.0.0
644*0*0*F*1238*1359536382*1359374461*1359717843*/usr/lib32/*libBrokenLocale.a
777*0*0*S*17*1359536382*1359374460*1361208513*/usr/lib32/*libdl.so
644*0*0*F*905712*1334559116*1334533011*1355405098*/usr/lib32/*libstdc++.so.6.0.16
777*0*0*S*15*1333306601*1323929512*1361208513*/usr/lib32/*libbz2.so.1.0
777*0*0*S*24*1359536382*1359374460*1361208513*/usr/lib32/*libnss_files.so
644*0*0*F*1128*1359536382*1359374462*1359717843*/usr/lib32/*crt1.o
RWX * UID * GID *その他のもの*ディレクトリ*ファイル名
まず、コマンドがまだ実行されている場合は、コマンドを停止します。
これですべてがルートに属し、それは非常に問題があります。
最新のバックアップから情報を復元するようにしてください。
実行中のすべてのアプリケーションとユーザーが起動時にそれらを起動することを確認する前に、システムを再起動しないことも重要です。その場合、権限の問題により、一部が正しく起動しない可能性があります。
幸運を。
非常に、そして完全ではありません。
コマンドが実際に実行された場合、セキュリティが台無しになるという意味で「非常に」。これで、どのパスにどの所有者がいて、誰が何をすることが許可されるべきかがわかりません。
ある意味で「完全ではない」-それを実行したときにルートであり、コマンドが最後まで実行されたと確信していますか?キャンセルした場合は、見たらすぐに運が良かったし、修理が少ないかもしれません。あなたがrootでなければ、Sudo ...
のようなことをしなければ、このコマンドはそれを行うことができなかったはずです。
これに対する単一の救済策はありません。バックアップがある場合は、それに復元できます。バックアップの所有権を確認して適用する必要がある場合があります。ルートキット(たとえばrkhunter)チェッカーを使用している場合は、最も基本的な所有権のリストがあり、修正できる可能性があります。 (可能性は低いです)。
少なくともFedoraでは、RPMコマンドにはオプション--setperms
と--setugids
があり、それらを使用してrpm --setugids -a
のようなシステム所有のファイルのほとんどを修正できます。各ユーザーのファイルを(ある程度)修正するには、各ユーザーに対してchown -R user /home/user
を実行できます。おそらく、上記で修正されていない残り物があるでしょう。特に、ある種のサーバー(web、ftp、その他)がある場合は、それらを1つずつ処理する必要があります。
おそらく他のディストリビューションにも同様のメカニズムがあります。または、完全に更新します(つまり、何らかの理由で損傷したように、すべてを新しくインストールします。OK、それはだった何らかの理由で損傷しました。)
[はい、これもまた、疑うことを知らないユーザーに、Enterキーを押す前に各コマンドを慎重に検討し、root 控えめにを使用するように教えるUnixのかなり残酷な方法です。自分で教えたと考えてください。]
OSXを使用している場合Appleは、この問題を修正するためにディスクユーティリティ内に復元機能を提供します。Linuxディストリビューションを使用している場合は、すべてのアクセス許可を手動でやり直す必要があると確信しています。どちらの場合も、手を叩いて二度としないでください
残念ながら、「元に戻す」方法はわかりませんが、システムファイルをrootが所有するままにして、$ HOME内のすべてのファイルを自分が所有するように復元することができます(そして、のすべてのユーザーに対して同じことを行うことができます)システム)。その時点で、$ HOMEディレクトリにない各ファイルのアクセス許可や所有者を修正できます。はい、これは苦痛ですが、簡単な解決策はないと思います。それはとにかく私がすることです。
あなたが言うように、あなたはかなり「ねじ込まれている」と思います。最良の(そして最も効率的な)方法は、適切なバックアップから重要なアイテムを再インストールして復元することです。申し訳ありませんが、これは通常、ハッピーエンドで迅速に修正できる状況ではありません。幸運を!