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


14

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

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

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

手伝ってくれますか?


1
あなたは「/etc/init.d/apache2再起動」または「サービスのapache2の再起動」でのApacheを再起動してみてください
イェンスBradler

うん、どちらも機能しなかった。
-artfulrobot

新しいファイル(WebDAV、PHP)をどのように作成しますか?
イェンスブラッドラー

私のテストでは、file_put_contents()を使用しています。しかし、これで「修正」しようとしているコードは、DrupalのLessモジュールです(処理済みLess CSSファイルのキャッシュバージョンを作成します)。私の特定の問題は、drush cc allこれらのすべてのwwwデータで作成されたキャッシュファイルでエラーが発生するため、ユーザーとして実行できないことです。
artfulrobot

回答:


11

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

ありがとうございました!それを読むのは
ばかげ

あなたの小さなPHPスニペットが私の正気を救ってくれました。PDOSqlite3 Wordpressプラグインは常にデータベースファイルの読み取り専用グループを設定します。
ダニエルソコロウスキ

2

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

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

# chmod g+s wordpress

新しいファイルにrwグループのアクセス許可を持たせる(例:それはそう www-dataアップロードユーザーがSFTPedファイルに書き込むことができます。

# 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

アプリケーションが意図的に低い許可でファイルを書き込もうとしている場合、これは問題になりませんか?
berbt

-すべてで、アプリケーションがちょうど実際に、最初は少しのために私を混同して減少した権限で書き込みをするわけではありませんstackoverflow.com/questions/28454551/...
ダニエルSokolowski

1
このコマンドにsetfacl --default --modify group:rwx wordpressはコロンがありません。する必要がありますsetfacl --default --modify group::rwx wordpress
マルコス

2

(systemdを使用するDebian Stretchの場合-wombleに感謝します!)

入れてUMask=0002、Apache2のにsystemdサービスユニットファイル内のサービスユニットをリロードし、その後のApache2を再起動します。

$ pwd
/etc/systemd/system/multi-user.target.wants

$ cat apache2.service
[単位]
Description = Apache HTTPサーバー
After = network.target remote-fs.target nss-lookup.target

[サービス]。
。
。
。
UMask = 0002

$ sudo systemctl daemon-reload
$ sudo systemctl restart apache2

Debian Squeezeはsystemdを使用しませんでした。
ワンブル

ああ、元の質問の本文の最後に、Debian Squeezeと言っています。質問は今日から8年前からのものであり、タイトルの問題を2019年後半の最新のDebianで解決しようとしていたので、それを投稿しました。8年前とは対照的に、今日ソリューションを探しているほとんどの人は、私のソリューションから利益を得ることができると思うので、私はちょうど私が入れたものを残します。
duplexddaann
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.