web-dev-qa-db-ja.com

Ubuntuでの「chmod -R 777 /」からのリカバリー

重複の可能性:
chmod/777を誤って設定。問題?

私は開発目的でUbuntuを使用しています。

データベース側で作業していると、要件に応じて、データディレクトリやその他にアクセスするためにファイル権限が必要なものがたくさんあります。

次のようなエラーが発生するたびに:

[ERROR] path/to/directory/ permission denied

これを回避するには、ターミナルからroot rootとしてログインし、そのディレクトリへのアクセスを許可する必要があります。

chmod -R 644 /path/to/directory

この問題を完全に回避するために、次のコマンドを使用してフルアクセス権限を与えました。

chmod -R 777 /

現在、私のシステムにはいくつかの問題があります。

OSアカウントからもターミナルからもrootとしてログインできません。システムを再起動しても、スムーズに起動するかどうかはわかりません。

フルアクセスを許可するべきではないファイルの一部にフルアクセスが許可されていると思います。これらのファイルが何であるかはわかりません。

誰か助けてもらえますか?

7
vidyadhar
chmod -R 777 /

モード777を任意のディレクトリに再帰的に適用することを考えている場合は、停止して、それが目的であることを確実に確認してください。 777は以下の略記です。

  • ファイルの所有者に対して読み取り、書き込み、実行を許可する
  • ファイルのグループのメンバーに対して読み取り、書き込み、実行を許可する
  • システム上のすべてのユーザーに対して読み取り、書き込み、実行を許可する

(簡略化のため、setuidsetgidおよびスティッキービットの問題は無視します)

これはほとんどの場合、望んでいることではありません。

これをファイルシステムのルート(/)に再帰的に適用すると、マシン上のすべてのファイルとディレクトリにこれらの権限が設定されます。これは間違いなくあなたが欲しいものではないです。

これからの回復に関して...純粋に仮説的に、

  • Ubuntuボックスはsshdを実行しているため、sshにrootとしてログインできます。

そしてあなたは別のマシンを持っています

  • ssh経由で開発マシンに接続できます
  • 開発マシンと非常によく似たファイルシステムを持っている(たとえば、同じバージョンのUbuntuのクリーンインストールと選択したDBMS)

次のコマンドは、そのマシンのファイル権限を開発ボックスにコピーします。

Sudo find / -print0 | \
xargs -0 stat -c "chmod %a '%n'; chown -h %U:%G '%n';" | \
ssh user@your-development-machine

実行には少し時間がかかります。

これは、Ubuntuボックスの多数の777 'd権限を修正する可能性があります。ただし、最良の場合でも、手動で修正する必要があるアクセス許可関連のエラーがさらに発生することを期待する必要があります。

他のオプション、そして私がお勧めするのは、最初からやり直すことです。データをバックアップし、Ubuntu、DBMS、および開発ボックスに必要なその他のソフトウェアを再インストールします。

8

全世界にファイルシステムへの読み取り、書き込み、実行アクセス権を与えることは、通常、非常に悪い考えです。一方では、あなたのコンピュータにアクセスできる誰もが基本的にシステムで何でもできます。さらに、sshのようないくつかのシステムデーモンがあり、ディレクトリとファイルの権限をチェックします。それらが正しくない場合、これらのデーモンはしばしば起動に失敗します。

現在の状況に最適なソリューションは、バックアップから復元することです。したがって、適切な権限を持つすべてのファイルを簡単に取得できます。

バックアップがない場合、次の実用的な解決策はシステムを再インストールすることです。したがって、最初にファイルのバックアップを作成し、インストールされたソフトウェアを保存します(dpkg --get-selection > installed-software.txt)、次に新しいシステムをインストールし、使用したソフトウェアもインストールします(apt-get update && dpkg --set-selection < installed-software.txt && apt-get -u dselect-upgrade)。これでシステムが新しくなり、設定ファイルを更新できます。

別の解決策は、スクリプトを書くことです。このスクリプトは、ファイルシステムを再帰的に調査し、各ファイルとディレクトリの権限を他のシステムと比較する必要があります。他のシステムに応じて権限を変更できます。いくつかの値を変更する必要があるかもしれませんが、このスクリプトで主な作業を行うことができます。このソリューションは、コンピューターに物理的にアクセスできる場合にも機能します。 Live-CDまたはUSBスティックから起動して、ファイルシステムをマウントするだけです。または、ハードドライブを取り外して別のコンピューターにマウントすることもできます。

ただし、私の観点からは、稼働中のシステムを元に戻す最も速い方法は、それをバックアップして再インストールすることです。

2
qbi

Rootアクセス権がなくなった場合は、運が悪ければ、再インストールするのが最善の策です。

コマンドsuSudoのような4755のような素晴らしいアクセス許可を持つファイルがあり、それがないと実行できません。

2
Martín Canaval