Hiroaki Sakuma
hiroa****@sakum*****
2006年 3月 16日 (木) 11:04:48 JST
佐久間です. > パーミッション関連はチェックだけですね。 > 「CGIからだとchmodは使えない環境が多い」とのことで、設定は行っていません。 chmodはPerlの標準関数なので全ての環境で使えるはずです. たぶん,CGIの実行ユーザと,ファイルの所有者が異なるために,chmodに失敗してい るだけです. > > 設置したファイルを直接操作するのではなく,異なるディレクトリにファイル一 > > 式を > > 用意しておいて,CGI権限でコピーを行うと,CGIが動作するユーザの所有になり > > ます > > から,パーミッション関係も触れるし,セキュリティ的にも一番好ましいです. > > なるほど…。コピーでCGIが動作するユーザの所有になるのですか? > (CGIからの読み書きが可能? 実行権限は与えられない、のかな?) コピーというよりは,新しいファイルをCGIから作成して,元のファイルの内容を丸 ごと移し変えるだけです. こうすれば,新しいファイルは,CGIの実行ユーザが所有するファイルになるので, パーミッションなども自由にセットできますし,セキュリティ的にも好ましいと思い ます. ただ,弊害もあって,例えばパーミッションを0700とか0600とかにして,CGIの実行 ユーザと,FTPのユーザが違ったりすると,作ったファイルをFTPから操作できない事 態が起こります. # これは,現状のlog/以下のファイルなども同様の問題があります. > パーミッションを設定した状態で圧縮して、CGIを動作させる環境で伸張すると > パーミッションの設定が復活、みたいのは聞いたことがありますが、こちらは、 > サーバによっては推奨パーミッションが異なりますし、外部コマンドが利用で > きないレンタルサーバ等もありますので、諦めてしまってました。 tarコマンドなどを使う手もありますが,Perlモジュールもあるので,こちらだと比 較的柔軟に対応できるかと思います. サーバによってパーミッションが異なるというのは, ・SuExecを使っており,FTPもSuExec相当の機能がある ・SuExecを使ってない(CGIの実行ユーザがwwwなど) などの事情があるからで,基本的には CGIユーザ = ファイル所有者 = FTPユーザ であるのが最も簡単で,セキュリティ的に問題もないはずです. この場合,umamkは077になりますね. また,例えば, ・CGIの実行ユーザが,wwwなどのグループに所属する ・FTPもwwwのグループに所属する なども考えられますが,umask=007,017,027などで動くはずですが,セキュリティ 的には,同じサーバ上に居る全てのユーザから操作できるわけで,"設置は可能だが, 使用は不可能" という状況ともいえます. # 動作はすれど,セキュリティホールがあるので使えない(後述の例外はあり) 複雑になるので,別スレッドにします. > (唯一、CGIからファイルを新規作成するとCGIオーナー所有の読み書き権限で > ファイルが作成できますので、その手法は利用しています) > 手法があるなら、何とか実装したいですね。 上記の通り,この手法ですね(^^; > > この辺を実装した,インストーラーみたいなCGIが作れないか考えてみますね. > > 試して頂けるのですか? > ありがとうございます。 以前,他のソフトで実装した事があるので,それを見ながら考えてみます. ===================== Hiroaki Sakuma hiroa****@sakum*****