ディレクトリのパーミッション(実行フラグ)について

このQ&Aのポイント
  • ディレクトリの実行フラグが立たないと、そのディレクトリ内のファイルに対して読み書きができません。
  • 通常はパーミッションを必ず奇数にする必要があります。
  • ディレクトリのパーミッションが666の場合、一般ユーザーはアクセスできず、rootユーザーはアクセスやファイルの作成ができます。
回答を見る
  • ベストアンサー

ディレクトリのパーミッション(実行フラグ)について

今まで意識して考えたことが無かったのですが、ふと気づいたので質問させていただきます。 ディレクトリの実行フラグが立たないとそのディレクトリ内のファイルに対して読み書きが出来ないので、通常はパーミッションを必ず奇数にする必要があると思っていました。 これまでは意識せずそうしてきたのですが、自分の使っているVineLinuxでは/var/logのパーミッションが666となっていました。 不思議なことに!?他の一般ユーザーではアクセスすらできないlogディレクトリに、rootでは問題なくlogディレクトリへのアクセスやファイルの作成等ができました。 たしかにrootで消せなくなるファイルがあると問題になるのでrootは特別なのかもしれませんが、ディレクトリのパーミッションが666の場合どういう扱いになるのか教えていただけないでしょうか。

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

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

Linuxにおいてrootは絶対的な存在なのでrootはすべてアクセスできます。 パーミッションについての考え方はURLを参考にしてください。

参考URL:
http://www.atmarkit.co.jp/flinux/rensai/theory04/theory04b.html
papama
質問者

お礼

ご回答有難うございます。rootにつきましては納得できました。ただ、パーミッションについては質問の仕方が悪かったので補足させていただきます。もしよろしければご回答の程よろしくお願いいたします。

papama
質問者

補足

ディレクトリのパーミッションの件ですが、つまるところ/var/logが何故666となっているかという事です。 666なら結局そのディレクトリ以下のファイルには書き込み/読み込みが出来ないですから、000でも良いんじゃないかと考えました。 もし/var/logディレクトリが666でないといけないとすれば、それにはどういう意味があるのか知りたかったのです。

