私は開発にUbuntuを使用しています。
私がデータベースを操作するときに、要求に応じてデータディレクトリまたは他のディレクトリにアクセスするためにファイル権限が必要なことがたくさんありました。
このエラーが発生するたびに:
[ERROR] path/to/directory/ permission denied
これを防ぐには、ターミナルから root としてログインし、次のコマンドを使用してディレクトリへのアクセスを許可する必要がありました。
chmod -R 644 /path/to/directory
問題を完全に回避するために、次のコマンドを使用してフルアクセスを許可しました。
chmod -R 777 /
今私のシステムにいくつかの問題がありました。
オペレーティングシステムアカウントまたは端末からrootとしてログインできません。システムを再起動すると、スムーズに起動するかどうかはわかりません。
完全なアクセス権を与えてはならない一部のファイルにフルアクセス権を与えたようですが、そのファイルが何であるかわかりません。
誰でも私を助けることができますか?
答え1
chmod -R 777 /
どのディレクトリにもパターンを繰り返し適用しようとしている場合は、777
停止してしばらく時間をかけて、これが自分が望むものであることを絶対に確信してください。777
次の形式の略語です。
- ファイル所有者が読み取り、書き込み、実行を許可します。
- ファイルグループメンバーが読み取り、書き込み、実行できるようにする
- システムの全員が読んで、書いて、実行できるようにします。
(単純化のため、およびべたついた部分の問題は無視setuid
いたしますsetgid
)
これはほとんど常に望むものではありません。
この権限をファイルシステムのルート(/
)に繰り返し適用すると、コンピュータ上のすべてのファイルとディレクトリに対してこれらの権限が設定されます。これは確かにあなたが望むものではありません。。
回復の側面から見ると…純粋に仮説的なものです。
- Ubuntuシステムはまだ実行中なので、rootとして
sshd
ログインできますssh
他のマシンがあります。
- 以下を使用して開発マシンに接続できます。
ssh
- 開発システムと非常によく似たファイルシステムを保持します(たとえば、Ubuntuと同じバージョンの新しいDBMSを選択してインストールします)。
次のコマンドは、そのコンピュータのファイル権限を開発ボックスにコピーします。
sudo find / -print0 | \
xargs -0 stat -c "chmod %a '%n'; chown -h %U:%G '%n';" | \
ssh user@your-development-machine
実行に時間がかかります。
777
これにより、Ubuntuシステムで多くの権限が変更される可能性が高くなります。ただし、最良のシナリオでも、手動修正が必要な権限関連のエラーがさらに発生することが予想されます。
私が推奨するもう一つのオプションは、完全に再起動することです。データをバックアップし、Ubuntu、DBMS、および開発ボックスに必要なその他のソフトウェアを再インストールします。
答え2
これ以上ルートアクセス権がない場合は運がないので、再インストールするのが最善の選択です。
4755
一部のファイルにはコマンドsu
などのエキゾチックな権限があり、sudo
これらの権限がないと実行されません。
答え3
世界中にファイルシステムへの読み取り、書き込み、および実行アクセス権を付与することは一般的に非常に悪い考えです。一方で、お使いのコンピュータにアクセスできるすべての人は、基本的にシステムに対して何でもすることができます。たとえば、ssh
ディレクトリとファイルに対する権限を確認するための複数のシステムデーモンがあります。正しくないと、これらのデーモンが起動しないことがよくあります。
現状に最適なソリューションは、バックアップから復元することです。したがって、正しい権限を持つすべてのファイルを簡単に元に戻すことができます。
バックアップがない場合、次に実用的な解決策はシステムを再インストールすることです。したがって、まずファイルをバックアップし、インストールされているソフトウェアを保存してから(dpkg --get-selection > installed-software.txt
)、新しいシステムをインストールして使用するソフトウェアをインストールします(apt-get update && dpkg --set-selection < installed-software.txt && apt-get -u dselect-upgrade
)。これで新しいシステムがあるので、構成ファイルを更新できます。
別の解決策はスクリプトを書くことです。このスクリプトはファイルシステムを繰り返し調べ、各ファイルとディレクトリの権限を他のシステムと比較する必要があります。他のシステムに応じて権限を変更できます。いくつかの値を変更する必要があるかもしれませんが、このスクリプトは主なタスクを実行します。このソリューションは、コンピュータに物理的にアクセスできる場合でも機能します。 Live-CDまたはUSBスティックから起動し、ファイルシステムをマウントするだけです。または、ハードドライブを取り外して別のコンピュータにインストールすることもできます。
しかし、私の観点からは、システムを元の状態に戻す最速の方法は、バックアップして再インストールすることです。