- 締切済み
複数ユーザーでIISを共用する場合
今レンタルサーバーでホームページを複数運営しています。 環境はWindows2003 Server StandardでIIS6.0での運用です。 基本的には自分で作ったサイトを運営していますが このたび他の人のサイトも一緒に動かすことになり FTPアカウントも発行して直接更新してもらえるようにしました。 が、いろいろテストした結果 PHPやPerlなどのプログラム上から他の人のファイルを更新できてしまってます。 たとえば 以下のようなディレクトリ構成として d:/www/userA/www.aaaa.com/ d:/www/userB/www.bbbb.com/ d:/www/userA/www.aaaa.com/test.php内で fopen('d:/www/userB/www.bbbb.com/test.txt'.'a');などと実行すればuserBのファイルを勝手に書き換えられてしまいます。 知り合い限定で使ってるのでまず問題にならないとは思うのですが レンタルサーバーなどでWindows+IISを使ってるところはいくつかはありますしそういうところはどう対処しているのでしょうか? 所有権とかセキュリティのユーザーごとの設定とかいじればできそうな気がしますが 設定の参考になるサイトありましたら教えてください。 以上よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
>FTP上は確かにその通りなのですがプログラム上から実行した場合は書き換えができてしまいます。 絶対パスをユーザーに教えなければプログラムで相対パスしか使えないと思います。 ユーザーのルートはd:/www/userXなのでFTP接続でもd:/wwwへはディレクトリの移動ができません。 従って、userXはd:/wwwの存在を知らないことになりプログラム上でパス名として使えません。 あなたはサーバーの管理者なので絶対パスを使えますがユーザーに知らせなければ、ユーザーは絶対パスを使えません。 相対パスのみで記述する方法を試して下さい。
- bunjii
- ベストアンサー率43% (3589/8249)
フォルダ毎に書き込みのセキュリティを設定して下さい。 FTPアカウントのuserAのホームディレクトリをd:/www/userAとし、上位のd:/wwwへはアクセス出来ないようにします。(d:/www/userA以下にuserAが書き込み許可) userBのホームディレクトリも同様にd:/www/userBとして、上位のd:/wwwへはアクセス出来ないようにすれば相互に書き込みを間違えることはありません。(d:/www/userB以下にuserBが書き込み許可)
補足
FTP上は確かにその通りなのですがプログラム上から実行した場合は書き換えができてしまいます。 たとえば aaa.com/test.php 内で フルパスでd:/www/bbb.com/test.txt に書き込みをする処理を書いた場合書き込みができてしまいます。 たぶんtest.phpを実行するユーザーがSystemか IUSR_~とかだからな気がしますが そうしたら ドメインごとに使用する匿名ユーザーを変えて フォルダごとにその匿名ユーザーだけに権限をあげるとか そういう設定が必要なのかな?と思って質問した次第です。 ググってもそういう情報がひっかからなくて^^