Come impostare umask per un utente di sistema?


14

È possibile impostare il umaskper un utente di sistema (creato con useradd --system username)?

Risposte:


14

Esistono tre modi normali per impostare umask di un utente.

  1. Situato UMASKin/etc/login.defs
  2. Aggiungi pam_umask.soalla tua configurazione PAM in/etc/pam.d
  3. Impostalo nei file di avvio della shell, ad es /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 setuidper essere eseguito come l'utente di sistema specificato .

Le tue opzioni principali sono:

  1. inserisci il umasktuo script init (fai grep umask /etc/init.d/*un esempio)
  2. configura init per avviare il programma con un umask personalizzato ( systemd.exec upstart umask )
  3. se si utilizza start-stop-daemon, passare l' opzione umask
  4. modificare il programma stesso per chiamare la funzione umask o la chiamata di sistema

Sai come impostare un umask per SSHFS (sftp-server) su Arch Linux (che usa systemd)? Come hai sottolineato, le prime 3 opzioni che hai elencato non hanno alcun effetto.
MountainX-for-Monica,

2

Gli 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.


1
Esiste già un modulo PAM chiamato pam_umask . Il problema è che funziona solo al momento dell'accesso.
Mikel,

Ah, penso che tu lo sapessi 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.
Mikel,

1

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.


Ma come hai potuto scrivere "umask 002" in questo file?!?!? Ricevo un errore di autorizzazione negata anche come root / sudo e secondo apple anche a root non è permesso scrivere / modificare nulla nella directory / usr / sbin support.apple.com/en-gb/HT204899
Schurik
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.