みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

サーバー(リモート): 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ファイルを「読むだけ」というのが、
どのような動作なのか、よく分からなかったもので。。。

どうぞ、よろしくお願い致します。
(レスポンスは確実に致します。)

投稿日時 - 2013-02-25 15:17:00

QNo.7963895

困ってます

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

XREAサーバの場合、phpはモジュールとして動作するのではなかったですかね(CGIとして動かす方法もあったハズですが、そういう細工はされていませんよね)。

であれば、phpスクリプトを実行するユーザーは「Apache」です。つまりファイルのowner(ftpユーザー)とは別の権限であり、「other」です。phpスクリプトで読み書きするファイルは606である必要がありますし、ファイルを作成・削除するような場合にはディレクトリが707でないといけません。

suExecなどで「ownerの権限で動作する」のか「Apache(other)の権限で動作する」のかによって、データファイル(ディレクトリ)のパーミッションが変わるだけです。

phpスクリプトなどは「読めればいい」だけなので、どんな設定のサーバでも604 or 644にしますから違いはありません。

なおgroupなんて「設定しない」ので気にする必要はありません(汗

投稿日時 - 2013-02-25 15:35:53

お礼

回答をありがとうございます。
(CGI版ではなく、モジュール版で動かしています。)

>つまりファイルのowner(ftpユーザー)とは別の権限であり、「other」です。

すみません、ここの意味がよく分かりませんでした。(>。<)。。

自分、グループ、他人、
で言うと、Apacheは、他人なのでしょうか?
他人がphpスクリプトを実行しているわけですね?

じゃぁ、その場合、自分とは誰なのでしょう?
その自分というのが、phpスクリプトを実行する状況についても、
併せて教えて欲しいなと思います。
どう考えても、いつだってApache経由でしか、
phpスクリプトは実行できないと思うのです。
つまり、phpスクリプトを実行するのは毎回、
Apacheになるということでしょうか。
(↑かなり混乱していますでしょ。笑)

>groupなんて「設定しない」ので

設定しない とは、誰がでしょうか?
レンタルサーバー利用者個人が、ということでしょうか?
それとも、サーバーの運営者側が、かな。。?

いずれにしても、groupの所は、「0」で良さそうですね。。?

またよろしければ、どうか教えて下さい。(笑)

投稿日時 - 2013-02-25 16:42:49

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>じゃぁ、その場合、自分とは誰なのでしょう?

phpスクリプトのownerは「ftpユーザー」です。ご自分のftpアカウントですね(でないとftpでファイル操作が出来ませんから)。

>その自分というのが、phpスクリプトを実行する状況についても、
>併せて教えて欲しいなと思います。

CGIで動作するサーバ(+suExec)ではApacheではなくftpユーザーの権限で実行します。なので604とかのパーミッションのままでもファイルの読み書きが可能です。ownerの権限ですからね。そういうレンタルサーバもいくつかあります。さくらがそうだったと思いますし、ロリポップもphp5に切り替えるときにCGIになったハズです。

XREAサーバでも、.htaccessでCGI動作にする設定があります(下記URL参照)。

http://sb.xrea.com/showthread.php?t=10744

投稿日時 - 2013-02-25 17:03:56

お礼

回答をありがとうございます。

>ご自分のftpアカウントですね(でないとftpでファイル操作が出来ませんから)。

なるほど、とてもよく分かりました。


>CGIで動作するサーバ(+suExec)ではApacheではなくftpユーザーの権限で実行します。

こちらも大変勉強になりました。


>XREAサーバでも、.htaccessでCGI動作にする設定

こちらも、ありがとうございます。
(先日、そちらのページを参考に、CGI版にしようとしたのですが、
上手く行かず断念しましたw)

投稿日時 - 2013-02-25 19:23:20

あなたにオススメの質問