web-dev-qa-db-ja.com

DebianのApacheでデフォルトのumaskを設定するにはどうすればよいですか?

デフォルトで、Apache2によって作成されたファイルにumask 002、つまりグループrwが必要です。

/ etc/Apache2/envvarsにumask 002を入れてみましたが、このスクリプトはApache起動の一部として実行されますが(Apache2ctl graceful)、umaskは効果がありません。おそらく、起動プロセスのどこかで(たとえば、ユーザーがrootからwww-dataにダウングレードされたとき)、これを配置した方が良い場所があります。

私はFedoraについての投稿と、/etc/init.d/Apache2にumaskを配置することを提案する投稿を読みましたが、Debian(Squeeze)ではこれらのどちらも適用/機能しません。

手伝ってくれますか?

14
artfulrobot

Umask設定が有効であることを確認するには、簡単なテストを使用し、これには他のWebアプリケーションを使用しないでください。これらのアプリケーションは、Apacheのumask設定とは無関係に権限を変更する場合があります。

簡単なテストPHPスクリプト:

<?php
if ($fp = fopen(time() . '.txt', 'w')) {
  fwrite($fp, 'This is a simple test.');
  fclose($fp);
  echo "done";
} else {
  echo "error - cannot create file";
}
?>

ユーザーwww-dataに、この単純なテストファイルをインストールしたフォルダーへの書き込みアクセス権があることに注意してください。

新しいumaskを実行するには、ファイル/ etc/Apache2/envvarsがApache開始ファイル/etc/init.d/Apache2内で使用されるかどうかを確認します。

...
PIDFILE=$(. /etc/Apache2/envvars && echo $Apache_PID_FILE)
...

/ etc/Apache2/envvarsにumaskを設定します。

...
# umask 002 to create files with 0664 and folders with 0775
umask 002

Apacheを再起動します。

service Apache2 restart

違いを確認してください:

#> ls -l *.txt
-rw-rw-r-- 1 www-data www-data  14 2012-05-01 15:56 1335880583.txt
-rw-r--r-- 1 www-data www-data  14 2012-05-01 15:55 1335880540.txt
12
Jens Bradler

(systemdを使用するDebian Stretchの場合-ありがとうwomble!)

UMask=0002 Apache2 systemdサービスユニットファイルで、サービスユニットをリロードして、Apache2を再起動します。

 $ pwd 
/etc/systemd/system/multi-user.target.wants 
 
 $ cat Apache2.service 
 [Unit] 
 Description = Apache HTTP Server 
 After = network.target remote-fs.target nss-lookup.target 
 
 [Service]。
。 
。
。
 UMask = 0002 
 
 $ Sudo systemctl daemon-reload 
 $ Sudo systemctl restart Apache2 
2
duplexddaann

複数のサイトを実行している場合、次のようにディレクトリごとにアクセス制御リスト(ACL)を使用してデフォルトのグループ権限を設定できます。

setidフラグを設定して、すべての新しいファイルがディレクトリからグループを継承するようにします。

# chmod g+s wordpress

新しいファイルに、グループのアクセス許可のためのrwを付けます。そのため www-dataは、アップロードユーザーがSFTPで送信したファイルに書き込むことができます。

# setfacl --default --modify group::rwx wordpress 

ACLが次のようであることを確認します。

# getfacl wordpress
# file: wordpress
# owner: carissacosgrove
# group: www-data
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

ファイルが作成され、機能することを確認します。

# ll test
-rw-rw-r-- 1 root www-data 0 Feb 17 01:09 test
2