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

Установка umask 002 для apache, lighttpd,… не сработала?

Я пытаюсь сделать файлы, созданные веб-сервером (Apache, lighttpd, ...), доступными для записи пользователям ftp. Добавление apache к nobody группа и наоборот. umask 002 по ftp работает нормально. Но веб-сервер, похоже, игнорирует мою настройку umask в /etc/sysconfig/:

grep umask /etc/sysconfig/httpd 
umask 002

или /etc/init.d/:

start() {
    echo -n $"Starting $prog: "
    umask 002
    daemon $lighttpd -f $LIGHTTPD_CONF_PATH
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
    return $RETVAL
}

Эти файлы по-прежнему создаются с разрешением 755:

-rwxr-xr-x 1 apache nobody 28243 Jul 28 09:49 ssvzone_997.js
-rwxr-xr-x 1 apache nobody 26224 Jul 28 09:49 ssvzone_998.js
-rwxr-xr-x 1 apache nobody 19686 Jul 28 09:49 ssvzone_999.js

-rwxr-xr-x 1 lighttpd nobody 23949 Jul 29 15:50 ssvzone_999_1.js
-rwxr-xr-x 1 lighttpd nobody 20668 Jul 29 15:50 ssvzone_999_2.js
-rwxr-xr-x 1 lighttpd nobody 22294 Jul 29 15:50 ssvzone_999_3.js

Итак, какова основная причина?

PS: Я видел несколько похожих вопросов, но ни один из них не помог.

Umask не устанавливает биты. Возможно, приложение, которое создает файлы, не запрашивает группу w бит, который нужно установить, или что он явно chmods делает сам файл «безопасным».

Что сообщает простой скрипт php для umask?

<?php 
    system ("umask");
?>

В системе CentOS я должен передать, что он сообщает о 0022 по умолчанию или о том, что я установил в /etc/sysconfig/httpd

Не знаю почему file_put_contents() функция создает файлы с разрешением 755, но @chmod 664 трюк.