Odpowiedzi:
Istnieją trzy normalne sposoby ustawiania umask użytkownika.
UMASK
w/etc/login.defs
pam_umask.so
do konfiguracji PAM w/etc/pam.d
/etc/profile
Pod tym względem nie ma różnicy między użytkownikami systemu a zwykłymi użytkownikami.
Ale zakładam, że próbujesz uruchomić demona z niestandardowym umask?
Problem polega na tym, że wszystkie powyższe opcje występują, gdy użytkownik loguje się. Jeśli używasz demona, nigdy się nie loguje. Jest uruchamiany przez init, albo działa jako root, albo wywołuje setuid
się jako użytkownik systemu, który określisz .
Twoje główne opcje to:
umask
w skrypcie init (zrób grep umask /etc/init.d/*
przykład)start-stop-daemon
, przekaż opcję umaskUżytkownicy systemu różnią się od „normalnych” na trzy sposoby: wygaśnięcie hasła, katalog domowy (użytkownicy systemu nie mają takiego konta) i UID (użytkownicy systemu są zwykle poniżej pewnego arbitralnego progu).
W ogólnym przypadku prawie nie masz szczęścia. Możesz użyć PAM do ustawienia umask, ale PAM wybiera zachowania na podstawie rzeczy innych niż te trzy różnice.
Innymi słowy, nie można zmusić PAM do rozróżnienia użytkowników „systemowych” i „niesystemowych”. To pozostawia dwie opcje:
Albo użyjesz PAM, aby ustawić umask dla wszystkich (np. Odprawa /etc/login.defs
), a następnie jawnie ustaw umask dla użytkowników niesystemowych w /etc/bash.bashrc
(lub podobnych);
Możesz też napisać własny moduł PAM, aby to zrobić. Myślę, że byłoby to mile widziane przez wiele osób, ponieważ ustawianie umask jest powszechną prośbą.
Proszę, odpowiedzcie na to obficie szczyptą soli. Tego rodzaju prośby są dość powszechne i nie byłbym zaskoczony, gdyby istniał teraz lepszy / właściwy sposób.
pam_umask
, ale może nie o pam_succeed_if
. Za pomocą pam_succeed_if możesz sprawić, że dowolny inny moduł będzie miał zastosowanie tylko do danego użytkownika lub grupy. Ale nadal nie sądzę, że PAM tutaj pomoże.
Jak sugeruje @Mikel, jeśli próbujesz skonfigurować konto systemowe, które jest demonem, spróbuj skonfigurować samego demona.
Przyszedłem do tego pytania, szukając sposobu ustawienia umask dla konta _www na MacOS. Chociaż jest to trudne, jak sugerują powyższe odpowiedzi, znalazłem, że mogę to rozwiązać, konfigurując usługę apache jako (w tym przypadku) użytkownik == demon.
Dziwnie nie mogłem znaleźć skryptu uruchamiania (zwykle w /etc/init.d/, ale na komputerze Mac w bibliotece / LaunchDaemons /), ale z pomocą: http://krypted.com/mac-security/apache2-umasks / odkryłem, że apache ma własny skrypt środowiska.
$ sudo vim /usr/sbin/envvars
umask 002
Możliwe, że inne demony mają podobne metody, które mogą pomóc w określonych przypadkach.