Відповіді:
Існує три звичайних способи встановлення умаска користувача.
UMASK
в/etc/login.defs
pam_umask.so
до конфігурації PAM в/etc/pam.d
/etc/profile
У цьому плані немає різниці між користувачами системи та звичайними користувачами.
Але я припускаю, що ви намагаєтеся запустити демон із користувацьким умаском?
Проблема полягає в тому, що всі перераховані вище параметри трапляються, коли користувач входить у систему. Якщо ви працюєте з демоном, він ніколи не входить в систему. Він починається з init, а потім запускається як root, або викликає setuid
запуск як вказаний вами користувач системи. .
Ваші основні варіанти:
umask
у свій сценарій init (зробіть grep umask /etc/init.d/*
приклад)start-stop-daemon
, передайте параметр umaskКористувачі системи відрізняються від 'звичайних' трьома способами: закінчення терміну дії пароля, домашній каталог (у користувачів системи його немає) та UID (користувачі системи зазвичай нижче деякого довільного порогу).
У загальному випадку вам майже зовсім не пощастило. Ви можете використовувати PAM для встановлення umask, але PAM вибирає поведінку на основі речей, відмінних від цих трьох відмінностей.
Іншими словами, ви не можете отримати PAM, щоб розрізнити "системних" та "несистемних" користувачів. Це дає вам два варіанти:
Або ви використовуєте PAM, щоб встановити umask для всіх (наприклад, реєстрація /etc/login.defs
), а потім явно встановити umask для несистемних користувачів у /etc/bash.bashrc
(або подібному);
Або ви пишете свій власний модуль PAM для цього. Я думаю, що це буде вітатися багатьма людьми, оскільки встановлення умаски - це звичайне прохання.
Будь ласка, прийміть цю відповідь щедрою щіпкою солі. Такий запит є досить поширеним, і я не здивуюсь, якщо зараз існує кращий / правильний спосіб.
pam_umask
, але, можливо, не про це pam_succeed_if
. За допомогою pam_succeed_if ви можете змусити будь-який інший модуль застосовувати лише до певного користувача або групи. Але я все ще не думаю, що PAM допоможе тут.
Як пропонує @Mikel, якщо ви намагаєтеся налаштувати системний обліковий запис, який є демоном, спробуйте налаштувати сам демон.
Я підійшов до цього питання, дивлячись, як встановити umask для облікового запису _www на MacOS. Хоча це важко, як підказують відповіді вище, я виявив, що міг це вирішити, налаштувавши службу apache як (у даному випадку) користувача == демон.
Я дивно не міг знайти сценарій запуску (як правило, в /etc/init.d/, але на mac в бібліотеці / LaunchDaemons /), але за допомогою http://krypted.com/mac-security/apache2-umasks / виявив, що апач має власний специфічний сценарій оточення.
$ sudo vim /usr/sbin/envvars
umask 002
Можливо, інші демони мають подібні методи, які можуть допомогти у конкретних випадках.