Carpe Diem

  Top > スポンサー広告> Webサーバ > suEXECの導入  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

suEXECの導入

2012 - 06/05 [Tue] - 19:20

通常、CGIの実行ユーザはwww-data(Apacheの実行ユーザID)なのですが、 suEXEC機能を使うとwww-dataとは異なるユーザIDでCGIが実行できます。
これによりパーミッションをオーナーだけにすることができるため、他人が編集出来なくなりますし、またCGI実行時にApache全体に権限のあるwww-dataじゃなくなるため、CGIの挙動で不慮のミスによってファイルを削除してしまう〜など防げます。

◆インストール
$ sudo aptitude install apache2-suexec-custom

Apacheで使えるようモジュールの有効化
$ sudo a2enmod suexec


◆設定
今回testuser を使用者とします。またページのルートディレクトリを/home/testuser/public_html とします。

$ sudo emacs -nw /etc/apache2/suexec/www-data
# 先頭行に追記:suEXECの対象としたいディレクトリを記述
/home
public_html
#/var/www  ←コメントアウト
#public_html/cgi-bin
  ←コメントアウト

設定内容は、1行目が、実行ファイルのある親ディレクトリ(ドキュメントルート)、2行目が公開パスに絶対含まれる文字列を記入するとなってます。イメージとしては、/home/*/public_html/*/*.cgiとなります。こうすればどのユーザも自分のホームでオーナーとしてCGIを使用できます。
注意として、
/var/www
/home


のように複数ドキュメントルートを作成することはできません。
/home/user1
/home/user2

のように親ディレクトリが同一なら、先ほどの設定でユーザごとのsuEXECは可能です。


ディレクティブ設定をします。バーチャルホストを使用します。

$ sudo emacs -nw /etc/apache2/sites-enabled/default
# 最後尾に追記
<Virtualhost *:80>
    ServerName www.virtual.com
    ServerAdmin webmaster@virtual.com
    DocumentRoot /home/testuser/public_html
    ErrorLog /var/log/apache2/virtual.com.error.log
    CustomLog /var/log/apache2/virtual.com.access.log combined
    LogLevel warn
    SuexecUserGroup testuser testuser
</Virtualhost>



設定したらApacheの再起動
$ sudo service apache2 restart


◆確認
テストページを作成します。
$ cd /home/testuser/public_html
$ emacs -nw index.cgi

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";
print <<"EOM";
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
suEXEC Test Page
</div>
</body>
</html>
EOM
exit;


パーミッションの変更
$ chmod 700 index.cgi

一応ですがログの方も確認します
$ tail /var/log/apache2/suexec.log

http://www.virtual.com/index.cgi
にアクセスし、きちんと指定したユーザで実行されていればOK。


◆パーミッションについて
suEXECは他のユーザからの編集を防ぐものであるため、パーミッションの権限を与えすぎるとエラーになります。なので

・ディレクトリは755以下
・CGIファイルは700以下


にしておきましょう。普通はディレクトリ-701、CGI-700です。
またディレクトリと実行ファイルは同じオーナーである必要があります。何気に制約の多い機能です。


ソース:
suEXECを使う
特定のディレクトリのCGIが動かない…
suEXEC環境への移行
php のCGIモードを有効にする-suEXECには php の cgi モードが欠かせない
Apache2におけるマルチユーザー環境(php-cgi+fcgid+suexecで権限分離編)

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。