Назад | Перейти на главную страницу

Способы установки umask в Ubuntu для процессов демона

У меня есть процесс сервера демона http (yaws), который я хотел бы, чтобы сервер записывал любые новые файлы с umask 002, чтобы другой пользователь в той же группе мог изменять, перемещать или удалять файлы, созданные процессом демона. Это на Ubuntu 10.04.

В отличие от Apache, yaws не имеет опции конфигурации для umask, поэтому какие существуют методы для установки umask любого процесса демона?

я нашел этот ответ об изменении скрипта инициализации, чтобы добавить umask 002. Это сработало, но я не уверен, что редактирование сценария инициализации - лучший способ упростить документирование и настройку на нескольких машинах.

Я также нашел ссылку на модуль pam_umask Вот. Похоже, это позволяет настраивать параметры umask для каждого пользователя в поле GECOS файла / etc / passwd.

Есть ли другие способы установить маску для процессов демона? И какой способ рекомендуется?

В 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 будут отменены. См. Справочную страницу pam_umask для порядка конфигурации.

Создать .profile файл в домашнем каталоге демона:

#!/bin/sh
umask 002

Вы можете найти домашний каталог демона, запустив:

getent passwd daemon | awk -F':' '{ print $6; }'

Если это не сработает, единственное другое решение, которое я могу придумать, - это отредактировать /etc/init.d сценарий.

Если служба запускается с помощью инструмента «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 start-stop-daemon