Як встановити umask для користувача системи?


14

Чи можна встановити umaskсистемного користувача (створеного за допомогою useradd --system username)?

Відповіді:


14

Існує три звичайних способи встановлення умаска користувача.

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

У цьому плані немає різниці між користувачами системи та звичайними користувачами.

Але я припускаю, що ви намагаєтеся запустити демон із користувацьким умаском?

Проблема полягає в тому, що всі перераховані вище параметри трапляються, коли користувач входить у систему. Якщо ви працюєте з демоном, він ніколи не входить в систему. Він починається з 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 або системного виклику

Чи знаєте ви, як встановити umask для SSHFS (sftp-сервер) на Arch Linux (який використовує systemd)? Як ви зазначали, перші 3 перераховані вами варіанти не впливають.
MountainX

2

Користувачі системи відрізняються від 'звичайних' трьома способами: закінчення терміну дії пароля, домашній каталог (у користувачів системи його немає) та UID (користувачі системи зазвичай нижче деякого довільного порогу).

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

Іншими словами, ви не можете отримати PAM, щоб розрізнити "системних" та "несистемних" користувачів. Це дає вам два варіанти:

  • Або ви використовуєте PAM, щоб встановити umask для всіх (наприклад, реєстрація /etc/login.defs), а потім явно встановити umask для несистемних користувачів у /etc/bash.bashrc(або подібному);

  • Або ви пишете свій власний модуль PAM для цього. Я думаю, що це буде вітатися багатьма людьми, оскільки встановлення умаски - це звичайне прохання.

Будь ласка, прийміть цю відповідь щедрою щіпкою солі. Такий запит є досить поширеним, і я не здивуюсь, якщо зараз існує кращий / правильний спосіб.


1
Вже є модуль PAM під назвою pam_umask . Проблема в тому, що вона працює лише під час входу.
Мікель

А, я думаю, ви про це знали pam_umask, але, можливо, не про це pam_succeed_if. За допомогою pam_succeed_if ви можете змусити будь-який інший модуль застосовувати лише до певного користувача або групи. Але я все ще не думаю, що PAM допоможе тут.
Мікель

1

Як пропонує @Mikel, якщо ви намагаєтеся налаштувати системний обліковий запис, який є демоном, спробуйте налаштувати сам демон.

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

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

$ sudo vim /usr/sbin/envvars
    umask 002

Можливо, інші демони мають подібні методи, які можуть допомогти у конкретних випадках.


Але як вам вдалося записати "umask 002" у цей файл?!?!? Я отримую дозвіл відмовлено помилка навіть в якості кореневої / Судо і в відповідно до яблуком навіть коріння не можуть написати / змінити що - або в / USR / SBIN каталог support.apple.com/en-gb/HT204899
Schurik
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.