• ベストアンサー

chown -Rで .. だけが所有者変更されない

Cent OSで、sudo chown -R hogeuser:hogegroupと打ったら、「..」以外は、所有者と所有グループが変更されたのですが、「..」だけは変更されませんでした ■質問 ・なぜ「..」だけ変更されないのでしょうか? ※ちなみに「.」は、以前から「hogeuser:hogegroup」でした ・「..」「.」って何ですか? ・「一つ上の階層」とか「現在階層」の意味でしょうか? ・それの所有者ってどういう意味でしょうか?

  • re97
  • お礼率80% (601/744)

質問者が選んだベストアンサー

  • ベストアンサー
  • vaidurya
  • ベストアンサー率45% (2714/5983)
回答No.1

..は、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ではあまりありません。

re97
質問者

お礼

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

その他の回答 (1)

  • entree
  • ベストアンサー率55% (405/735)
回答No.2

具体的にはsudo chown -R hogeuser:hogegroup *とタイプされたのでしょうか? 「*」には「.」(ドット)で始まるファイルは含めません。 .や..を含めたいのであれば、sudo chown -R hogeuser:hogegroup * .* とする必要があります。 ただ、「..」はご認識のとおり、「一つ上の階層」の意味なので、 これらを変更したいことはそんなに多くないかもしれません。 「現在階層」や、その階層に存在する隠しファイルも含めて変更したい場合は、 sudo chown -R hogeuser:hogegroup *の代わりに、 sudo chown -R hogeuser:hogegroup .とすればよいでしょう。

re97
質問者

お礼

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

