Я пытаюсь сделать файлы, созданные веб-сервером (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
трюк.