Назад | Перейти на главную страницу

Как установить umask по умолчанию в Apache на Debian?

Мне нужны файлы, созданные 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