Настройка umask пользователя Apache - PullRequest
53 голосов
/ 09 января 2009

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

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

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

Ответы [ 9 ]

112 голосов
/ 22 августа 2009

Для 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.

21 голосов
/ 01 июля 2015

Это был первый результат в результатах поиска 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

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

9 голосов
/ 09 января 2009

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

3 голосов
/ 15 января 2012

Добавление команды 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 может быть получен любым скриптом, выполняющим задачи, связанные с Apache, и изменение umask этих (заранее неизвестных) скриптов довольно опасно.

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

1 голос
/ 18 апреля 2017

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

chgrp mygroup dir chmod g+s dir

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

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

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

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

1 голос
/ 25 марта 2016

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

1 голос
/ 14 октября 2015

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

systemctl daemon-reload
service httpd restart
0 голосов
/ 27 марта 2013

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

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

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

0 голосов
/ 09 января 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...