電子書籍の厳選無料作品が豊富!

Cent OSで、sudo chown -R hogeuser:hogegroupと打ったら、「..」以外は、所有者と所有グループが変更されたのですが、「..」だけは変更されませんでした

■質問
・なぜ「..」だけ変更されないのでしょうか?
※ちなみに「.」は、以前から「hogeuser:hogegroup」でした

・「..」「.」って何ですか?
・「一つ上の階層」とか「現在階層」の意味でしょうか?
・それの所有者ってどういう意味でしょうか?

A 回答 (2件)

..は、UNIX系OSでもMS-DOS系OSでも、共通の概念で


一つ上の階層を意味します。

ですから、Linux系OSで考えれば~/の上は必ず管理者が所有しているわけですから
~/では、..はrootが所有権となっています。

つまり、../は上にある存在するもので
そのディレクトリー下を対象とした処理のすべては
../には関係ありませんし、~/../に対してのchownは、通常効果がありません。

./はカレントディレクトリーを指します。
~/はそのコマンドを発行したユーザーのホームディレクトリーを指します。
(rootの場合は/rootです)

こういった記述は、バッチファイルやシェルスクリプトなどで重要な役割を持ちます。

~/がなければ、ユーザーごとに、ユーザー名に合わせたスクリプトを書く羽目になります。
./がなければ、常にフルパス記述が必要になり
場合によっては、対象のディレクトリーごとに別々のスクリプトを用意することになります。

厳密に言えば、それを条件分岐やオプションで対応する手もありますが…
~/,./,../があることによって、スクリプトはシンプルになり
それだけバグのリスクも抑えられるわけです。

ちなみに、~/に相当するWindowsの場合の指定方法は%USERPROFILE%のようです。


なお、MS-DOS系とUNIX系の違いに、./に対しての認識の違いがあります。
MS-DOS系では./を使ったことがないという人も多いはずです。
MS-DOSではダウンロードしてきた自己展開アーカイブを、名前を入力すれば実行できます。

ですが、UNIX系OSではファイル名を入力しても実行されません。
それどころか、目の前にあるはずのファイルにTABキーによるファイル名補完も効きません。

./が指定されていないからです。

MS-DOS系ではカレントディレクトリーが実行パスに設定されているので
./を指定しなくても、カレントディレクトリーにあるファイルがまっさきに実行されます。
セキュリティ上は、アホな仕様ですけどね。

UNIX系OSでは、カレントディレクトリーに実験的なファイルなどがあっても
明示的に./を付けて指定しなければ実行されないので、その分安全なのです。

そもそも、ソフトをどこにインストールするか決まっていないMS-DOS系に比べると

インストール先が厳格で、追加導入も、dpkgやrpmで管理されていたり
管理者お手製スクリプトの置き場所として/usr/local/binが規定されていたりして

カレントディレクトリーのファイルを実行するという機会自体、Linux系OSではあまりありません。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
大変勉強になりましたー

お礼日時:2014/05/12 10:24

具体的にはsudo chown -R hogeuser:hogegroup *とタイプされたのでしょうか?


「*」には「.」(ドット)で始まるファイルは含めません。

.や..を含めたいのであれば、sudo chown -R hogeuser:hogegroup * .*
とする必要があります。

ただ、「..」はご認識のとおり、「一つ上の階層」の意味なので、
これらを変更したいことはそんなに多くないかもしれません。

「現在階層」や、その階層に存在する隠しファイルも含めて変更したい場合は、
sudo chown -R hogeuser:hogegroup *の代わりに、
sudo chown -R hogeuser:hogegroup .とすればよいでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
参考になりましたー

お礼日時:2014/05/12 10:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報