Web上でファイル内容の更新を行うには?

[上に] [前に] [次に]
1998/08/20(木) 14:34:31
Web上からファイル名を指定し、
その内容を書き換えるCGIスクリプトを組んでいます。
が、パーミッションが書き込み可のファイルしか更新することができません。

こればっかりは当たり前のことなんでしょうが、
もし対策があればぜひとも教えていただきたいのですが・・・・。

目的のファイルのパーミッションを変える方法を試してみましたが、
Perlのchmodは、他人権限ではうまく動いてくれませんでした。

みなさん、よろしくお願いいたします。

tetsuya 1998/08/20(木) 15:06:24
>パーミッションが書き込み可のファイルしか・・・

 いや、そういうもんじゃないかと(汗

 例えばサーバがapacheならば、
 デフォルトでcgiの実行者は「nobody」さんという人になり、
 この仮想的な人は一応パーミッションが「other:write」を
 許可していないと書き込みが出来ません。
 つまりパーミッションが------rw-を満たしている必要がある。

 コレを避けるには、「cgiスクリプトそのものの所有者が
 実行者という扱いになる」という方策があります。
 大抵、web用のファイルは自分のアカウントが所有者なので
 cgi実行者も自分なら・・というわけです。

 こういう事を実現してくれているプロバイダもありますが、
 ないのならちょっと難しいです。
 実現するためにはサーバデーモンに手を入れる必要があり、
 apacheならsuEXECという外部モジュールが必要になります。

 そう言うわけで手軽な逃げ方。
 全てのファイルに対してchmod o+rwを実行。
 (実行するのは当然ftp上やtelnet上です)
 更にディレクトリにも実行。(コレが重要)
 こうするとnobodyさんも自由に書けます。
 新規ファイルも作り放題。

 但し、言うまでもなく安全性がかなり低下しますので
 それなりの方策を練って下さい。あまり勧めません私は。

tetsuya 1998/08/20(木) 15:16:07
 申し訳ない、補足・・
 というか読解が足りなかったかもしれないので・・


>Perlのchmodは他人権限では・・・

 というのは以下の2つ考えられます。

 パーミッションを変えようとしたファイルは
 そもそも所有者が貴方自身であるのか?
 (つまりperlをcgiとして動かしていて、
  実行者nobody扱いなのでchmod出来ない)

 又は、ファイルの所有者が元々自分ではないのか?
 (perlスクリプトをtelnet上で動かしたりするときは
  実行権限はtelnetしたアカウントと同じになるので
  自分のファイルのchmodは簡単に出来るはず)

 前者の場合なら私が上に書いた浅薄な知識も少しは
 役に立つと思いますが、後者ならお手上げです。
 他人のファイルをいじれる権限は基本的にスーパーユーザー、
 大抵はroot(NTはAdministrator)に限られます。


1998/08/20(木) 18:07:17
[[解決]]
早速の返答、ありがとうございます(^^)>tetsuyaさん

>全てのファイルに対してchmod o+rwを実行。
この方法で逃げてました。
セキュリティ上の問題がつきまとうので、個人的にイヤだったのですが。

やはりシステム自体の壁は越えられなかったということで・・・・。
残念ですがきっぱり諦めることにします(・・、)

詳しい返答、誠にありがとうございました(^^)

[上に] [前に] [次に]