(ページの作成:「=apacheユーザのumask値を変更する= ==環境== # cat /etc/redhat-release Fedora release 13 (Goddard) ==背景== * webアプリケーションでは、ソー...」) |
Dondariadmin (トーク | 投稿記録) (→背景) |
||
9行目: | 9行目: | ||
* webアプリケーションでは、ソースの配置はローカルユーザで行いますが、実際の動作はapacheユーザとなります。そうすると下記のようなことが起きるケースがあります。 | * webアプリケーションでは、ソースの配置はローカルユーザで行いますが、実際の動作はapacheユーザとなります。そうすると下記のようなことが起きるケースがあります。 | ||
− | ** | + | ** webアプリケーションが出力するログファイルやキャッシュファイルはapacheユーザーが作成します。つまり、ファイルの所有者はapacheとなります。 |
− | ** | + | ** ローカルユーザがメンテナンスで不要なキャッシュファイルを削除できません。なぜなら、所有者/所有グループ=apache/apache、アクセス権限はrw-r--r--であるためです。 |
* これを解決するため、apacheユーザのumask値を変更し、ディレクトリにはsetgidを設定します。 | * これを解決するため、apacheユーザのumask値を変更し、ディレクトリにはsetgidを設定します。 | ||
+ | * (httpd.confでUserディレクティブ、Groupディレクティブを適切に指定する方法も当然あると思います) | ||
==準備== | ==準備== |
# cat /etc/redhat-release Fedora release 13 (Goddard)
確認用ディレクトリを作成。setgid & chgrpします。
sudo mkdir /var/www/testdir sudo chmod 2775 /var/www/testdir sudo chgrp apache /var/www/testdir/
ls -l /var/www/ drwxrwsr-x 2 root apache 4096 2011-06-06 02:13 testdir
httpd経由でアクセスできるディレクトリに配置します。
<?php file_put_contents('/var/www/testdir/testfile', 'this is test file');
httpdにファイルを作成させ、現状を確認します。上記確認用プログラムへブラウザからアクセスします。
ls -l /var/www/testdir -rw-r--r-- 1 apache apache 17 2011-06-06 02:23 testfile
/etc/rc.d/init.d/functionsによってumask値は022にセットされています。これをhttpd起動時のみ002に変更します。(rootユーザで行います)
# echo "umask 002" >> /etc/sysconfig/httpd # /etc/init.d/httpd restart
先ほどのファイルを削除します。
sudo rm /var/www/testdir/testfile
再度確認用プログラムにアクセスし、アクセス権限がrw-rw-r--に変化していることを確認します。
ls -l /var/www/testdir 合計 4 -rw-rw-r-- 1 apache apache 17 2011-06-06 02:24 testfile
メンテナンスを行うユーザをapacheグループに所属させます。
sudo usermod -G apache -a maintenanceuser
メンテナンスユーザーでログインし、ファイルを削除できるか確認します。
rm /var/www/testdir/testfileTweet