突然、ルート権限がないと Ubuntu で何もできなくなりました。emacs を実行すると、ファイルにアクセスできないと表示されます (sudo で実行すれば問題なく動作します)。Firefox では、ルート権限がないとセキュリティの問題が発生するなど、これを修正する方法がわかりません。
su に落ちて sudo を削除し、再インストールして、これで直るだろうと思ったのですが (ある時点で sudoers ファイルを emacs と visudo で編集したため)、役に立ちませんでした。何かアイデアはありますか? これは非常に迷惑な経験です
編集:詳細については、こちらを参照してください。この前、Virtualbox を sudo (GUI バージョン) として実行しようとしましたが、特定のマシンにアクセスできないという問題が発生していました。そこで、すべてのコマンドが root として実行されるようにしたかったので、sudoers ファイルに自分自身を追加しました (ユーザー名 (ALL) = (All) などの構文)。しばらくはすべて正常でした。その後、Firefox や Emacs などでこれらの問題が発生したので、過去にこれらのファイルにアクセスできたグループから、何らかの理由で無意識のうちに自分自身を削除したのではないかと思います。
編集2:具体的なエラーについては、emacs の起動時に「ロード ファイルを開けません:/home/path.../.emacs.d/elpa/asynch-20151104.2113/async-pkg...」と表示されます。これは、ターミナルから sudo として実行していない場合にのみ発生します。pkg の権限を間違えた可能性がありますか? Firefox のエラーはこれに似ていました (エラー コード: sec_error_bad_signature)。ただし、~/.modzilla フォルダーを削除した後、問題を再現できません。何かアイデアはありますか?
答え1
ホームディレクトリにルート所有のファイルがあるようです。
これは、過去に sudo を使用してアプリケーションを実行し、それらのアプリケーションがファイルをホーム ディレクトリに保存したことが原因である可能性があります。
ホームディレクトリ内のルート所有のファイルのリストを見つけるには、
find /home/ -uid 0
その後、必要に応じて chown してユーザーに権限を戻すことができます。
chown myuser:myuser -R [files]
ここで、filesは特定のファイルまたはサブディレクトリです。ファイルの所有権が誤っている可能性があるため、通常、ホームディレクトリ全体に対してこのようなコマンドを実行するのは良い考えではありません。意図的にまたは何かに必要な場合。
この問題の原因は、一部のアプリケーションが通常の操作中に、設定ファイルやキャッシュファイルなどのファイルをホームディレクトリに保存することです。これはグラフィカルアプリケーションでは非常に一般的ですが、一部の非グラフィカルアプリケーションでも同様に行われることがあります。 を使用しsudo
、アプリケーションがこれを実行すると、ルート所有のファイルがホームディレクトリに作成されます。その後、このアプリケーションを実行しようとすると、それなし現在、root でのみ開くことができるファイルがあるため、root は失敗する可能性があります。
解決策としては、それらのファイルの所有者を自分のユーザーに戻すか、重要でないと思われる場合は削除することです。
今後この問題を回避するには、sudoを使用するときに次のようにします。
sudo -H [command]
グラフィカルアプリケーションの場合は、代わりに
gksudo [command]
これにより、アプリケーションは、自分のホーム ディレクトリではなく、ルート ユーザーのホーム ディレクトリを使用するように指示されます。