chown -R user:user。*は権限を後方に変更します。これは正しい動作ですか?


8

フォルダのパーミッション変更したとき、私は多くの問題になったmyfolderに居住します/。コマンドを発行しました

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

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

残念なことに、私も所有権/が変更されたことに気付きました。もちろん、システムが壊れていました。これは..試合が原因で起こったと思います.*が、それでも私には奇妙なようです。

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

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


4
これは、..一致としての意図された動作です.*
Uwe Plonus 2013

.*で終わるすべてのファイルを. *.意味する.
NickTux

4
@NikThそれは逆です!
Uwe Plonus 2013

/完全に必要な場合を除き(フォルダの作成、削除など)、直接変更しないことをお勧めします(達成したいことについての質問を開きます)。また、ワイルドカード+ルート権限を使用することも危険です。これは、ワイルドカードによる影響が100%わからないことが多いためです。
エドウィン2013

1
@LucaCeroneこれは関連してchmodおりchown、類似のコマンドです。どちらもで始まりch、を含み、o他に2つの類似した文字(nおよびm)があります。</ literal>真剣に、両方とも次の形式です[cmd] -R [mode or user] [one or more files]。その質問に対して提供されているいくつかの解決策はあなたのケースでも機能します。たとえば、これはSean Reifschneiderの(真ん中の)ものです。この回答は、非隠しファイルのglobパターンを削除することによってのみ、隠しファイルにも適用できます。
Lekensteyn 2013

回答:


5

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

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/.*「*」を使用して確認する場合に使用します。


@Emmanuel:なぜxargsを使用して、-Rオプションで十分なのかを見つけるのですか?

@エマニュエル:ありがとう!findとxargsについて少し拡張できますか?
ルカセロン2013

@LucaCeroneなぜこれを受け入れたのかはわかりませんが、のすべてのファイルを再帰的に変更ます/myfolderfindコマンドは、余分や空白を含むファイル名で休憩です。(ファイルを再帰的に変更する場合find /myfolder | xargs chown luca:lucaは、に似ていますchown -R luca:luca /myfolder)。
Lekensteyn 2013

Lekensteynは正しいです私はgrep ^を忘れていました。
Emmanuel

@Lekensteyn検索をスペースと一致しないように変更しました
Emmanuel

4

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

あなたがすべきだったのは

chown -R luca:luca /myfolder

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

現在、所有権をrootに戻すことで、一部の機能を救うことができる場合があります。ただし、長期的には、システムを再インストールする必要があります。

原則として:

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

私は..だけで隠しファイルの...フォルダ内のすべてのファイルの所有権を変更したくなかった
lucacerone

2
じゃあ、じゃあ。その場合は、chown -R luca:luca /myfolder/.[^.]*私が考える
1月

2
echo .*拡張を試す良い方法です。シェルが見ているものを正確に表示します。ls .*ディレクトリを下に行くので、少し混乱するls -d .*可能性があります(より良いかもしれませんが、使用するだけかもしれませんecho .*
Robie Basak

@RobieBasak良い点!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.