関連するQ&A

  • ディレクトリのパーミッションについて

    ディレクトリのパーミッションについて易しく教えてください。 ディレクトリに移動するのになぜ実行アクセス権が必要なのでしょうか。仕組みがいまいち分かりません。 ファイルのパーミッションは分かるのですが、ディレクトリのパーミッションは少し分かりづらいです。 分かりやすく教えていただければうれしいです。 よろしくお願いいたします。

  • パーミッションの環境

    実行パーミッションを700 データファイルを600 CGI格納ディレクトリを705 データ格納ディレクトリを700 レンタルサーバーによっては上記設定でCGIスクリプト等のパーミッションを設定できます。 ですが、VineLinuxで構築したうちのサーバーでは、CGIのパーミッションを755に、 読書き用データファイルを666にしないと動作しません。 http://www.kent-web.com/support/faq/faq3-2.html#6 上記ページの説明にもありますように、700や600で設定できる環境のほうがセキュリティ上好ましいそうですが、方法がわかりません。 VineLinuxではこのような環境を構築することは不可能なのでしょうか?可能でしたら、方法、または参考になるサイトを紹介していただければ幸いです。

  • ディレクトリパーミッションの読込み権限

    一般的なWebサーバーに於いて、ディレクトリに対するパーミッションの表す具体的な意味がよくわかりません。いろいろ調べてはいるのですが、以下のような漠然とした理解に留まっています。 読込: ディレクトリの中身を見る(?) 書込: ディレクトリ内でファイルを作成, 削除 実行: ディレクトリ内のファイルにアクセス 特に判然としないのが、読込みと実行の違いです。 現在、自サイト内の全てのディレクトリのパーミッション値を701、つまり訪問者には実行権限のみを与えるということで統一していますが、今のところ問題は起きていません。 では、読込み権限が必要になるのはどのような場合が考えられるでしょうか。 また、上記の私の理解は合っているでしょうか。間違っていれば訂正、補足をお願い致します。

  • Linux上でファイル・ディレクトリのパーミッションを強制的に変える

    Linux上でファイル・ディレクトリのパーミッションを強制的に変える Linuxでファイルサーバを立てています. まず,やりたいことは3つあります. 1.特定のユーザに対してファイルのパーミッションを変えるコマンド(chmod)を使用不可能にしたいのですがどうしたらよいのでしょうか? 2.ファイル(ディレクトリ)のパーミッションを強制的にrwxr_xr_xにしたいのですが,可能でしょうか?つまり,指定したパーミッション以外のファイル(ディレクトリ)をコピーしたといしても,そのファイルのパーミッションはrwxr_xr_xに強制的に変わるということです. 3.特定のユーザでディレクトリの移動を/homeより上の階層に動かしたくないのですがどうしたらよいのでしょうか?つまり自分と他のユーザのディレクトリは見に行けるがルート以下のシステム関連には移動してほしくないということです. よろしくおねがいします.

  • Apacheのドキュメントルート配下のファイル、ディレクトリの所有者は

    Apacheのドキュメントルート配下のファイル、ディレクトリの所有者は、rootのままだと危険でしょうか? /var/www/html/以下を公開しています。所有者をとりあえず、apacheに変えましたが、通常所有者はどうすべきですか? パーミッションの関係でrootのままが便利な気がしますが。

  • パーミッションの 読み取り、書き込み、実行 とは?

    パーミッションの「読み取り・書き込み・実行」について教えてください。 PHPとMySQLの初心者でその他プログラミング言語(C言語やCGIなど)の知識はありません。 Q1.「読み取り(Read)」について 「ファイルの読み取りや、ディレクトリの一覧参照が可能」と書かれていました。 この読み取りとはどういう状態のことですか? Q2.「書き込み(Write)」について 「ファイルへの書き込みや、ディレクトリ内のファイルの削除、新規作成、名前変更が可能」と書かれていました。 この書き込みとはどういう状態のことですか? Q3.「実行(Execute)」について 「ファイルを命令として実行可能、ディレクトリにアクセス可能」と書かれていました。 これはPHPなどのプログラムファイルを指しているのでしょうか?そうだとしたらプログラムファイル以外のファイルにこの指定は不要ですか? また「ディレクトリにアクセス可能」とはどういう状態のことを指すのでしょうか?読み取りや書き込みの場合、必ずファイルにアクセスして行われると思いますが、指定が別になっているのはなぜですか?アクセスの意味を勘違いしているのでしょうか? 尚、勘違いしている部分があれば訂正をお願いします。

  • パーミッションについて

    パーミッションについて疑問に思ったことがありましたので教えてください。 /var/www/html/img というディレクトリ構成が存在した時、imgディレクリに ファイルを書き込みたい場合、imgディレクトリに書き込み権限を与えることに なると思うのですがこの場合imgディレクトリのみに書き込み権限を与えればよい のでしょうか。上位の var www html それぞれには書き込み権限を与える必要は あるのでしょうか。

  • NASのパーミッション設定

    市販のIOのHDL-XVやバッファローのテラステーションのような簡単なネットワークファイルサーバー装置で、unixのようにothersに対してパーミッションをr--(リードオンリー)にし、指定したユーザーやグループだけrwx(読み書き可能)にできる製品は無いでしょうか? この設定は、ルートにあるディレクトリ単位でも構いません。 ローカルネットに接続できる全てのユーザーに閲覧可能にしたいのですが、変更をされては困る特定のディレクトリ(サブディレクトリも含む)作成する必要があります。 (HDL-XVでは、ルートのディレクトリ単位でアクセス制限が掛けられるのですが、othersのような概念が無いようです。OSはLINUXだと聞いた記憶がありますが、LINUX自体のパーミッションはunixと同じだと思っていました)

  • Apacheでディレクトリにアクセス出来ない

    Linux初心者です。 Fadora10でApacheを動作させたいのですが、ディレクトリにアクセス権の設定がうまく出来ていないようで、アクセスすることが出来ません。 httpd.confに以下の記述をして、/httpRootをApache用のディレクトリにしたいと考えています。 Alias /test "/httpRoot" /httpRootのアクセス権を "ls -l"コマンドで確認したところ、"drwxrwxrwx"になっています。 当初root権限でディレクトリを作成したため、所有者がrootになっており、それが問題なのかも?、と思い、所有者は現在はrootではありません。 尚、/httpRootはsambaとvsftpdからも読み書きできるようにしたいと考えています。

  • パーミッションの考え方。

    サーバー(リモート): XREAのレンタルサーバー(Linux系) テストサーバー(ローカル): Windows版XAMPP (Version: 1.8.1) FTPソフト: FFFTP DB: SQLite3 ----- 使用するディレクトリ、ファイルのパーミッションの設定のしかたがよく分からず、 困っています。 使用するファイル、ディレクトリは以下の通りです。 phpスクリプトファイル(3種類) (1)全ての人からウェブブラウザ経由でアクセスされて動く --- a1 (2)phpスクリプトから呼ばれた時にのみ使われる --- a2 (3)管理者のみがアクセス --- a3 DBファイル(.sqlite3) --- b1 画像ファイル --- c1 <位置関係(Document Root を基準に書かせてもらいます。)> Document Root --- a1.php Document Root --- sub --- a2.php Document Root --- admin --- a3.php Document Root --- db --- b1.sqlite3 Document Root --- img --- c1.jpg 上記のような場合、 (ディレクトリ) sub admin db img (ファイル) a1.php a2.php a3.php b1.sqlite3 c1.jpg これら、4つのディレクトリと、5つのファイルは、 それぞれ、具体的には、どのようにパーミッションの設定をしたらよろしいでしょうか。 (考え方も含め、ご教示頂けますと助かります。) それと、 パーミッションの話で出てきます、 「自分」、「グループ」、「他人」 とは、一般的に、 レンタルサーバー(特に知りたいのはXREAの場合。)においては、 それぞれ具体的には誰を指しますでしょうか? (「グループ」に属すユーザというのは誰のことなのでしょうか?  もし存在しないという場合には、「グループ」のユーザの権限は、  すべて「0」でも大丈夫でしょうか。) また、細かい話にはなりますが、 あるユーザに、DBファイルへの書き込み権限を与え、その一方で、 そのDBファイルへの書き込みを実際に実行するPHPスクリプトファイルの 実行権限を与えない、なんていう場合には事実上、 そのユーザは、「そのDBファイルへの書き込みはできない」 ということになりますでしょうか。 また、phpファイルを「読む」 と、「実行する」では、 動作上、どのような違いがあるのでしょうか。 phpファイルを「読むだけ」というのが、 どのような動作なのか、よく分からなかったもので。。。 どうぞ、よろしくお願い致します。 (レスポンスは確実に致します。)

    • ベストアンサー
    • PHP