Способы установки 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

Другие вопросы по тегам