web-dev-qa-db-ja.com

chown -R user:user。*はパーミッションを逆方向に変更します:これは正しい動作ですか?

/にあるフォルダーmyfolderのアクセス権を変更すると、多くの問題に直面しました。コマンドを発行しました

Sudo chown -R luca:luca /myfolder/.*

私の意図は、/myfolderのすべての隠しファイルの所有権を変更することでした。

残念ながら、/の所有権も変更されたことに気付きました。もちろん、システムが壊れています。これは...*と一致するために起こったと思いますが、それでも私には奇妙に思えます。

親ディレクトリを変更するのは正しい動作ですか?バグレポートを提出する必要がありますか?

Chownの使用が私の間違いだった場合、システムフォルダーとファイルの所有権の変更を防ぐために使用するベストプラクティスは何ですか?

8
lucacerone

コマンドラインは、実行される前にシェルによって展開(解釈)されることに注意してください

Sudo chown -R luca:luca /myfolder/.*

最初に解釈されます:

Sudo chown -R luca:luca /myfolder/.  /myfolder/.. /myfolder/.Adobe  /myfolder/.bash_history

コマンドラインの/myfolder/..に注意してください

chown -R luca:luca /myfolder/..chown -R luca:luca /と同等です
chownを「後方」に走らせる

「*」を使用して確認する場合は、echo /myfolder/.*を使用します。

5
Emmanuel

まあ。ルートとしてのコマンドラインは非常に強力です。 これら クラシックの一部を読んでください。はい、.*に一致する..は、まさに意図したとおりです。ドットは特殊文字ではありません。これは慣例です。慣例により、ドットで始まるファイルは、ディレクトリを一覧表示するときにデフォルトビューから非表示になります。慣例により、現在のディレクトリにつながるiノードは.名を取得し、親ディレクトリにつながるiノードは..名を取得します。

あなたがすべきだったことは

chown -R luca:luca /myfolder

ドットで始まるファイル名について特別なことは何もないと言いましたか?再帰chownはそうは思いません。

現在、所有権をルートに戻すことで、機能の一部を救うことができるかもしれません。ただし、長期的にはおそらくシステムを再インストールする必要があります。

原則として:

  1. ルートとしての作業は避けてください。
  2. ルートとして作業する場合は、Enterを押す前に各コマンドを2回読んでください。
  3. 展開について不明な場合は、最初に「安全な」コマンド(echo .*など)で試してください。
  4. ルートとして機能しないでください。
  5. グラフィカルインターフェイスを使用して安全に実行できる多くのタスクがあります(問題はそのようなタスクの例です)。
  6. ルートアカウントの使用は避けるべきだと言いましたか?
4
January