関連するQ&A

  • chownの使い方

    chownを使ってプログラミングしていますが、所有者が変わりません。 変更したいファイルはtmpの中にあります chownの書式は chown ユーザーID(直接入力),グループID(直接入力),"tmp/.$id._pfl" or die "chown 失敗"; です。 よろしくお願いします。

  • ディレクトリ・ファイルの所有権を変更する

    あるディレクトリ「sam]が ls -l で見ると drwx------ 11 507 507 4096 Apr 25 2006 sam と言う情報です。このディレクトリの所有権を rootユーザーに変更したいのですが、 chown -R root sam を実行しても、Operation not permitted と なり、操作が許可されません。 こういう場合、どのようにして所有者変更を行うのでしょうか? よろしくお願い致します。

  • 所有権の一括変換

    RedHatLinux9でサーバーを作りました。 その際旧サーバーのSolarisからFTPでバックアップをとり、 データを移動させたのですが 当り前と言えば当り前で、所有者とグループが全部rootになってしまったんです。ftpはrootでログインしましたから。(tarで固めてからできればよかったんですが容量に余裕がなくFTPで落したんです。) この為、所有者の変更をしなければならないのですが ユーザー数が400程ある為、とても手作業ではできないので、ユーザー名をpasswdファイルから抜き出し chown user user chown user1 user1 chown user2 user2 ・ ・ ・ ・ ・ ・ といった内容のhenkan.prnというファイルを作り実行属性をつけて source henkan.prn としたらカレントディレクトリ内のファイルの所有者は問題なく修正できました。ただこれだとその下のフォルダ内のファイルには全く適用されないので困ってます。 何かいい方法はないでしょうか?? chmod なら-R つければできますよね。 でもchownでは使えないみたいなので。 よろしくお願いします

  • umask757をvar/www/htmlへ適用?

    ■環境 ・Cent OS ■状況 ・指定ディレクトリのパーミッションを、757にしないと期待した動作になりません ※「ファイルアップロード」処理のファイルを配置しています ■現状 ・sudo chmod -R 757でディレクトリを個別指定しています ■質問 ・ディレクトリ単位で指定するのが面倒なので、「var/www/html」全体に「chmod -R 757」を適用しても良いでしょうか? ・セキュリティ的に問題ない? ・umaskで指定した方が良いでしょうか? ・その場合、757にするにはどう書けば良いでしょうか? ・757でしか動作しないそもそもの状況を改善することは可能?(例えば666とかに) ・757でしか動作しないものは、所有者とか所有グループを変更しても、757でしか動作しないものなのでしょうか?

  • ユーザをwheelグループに追加するのは何のため?

    ■環境 ・Cent OS ■質問1 ・ユーザをwheelグループに追加するのは何のためでしょうか? ・sudo コマンドを使えるようにするため? ・sudo コマンドを使わないなら、追加しなくてもよい? ■背景 ・新しく作成したユーザを、wheelグループへ追加するべきか判断がつかない ・このユーザは、「apacheユーザのセカンダリグループとして追加するためだけに作ったグループ」用ユーザです ■質問2 ・wheelグループ名は固定なのでしょうか? ・例えば、hogeなどに変更可能?

  • ファイル所有者を「apache」へ変更する理由は?

    ■現状 ・VPS(CentOS 6.x)に、phpMyAdminを入れている最中です ■質問1 ・所有者をapacheへ変更する理由は? ・ネットを見ていたら、「phpMyAdmin」ディレクトリの所有者をapacheへ変更しているサイトがあるのですが、どうしてrootから変更するのでしょうか? そうしなければいけない? あるいはそうした方が良い? ■質問2 ・サイトによって書き方に違いがあるのですが、何が違うのでしょうか? ・chown apache:apache /★★/phpmyadmin/config.inc.php ・chown -R root.apache /★★/phpmyadmin/ ■質問3 ・yumを利用してインストールした場合、リンク先のようになったのですが、この2つにはそれぞれどういう役割の違いがあるのでしょうか? ・また、一般的に「yumを利用してインストール」する場合、このような感じで設定ファイルは自動作成されるものなのでしょうか?(質問趣旨としては、出来れば事前に、もしくは事後にでも、コマンド打つことにより何らかのファイルが自動生成されるなら知りたいです) ・慣れの問題でしょうか? ▽【Linux】【phpMyAdmin】メモ -- config.inc.phpの場所について - zhuweichenの日記   http://d.hatena.ne.jp/zhuweichen/20130228/1362044999

  • ftpエクスプローラでの所有者、グループの変更

    あるhtmlファイルに追加するプログラムがあるのですが(BBS)そのhtmlファイルの所有者名とグループがおそらく管理者(自分なのですが・・・)になっているので、それをapachという名前に変更したいのですがそういう変更ってftpエクスプローラからできるのでしょうか? ファイルのパーミッションはきちんと書き込めるように設定しています。 ftpエクスプローラでの所有者、グループの変更をしなけれればいけないのでしょうか?でもその前に、そういうことってできるのでしょうか? ちなみに自分でサーバーを設置したのではなく、他の会社に月いくらかでレンタルしています。

  • ディレクトリの所有者をXAMPPのapacheに

    Linux初心者です。 現在、CentOS5.4でLinuxサーバ構築の勉強をしています。 ディレクトリの所有者をXAMPP for Linux1.7.4のApacheに変更したいのですがイマイチやり方がわかりません。 変更したいディレクトリは book_picture というフォルダで /opt/lampp/htdocs/book_picture にあります。 ディレクトリの所有者を変更するにはchownコマンドというのを使うのは調べていてわかりましたが book_picture のファイル名が /opt/lampp/htdocs/book_picture だと上手くいきませんし、 XAMPP for Linux1.7.4のApacheのユーザー名もわかりません。 よろしくお願いします。 ちなみにディレクトリの所有者を変えてクライアント側からファイルのアップロードがしたいのです。 パーミッションを777にする方法ではできました。

  • WindowsXP HomeEditionの所有者の変更方法

    WindowsXP HomeEditionにおいて現在設定されている所有者の名前を変更したいと考えています。 変更することは可能なのでしょうか? もしできるのであれば、どのような手順で変更できるのでしょうか? OS:Windows XP HomeEdition+SP1

  • PHPにて所有者名を変更出来る方法を教えて下さい。

    下記プログラムのように、あるサーバーの中のデーターをディレクトリー(/hogehoge)ごと別の ディレクトリー(../test)にコピーを行い、FFFTPにてファイルの更新を行いたいのですが、 コピー後は所有者名が変わってしまい属性(パーミッション)の変更が出来ず、修正や削除も出来ません。 どうも所有者名がApacheになっているようです。 勿論プログラム上からなら削除や修正は可能ですが、どうしてもFFFTPから操作出来ないと困るのです。 プログラムから所有者名を指定する方法を教えて戴きたいのです。 FFFTPで見ますと、所有者名は今までのどのファイルもディレクトリーも数字で、「1664」ですが、 PHPで作成コピーしたファイルを見ますと「48」です。 所有者名を「1664」にしたいのです。 そうすればパーミッションの変更が出来ると思います。 因みにこの方法を試しましたが変更出来ませんでした。 使い方が間違っているのでしょうか。それともスーパーユーザでないからかもしれません。 スーパーユーザにはどうしてなれるのでしょうか。 // 使用するファイル名とユーザ名 $file_name= "foo.php"; $path = "/home/sites/php.net/public_html/sandbox/" . $file_name ; $user_name = "root"; // ユーザを設定します chown($path, $user_name); 所有者名変更方法(末端の階層ディレクトリー及びファイルまで)をご教授下さいませ。 以上宜しくお願い致します。 <?php //あらかじめ指定された元フォルダ名 $imageDir = "hogehoge"; // 作りたいフォルダ構造 $structure = '../test'; // 入れ子構造を作るには、$recursive パラメータを // mkdir() に指定しなければなりません if (!mkdir($structure, 0777, true)) { die('Failed to create folders...'); } chmod($structure, 0777); $path = '../test/'; $user_name = 'myname'; // ユーザを設定します chown($path, $user_name); //あらかじめ指定されたコピー先フォルダ名 $destDir = "../test"; copyDirectory($imageDir,$destDir); function copyDirectory($imageDir, $destDir) { $handle=opendir($imageDir); while($filename=readdir($handle)) { if(strcmp($filename,".")!=0 && strcmp($filename,"..")!=0) { if(is_dir("$imageDir/$filename")) { if(!empty($filename) && !file_exists("$destDir/$filename")) mkdir("$destDir/$filename"); copyDirectory("$imageDir/$filename","$destDir/$filename"); } else { if(file_exists("$destDir/$filename")) unlink("$destDir/$filename"); copy("$imageDir/$filename","$destDir/$filename"); } } } } print ディレクトリー作成成功しました。 ?>

    • 締切済み
    • PHP