Настройка нового веб-сервера в Ubuntu 14.04 и попытка разобраться с правами доступа к файлам, созданным PHP.
По умолчанию все каталоги и файлы в /var/www
принадлежат / сгруппированы в www-admin. Разрешения каталога rwxrwsr-x
и права доступа к файлам rw-rw-r--
.
Затем мы устанавливаем группу на ограниченное количество каталогов в www-data - это так, чтобы PHP (через Apache) мог записывать файлы журнала и кеширования в это место.
Однако я не могу заставить PHP подчиняться umask 0002
, поэтому файлы, созданные PHP, доступны для записи только пользователю www-data. Это проблема, поскольку мы используем непрерывную интеграцию и некоторые другие процессы очистки.
Пока у меня есть:
/etc/pam.d/common-session
/etc/pam.d/common-session-noninteractive
/etc/profile
/etc/apache2/envvars
/etc/login.defs
www-data
в /etc/passwd
с помощью sudo chfn -o "umask=002" daemon_username
И я все еще застрял.
Остановил / запустил сервис и даже перезапустил компьютер - без радости.
"umask 002" в / etc / apache2 / envvars должен работать.
Обратите внимание, что Apache должен быть перезапущен с помощью команды «остановка службы apache2; запуск службы apache2», а не «перезапуск службы apache2»!
См. Здесь, если вам нужен более подробный образец: https://serverfault.com/a/384922/228027
Проблема в том, что файлы создаются PHP-FPM. Это родительский процесс, а не apache2. Единственный способ исправить это - добавить umask в /etc/init/php7.1-fpm.conf. Затем перезапустите PHP-FPM.
Связанная ветка: Настройка umask для nginx / php-fpm.
Если вы запускаете несколько сайтов, вы можете установить разрешение группы по умолчанию, используя списки управления доступом (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
Это не сработало для меня, пока я не понял следующее: плагин драйвера PDO SQLite для Wordpress создаст файл базы данных только с правом чтения группы.
Проверьте свое здравомыслие, используя сценарий создания отсюда: Как установить umask по умолчанию в Apache на Debian?.