Hiroaki Sakuma
hiroa****@sakum*****
2006年 3月 16日 (木) 12:12:48 JST
佐久間です. RDBMSをバックエンドの使わないCGIの宿命として,常にパーミッションとセキュリテ ィの問題が付きまといます. 便宜上,UNIXだけを対象として話をします. 共有のレンタルサーバなど,複数のユーザが居る環境に設置する場合,サーバの設定 により,必要なパーミッションというのが異なってきます. (い案) 一番理想的なのが, CGI実行ユーザ = ファイル所有者 = FTPユーザ で,これを実現するには,SuExecを有効にしたwwwサーバに,SuExec相当機能を搭載 したFTPサーバを組み合わせる形になります. この場合は,特に問題もなく,パーミッションも,umask0077で作っておけば問題あ りません. 次に,CGI実行ユーザとファイル所有者が異なる場合. (ろ案) CGIがファイルを書き出す必要のあるlogやpdfなどは,パーミッションを0777や0770 にしておいて,その中で作成するファイルは0600などにしておく形です. ファイル自体を改ざんされる恐れは減りますが,不正なファイルの作成や削除はでき てしまいます. 削除を回避するにはsticky bitを立てて,1777などにしておくという方法があります が,作成は免れないばかりか,不正に作られてしまったファイルの削除ができなくな り,困ります. # ディレクトリなり消すしか無い また,FTPのユーザが異なる場合,ファイルの管理がFTPからできなくなる事がありま す. (は案) 次に,CGIによるインストーラーを使って,logやpdfを生成する場合(あきさんの setup.cgiもこの手法です)です. logやpdf自体の所有者がCGIの実行ユーザになり,パーミッションは0700にできるの で,改ざん,不正作成,不正削除のリスクはなくなります. ただし,インストーラ実行時に,fswikiのルートディレクトリに対し,0777なりの設 定を行う必要が出てくるので,インストール後に手動で0755や0751などに設定しなお す必要があります. FTPユーザの問題は(ろ案)と同様です. ユーザ自身が自分のサーバの環境を把握し,適切なパーミッション設定を行ってくれ ればいいのですが.... CGIの立場からファイルテストを行い,ユーザに問診することで,ある程度は自動的 に適正なパーミッション設定ができるとは思うのですが,万能ではないですね. ===================== Hiroaki Sakuma hiroa****@sakum*****