Как установить umask для системного пользователя?

Можно ли установить umask для системного пользователя (созданного с помощью useradd --system username )?

3 Solutions collect form web for “Как установить umask для системного пользователя?”

Существует три обычных способа установки umask пользователя.

  1. Установите UMASK в /etc/login.defs
  2. Добавьте pam_umask.so в свою конфигурацию PAM в /etc/pam.d
  3. Установите его в файлы запуска оболочки, например /etc/profile

В этом отношении нет разницы между пользователями системы и обычными пользователями.

Но я предполагаю, что вы пытаетесь запустить демона с помощью специальной umask?

Проблема заключается в следующем: все перечисленные выше параметры выполняются при входе пользователя в систему. Если вы используете демона, он никогда не войдет в систему. Он запускается с помощью init, затем выполняется либо как root, либо вызывает setuid для запуска в качестве системного пользователя, которого вы указывать.

Ваши основные параметры:

  1. поместите umask в свой скрипт init (например, для примера используйте grep umask /etc/init.d/* )
  2. настройте init, чтобы запустить программу с помощью специального umask ( systemd.exec upstart umask )
  3. если вы используете start-stop-daemon , передайте опцию umask
  4. изменить сама программа, чтобы вызвать функцию umask или системный вызов

Пользователи системы отличаются от «нормальных» тремя способами: истечением срока действия пароля, домашним каталогом (у пользователей системы их нет), а UID (пользователи системы обычно ниже некоторого произвольного порога).

В общем случае вам почти не повезло. Вы можете использовать PAM для установки umask, но PAM выбирает поведение, основанное на вещах, отличных от этих трех различий.

Другими словами, вы не можете получать PAM, чтобы различать пользователей «системы» и «несистема». Это дает вам два варианта:

  • Либо вы используете PAM для установки umask для всех (например, check in /etc/login.defs ), а затем явно задайте umask для несистемных пользователей в /etc/bash.bashrc (или аналогичном);

  • Или вы пишете свой собственный модуль PAM для этого. Я думаю, что это будет приветствоваться многими людьми, поскольку установка umask является распространенным запросом.

Пожалуйста, возьмите этот ответ с щедрым щепоткой соли. Этот вид запроса довольно распространен, и я не удивлюсь, если теперь будет лучший / правильный способ.

Как предлагает @Mikel, если вы пытаетесь настроить системную учетную запись, которая является демоном, попробуйте настроить сам демон.

Я пришел к этому вопросу, глядя, как установить umask для учетной записи _www на MacOS. Хотя это трудно, как показывают вышеприведенные ответы, я обнаружил, что могу решить эту проблему, настроив службу apache как (в данном случае) пользователя == daemon.

Я странно не смог найти сценарий запуска (обычно в /etc/init.d/, но на Mac в библиотеке / LaunchDaemons /), но с помощью: http://krypted.com/mac-security/apache2-umasks / обнаружил, что apache имеет свой собственный сценарий среды.

 $ sudo vim /usr/sbin/envvars umask 002 

Возможно, у других демонов есть аналогичные методы, которые могут помочь в конкретных случаях.

  • Безопасное предоставление пользователям возможности создавать учетные записи
  • Как я могу назначить начальный / стандартный пароль для пользователя в Linux?
  • useradd в CentOS с домашним каталогом и привилегиями sudo
  • Не удалось добавить или удалить пользователей
  • резервные учетные записи пользователей, не предоставляя им домашний каталог
  • Добавить пользователя в Solaris
  • Как добавить папку к существующему пользователю
  • Arch с XFCE и SDDM: новый пользователь не получает полную среду рабочего стола ... Почему?
  • Каталог скелетов - как добавить мои собственные каталоги
  • Как удалить учетную запись пользователя с помощью терминала
  • Настройка пользователя для программы
  • Linux и Unix - лучшая ОС в мире.