Risposte:
Esistono tre modi normali per impostare umask di un utente.
UMASK
in/etc/login.defs
pam_umask.so
alla tua configurazione PAM in/etc/pam.d
/etc/profile
Non vi è alcuna differenza tra gli utenti di sistema e gli utenti normali in questo senso.
Ma suppongo che stai cercando di avviare un demone con una umask personalizzata?
Il problema è: tutte le opzioni di cui sopra si verificano quando un utente accede. Se stai eseguendo un demone, non accede mai. È avviato da init, quindi viene eseguito come root o chiama setuid
per essere eseguito come l'utente di sistema specificato .
Le tue opzioni principali sono:
umask
tuo script init (fai grep umask /etc/init.d/*
un esempio)start-stop-daemon
, passare l' opzione umaskGli utenti di sistema differiscono da quelli "normali" in tre modi: scadenza password, home directory (gli utenti di sistema non ne hanno uno) e UID (gli utenti di sistema sono di solito al di sotto di una soglia arbitraria).
Nel caso generale, sei quasi completamente sfortunato. Puoi usare PAM per impostare l'umask, ma PAM seleziona comportamenti basati su cose diverse da queste tre differenze.
In altre parole, non è possibile far distinguere PAM tra utenti "di sistema" e "non di sistema". Questo ti lascia con due opzioni:
O usi PAM per impostare umask per tutti (es. Check-in /etc/login.defs
), quindi imposta esplicitamente umask per utenti non di sistema in /etc/bash.bashrc
(o simili);
Oppure scrivi il tuo modulo PAM per farlo. Penso che questo sarebbe accolto con favore da molte persone, dato che l'impostazione della umask è una richiesta comune.
Per favore, prendi questa risposta con un generoso pizzico di sale. Questo tipo di richiesta è piuttosto comune, e non sarei sorpreso se esiste un modo migliore / corretto ora.
pam_umask
, ma forse non riguardo pam_succeed_if
. Con pam_succeed_if , puoi fare in modo che qualsiasi altro modulo si applichi solo a un determinato utente o gruppo. Ma non penso ancora che PAM possa essere d'aiuto qui.
Come suggerisce @Mikel, se stai provando a configurare un account di sistema che è un demone, prova a configurare il demone stesso.
Sono arrivato a questa domanda cercando come impostare l'umask per l'account _www su MacOS. Mentre questo è difficile come suggeriscono le risposte sopra, ho scoperto che potevo risolverlo configurando il servizio apache come (in questo caso) l'utente == un demone.
Stranamente non sono riuscito a trovare lo script di avvio (normalmente in /etc/init.d/ ma su un mac in Library / LaunchDaemons /), ma con l'aiuto di: http://krypted.com/mac-security/apache2-umasks / scoperto che apache ha il suo script di ambiente specifico.
$ sudo vim /usr/sbin/envvars
umask 002
Forse altri demoni hanno metodi simili, che potrebbero aiutare in casi specifici.