Ci sono tre modi normali per impostare l'umask di un utente.
- Imposta
UMASK
in/etc/login.defs
- Aggiungi
pam_umask.so
alla tua configurazione PAM in/etc/pam.d
- Impostalo nei file di avvio della shell, ad es.
/etc/profile
Non c'è alcuna differenza tra gli utenti del sistema e gli utenti normali a questo proposito.
Ma suppongo che tu stia cercando di avviare un demone con un umask personalizzato?
Il problema è:tutte le opzioni di cui sopra si verificano quando un utente accede. Se stai eseguendo un demone, non accede mai. Viene avviato da init, quindi viene eseguito come root o chiama setuid
da eseguire come utente di sistema specificato.
Le tue opzioni principali sono:
- inserisci
umask
nel tuo script init (fai ungrep umask /etc/init.d/*
per un esempio) - configura init per avviare il programma con un umask personalizzato (systemd.exec upstart umask)
- se si utilizza
start-stop-daemon
, passa l'opzione umask - modificare il programma stesso per chiamare la funzione umask o la chiamata di sistema
Gli utenti di sistema differiscono da quelli "normali" in tre modi:scadenza della password, home directory (gli utenti di sistema non ne hanno una) e UID (gli utenti di sistema sono solitamente al di sotto di una soglia arbitraria).
Nel caso generale, sei quasi del tutto sfortunato. Puoi usare PAM per impostare l'umask, ma PAM seleziona i comportamenti in base a cose diverse da queste tre differenze.
In altre parole, non è possibile fare in modo che PAM distingua tra utenti "di sistema" e "non di sistema". Questo ti lascia con due opzioni:
-
O usi PAM per impostare l'umask per tutti (ad esempio controlla in
/etc/login.defs
), quindi imposta esplicitamente l'umask per gli utenti non di sistema in/etc/bash.bashrc
(o simili); -
Oppure scrivi il tuo modulo PAM per farlo. Penso che questo sarebbe apprezzato da molte persone, poiché l'impostazione di 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 ora esistesse un modo migliore/appropriato.