Мне нужны файлы, созданные apache2, чтобы иметь маску 002
, то есть по умолчанию группа rw.
Я пробовал поставить umask 002
в / etc / apache2 / envvars, и хотя этот скрипт запускается как часть запуска apache (apache2ctl graceful
) маска не действует. Предположительно где-то дальше в процессе запуска (например, когда пользователь понижается с root
к www-data
) есть куда лучше поставить это.
Я читал сообщения о Fedora и один, предлагающий добавить umask в /etc/init.d/apache2
но ни один из них не применим / не работает в Debian (Squeeze).
Вы можете помочь?
Чтобы убедиться, что настройка umask вступила в силу, воспользуйтесь простым тестом и не используйте для этого никакие другие веб-приложения. Возможно, это приложение меняет права независимо от настройки umask в Apache.
Простой тестовый 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 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
Если вы запускаете несколько сайтов, вы можете установить разрешение группы по умолчанию, используя списки управления доступом (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
(Для Debian Stretch, использующего systemd - спасибо, womble!)
Ставить UMask=0002
в файле служебной единицы Apache2 systemd, перезагрузите служебную единицу, а затем перезапустите Apache2.
$ pwd /etc/systemd/system/multi-user.target.wants $ cat apache2.service [Unit] Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target [Service]. . . . UMask=0002 $ sudo systemctl daemon-reload $ sudo systemctl restart apache2