Как установить 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
  • Безопасное предоставление пользователям возможности создавать учетные записи
  • Каковы допустимые имена групп для groupadd?
  • Почему useradd -m не заполняет созданный домашний каталог с некоторыми значениями по умолчанию?
  • Добавить пользователя и установить пароль с помощью Ansible
  • Добавление пользователя в группу по умолчанию
  • Заблокировать определенные файлы
  • Предоставить права на создание / управление пользователями
  • Interesting Posts

    «Пакет« linux-headers-3.13.0-27-generic »не имеет кандидата на установку»

    RHEL6 Работа в режиме бездействия

    Требуется один лайнер: остановите httpd, если он уже запущен, и запустите httpd, если он не запущен

    CGI с Shell Script

    Что значит?

    Не удается загрузить тестирование Debian после обновления

    Служба не запускается при отказах разрешений – в каких файлах она не работает?

    Подключите 2 ноутбука вместе в режиме Dualhead?

    Использование аппаратного управления потоком CTS / RTS на USB

    git не использует глобальный файл конфигурации или открытый ключ

    Ошибка Grub: файл '/grub/i386-pc/normal.mod' не найден?

    как предотвратить расширение псевдонимов `eval` до произвольного псевдонима и сохранить бесконечную защиту цикла от функции?

    Как блокируется блокировка UDP-трафика (кроме трафика, связанного с udp-dns)?

    Как работают proc / diskstats для представления этих значений? А для proc / stat и meminfo?

    Сканирующая пленка (негативы) в Linux

    Linux и Unix - лучшая ОС в мире.