web-dev-qa-db-ja.com

UbuntuでPHPを実行しているwww-dataユーザーのumask

Ubuntu 14.04で新しいウェブサーバーを設定し、PHP生成されたファイルのファイル権限を絞り込みます。

デフォルトでは、/var/www内のすべてのディレクトリとファイルはwww-adminに所有/グループ化されます。ディレクトリの権限はrwxrwsr-xで、ファイルの権限はrw-rw-r--です。

次に、限られた数のディレクトリのグループをwww-dataに設定します。これにより、PHP(Apacheを介して)がログとキャッシュファイルをこの場所に書き込むことができます。

ただし、PHPを使用して0002のumaskに従うことはできないため、PHPによって生成されたファイルは、www-dataユーザーにのみ書き込み可能です。 。継続的インテグレーションやその他のクリーンアッププロセスを使用しているため、これは問題です。

これまでのところ、私は:

  • /etc/pam.d/common-sessionでumaskを0002に設定します
  • /etc/pam.d/common-session-noninteractiveでumaskを0002に設定します
  • /etc/profileでumaskを0002に設定します
  • /etc/Apache2/envvarsでumaskを0002に設定します
  • /etc/login.defsでumaskを0002に設定します
  • www-dataを使用して/etc/passwdSudo chfn -o "umask=002" daemon_usernameのumaskを0002に設定します

そして、私はまだ行き詰まっています。

サービスを停止/開始し、コンピュータを再起動しました。

2
HorusKol

/ etc/Apache2/envvarsの「umask 002」が機能するはずです。

「service Apache2 restart」ではなく、「service Apache2 stop; service Apache2 start」でApacheを再起動する必要があることに注意してください。

より詳細なサンプルが必要な場合は、こちらをご覧ください: https://serverfault.com/a/384922/228027

3
user2743554

問題は、ファイルがPHP-FPMによって作成されていることです。これは、Apache2ではなく、親プロセスです。これを修正できる唯一の方法は、umaskを/etc/init/php7.1-fpm.confに追加することです。次に、PHP-FPMを再起動します。

関連スレッド: Nginx/php-fpm umask setting

1
Sean Ruiz

これは、次のことに気づくまで機能しませんでした。WordpressのPDO SQLiteドライバープラグインは、グループの読み取り権限のみでデータベースファイルを作成します。

ここから作成スクリプトを使用して健全性をテストします Debian上のApacheでデフォルトのumaskを設定するにはどうすればよいですか

0

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

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

root@sh1:/srv/www/php/fastwarren.ca# chmod g+s wordpress

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

root@sh1:/srv/www/php/fastwarren.ca# setfacl --default --modify group:rwx wordpress 

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

root@sh1:/srv/www/php/fastwarren.ca# 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

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

root@sh1:/srv/www/php/fastwarren.ca# ll test
-rw-rw-r-- 1 root www-data 0 Feb 17 01:09 test
0