Подтвердить что ты не робот

Установка umask пользователя Apache

Я настраиваю LAMP-сервер и хотел бы установить параметр Apache umask на 002, чтобы все файлы, созданные Apache, установили бит разрешения для записи группы (поэтому члены одной группы могут перезаписывать файлы).

Кто-нибудь знает, как это сделать? Я знаю, что на Ubuntu вы можете использовать файл /etc/apache 2/envvars для настройки umask, но на сервере работает CentOS.

Обновление Этот вопрос связан с другим вопросом, который я задал некоторое время назад (пользователям и группам Linux для сервера LAMP). Если вы предпочитаете, пожалуйста, обновите этот другой вопрос с помощью того, что лучше всего настроить для использования пользователем разработчика на сервере, который может редактировать файлы, созданные пользователем Apache.

4b9b3361

Ответ 1

Apache наследует свой umask от своего родительского процесса (т.е. процесс, начинающийся с Apache); это обычно должно быть /etc/init.d/ script. Поэтому поставьте команду umask в script.

Ответ 2

Для CentOS и других дистрибутивов Red Hat добавьте параметр umask в /etc/sysconfig/httpd и перезапустите apache.

[root ~]$ echo "umask 002" >> /etc/sysconfig/httpd
[root ~]$ service httpd restart

Дополнительная информация: Apache2 umask | MDLog:/сисадмин

Для систем Debian и Ubuntu вы также отредактируете /etc/apache2/envvars.

Ответ 3

Это был первый результат в результатах поиска Google для "CentOS 7 apache umask", поэтому я расскажу, что мне нужно сделать, чтобы получить эту работу с CentOS 7.

В CentOS 7 метод echo "umask 002" >> /etc/sysconfig/httpd не работал у меня.

Я перезаписал файл запуска systemd, создав папку /etc/systemd/system/httpd.service.d, и там я создал файл umask.conf с строками:

[Service]
UMask=0007

Загрузился, и это сработало для меня.

Ответ 4

Добавление команды umask в /etc/apache2/envvars для меня не кажется хорошей идеей не только из-за имени файла (только для обозначения переменных), но и на основе этого комментария найдено в этом файле:

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.

Это говорит о том, что /etc/apache2/envvars может быть получен любым script, выполняющим связанные с Apache задачи, и изменение umask этих (неизвестных заранее) скриптов весьма опасно.

С другой стороны, если идея изменения umask для Apache нацелена на разрешение разрешений файлов, созданных с помощью mod_dav, вы должны учитывать, что Репозиторий DAV считается приватным для Apache и позволяет другим процессам обращаться к этим файлам, может привести к различным проблемам (включая повреждение).

Ответ 5

В Debian другое место для установки umask для Apache - это /etc/default/apache 2. Только эта строка в конце этого файла: umask 0002

Ответ 6

Для Ubuntu есть инструмент svnwrap

  • Установить sudo apt-get install subversion-tools
  • Оберните svn и svnserve с помощью svnwrap:
    sudo ln -s /usr/bin/svnwrap /usr/local/bin/svn
    sudo ln -s /usr/bin/svnwrap /usr/local/bin/svnserve

После этого все операции svn с использованием файлов://, svn + ssh://и http://протоколы будут выполняться с помощью umask 002

Ответ 7

Добавление к ответу Luoti/Spider Man для CentOS7: вместо "загрузки" после изменения эти команды можно использовать:

systemctl daemon-reload
service httpd restart

Ответ 8

Что вы можете сделать, так это установить бит группы липких бит (SetGID) в каталоге, с которым работает CGI:

chgrp mygroup dir chmod g+s dir

Убедитесь, что при выполнении этого (apache) пользователя (apache) находится в группе mygroup/etc/group), поэтому он будет иметь разрешения.

Это сделает так, чтобы любой файл, созданный в этом каталоге, принадлежал той же группе, что и каталог.

Это более безопасный подход, чем установка глобальной umask для КАЖДОГО cgi script, который может выполняться apache.

(Вот как обычно git-http-backend запускается из Apache).

Ответ 9

Отклонение от "проверенного и правильного пути Apache" обычно не рекомендуется. Много времени и жесткий выигравшего опыт пошел в отбор таких вещей.