Способы установки umask в Ubuntu для процессов демона
У меня есть серверный процесс http-демона (yaws), который я хотел бы, чтобы сервер записывал любые новые файлы с umask 002, чтобы другой пользователь из той же группы мог изменять, перемещать или удалять файлы, созданные процессом-демоном. Это на Ubuntu 10.04.
В отличие от Apache, в yaws нет опции конфигурации для umask, так какие есть способы для установки umask для любого процесса демона?
Я нашел этот ответ об изменении сценария инициализации, чтобы добавить umask 002
, Это сработало, но я не уверен, что редактирование сценария инициализации - лучший способ облегчить документирование и настройку на нескольких машинах.
Я также нашел ссылку на модуль pam_umask здесь. Похоже, что это позволяет настраивать пользовательские настройки umask в поле GECOS /etc/passwd.
Есть ли другие способы установить umask для процессов-демонов? И какой будет рекомендуемый путь?
3 ответа
Создать .profile
файл в домашнем каталоге демона:
#!/bin/sh
umask 002
Вы можете найти домашний каталог демона, выполнив:
getent passwd daemon | awk -F':' '{ print $6; }'
Если это не сработает, единственное другое решение, о котором я могу подумать, это отредактировать /etc/init.d
скрипт.
В Ubuntu 10.04 глобальными настройками umask по умолчанию можно управлять с помощью модуля pam_umask.
В этом блоге были найдены некоторые подробности, связанные с Debian в целом: http://muzso.hu/2008/01/22/default-permissions-with-libpam-umask
Модуль pam_umask по умолчанию устанавливается в Ubuntu 10.04, но его необходимо настроить.
Отредактируйте /etc/pam.d/common-session, добавив строку:
session optional pam_umask.so umask=022
Затем настройки для каждого пользователя могут быть изменены с помощью команды:
sudo chfn -o "umask=002" daemon_username
добавить настройку umask в поле GECOS в /etc/passwd.
Это работает только для неинтерактивных оболочек без входа в систему, например, когда сценарий запуска демона запускается при загрузке.
Для оболочек входа в систему настройки umask необходимо удалить из других файлов конфигурации оболочки, таких как / etc / profile, /etc/login.defs или из домашнего каталога пользователей.profile,.bashrc и т. Д. В противном случае настройки pam_umask будут переопределены. Смотрите man-страницу pam_umask для порядка конфигурации.
Если служба запускается с помощью инструмента "start-stop-daemon", можно указать значение umask на уровне командной строки с помощью параметра "--umask", например:
log_daemon_msg "Starting $DESC" "$NAME"
if start-stop-daemon --start --oknodo --exec $DAEMON -b --chuid motion --umask 002 ; then
log_end_msg 0
else
log_end_msg 1
RET=1
fi
Настройка сценария запуска для чтения таких подробностей из файла конфигурации может быть более прозрачной, чем добавление пользовательских настроек - это, конечно, зависит от процедуры запуска, используемой для демона.
Дополнительную информацию можно получить на man-Page: man start-stop-daemon