Come impostare `umask` per l'intera sessione di gnome?


10

Usare Gnome 3.18. Condivido file tra altri membri della famiglia, ma umask predefinito sulla mia distro (archlinux) è 0022. Quindi ogni file / directory creata non è scrivibile per il nostro gruppo comune.

Ho provato a mettere umask 0002in /etc/profilema la sessione di gnome utilizza ancora 0022. Tuttavia, funziona per una shell bash di login.

Ho anche provato ad aggiungere questa riga /etc/pam.d/system-auth: session required pam_umask.so umask=0002 ha lo stesso effetto di quella in /etc/profile. Provai

Se cambio manualmente umask in una shell gnome-terminal, quindi lancio un'applicazione da essa, ad esempio gedit, quindi i file creati da essa hanno le autorizzazioni desiderate. Se lancio gedit dai menu di gnome, non lo fa. Quindi la mia questione è davvero di impostare l'umask per la sessione di gnome, e non riesco a trovare dove farlo.

EDIT (per rispondere al commento di Gilles): sto usando gdm 3.18 come DM. Ho anche provato ad aggiungere la riga pam_umask in /etc/pam.d/gdm-launch-environment. Tutti gli altri gdm-*file contengono include sessiondal system-authfile, quindi non dovrebbero aver bisogno di più. Non cambia nulla.

/etc/login.defscontiene UMASK 077ma anche USERGROUPS_ENAB yesquale dovrebbe impostare umasksu uno 0077o 0007per gli utenti il ​​cui gruppo principale è il nome utente.

L'unico file che contiene 022per umask in /etcè /etc/profilema quello è stato il mio primo tentativo.

Per quanto riguarda /etc/Xsession.d, non ho questa directory. Inoltre, poiché wayland è ora il server di visualizzazione predefinito, non sono sicuro che umask debba essere impostato come parte dell'inizializzazione X, anche se lo sto ancora usando da solo.


Quale display manager usi? (Questo è il programma in cui inserisci nome utente e password.) Gdm, lightdm, slim, xdm, kdm, ...? A seconda di come sono configurati Arch e il tuo DM, prova ad aggiungere un file /etc/Xsession.do un altro file /etc/pam.d(suppongo che tu voglia impostare questo a livello di sistema). O forse /etc/login.defs.
Gilles 'SO- smetti di essere malvagio' il

Le due risposte sono valide per ttyo sshaccessi e sono sostanzialmente le stesse, in realtà (usando pam_umask). Non funzionano con la mia sessione di gnomi. Quindi non posso dare la grazia a nessuno. Non so se questo è specifico per gnome su Xorg su archlinux. Proverò con altre distribuzioni quando avrò del tempo.
Christophe Drevet-Droguet,

1
C'è un thread simile sul forum di archlinux che tratta il problema: bbs.archlinux.org/viewtopic.php?id=207753 Sembra un bug in gdm ...

Ho finito per usare gli ACL, che è un modo molto migliore di controllare le autorizzazioni. Non è necessario modificare la maschera delle autorizzazioni più sicura predefinita.
Christophe Drevet-Droguet,

Risposte:


6

Vengono avviate alcune applicazioni Gnome systemd --user, nel qual caso umask è impostato da systemd su 0022indipendentemente dal valore configurato per pam_umask . Non sono a conoscenza di soluzioni alternative, ma ho aperto un problema sul tracker dei problemi di systemd github. Questo problema è riportato anche su bugzilla di Gnome .

Umask set using pam_umaskfunziona come previsto per le applicazioni non avviate da systemd --user.

Una soluzione alternativa è suggerita su Ubuntu bugzilla  per posizionare le sostituzioni del servizio systemd su tutte le applicazioni interessate.


Per indagare tu stesso

Puoi elencare i processi in esecuzione sul tuo sistema in un formato ad albero (processi padre / figlio) usando:

pstree -Tapu

Trova i PID per: (1) l'istanza di systemd --user della sessione ; (2) un'applicazione lanciata da essa , come gedit, che mostrerà come processo figlio a systemd --user ; e (3) un processo nella sessione non avviato da systemd --user .

Confronta umask riportati in procfs :

grep Umask /proc/<pid>/status

systemd --user stesso (1) e i processi non avviati da esso (3) dovrebbero avere l' umask corretta impostata da pam_umask . I processi avviati da systemd --user (2) avranno umask di 0022.


3

Il problema è quello citato da Sebasth. Ho provato molte cose, ma poi ho trovato una soluzione alternativa che consiste nel sovrascrivere l'UMask di dbus (per utente):

$ systemctl --user edit dbus

Nel file che si apre, basta scrivere:

[Service]
UMask=002 # This is the umask I want to use

Il file viene salvato in .config / systemd / user / dbus.service.d / override.conf e sovrascrive umask predefinito dbus, che presumo sia ereditato da systemd --user, poiché dbus viene avviato da esso. Esci e accedi di nuovo e le applicazioni gnome dovrebbero usare l'umask specificato. Solo una soluzione alternativa, ma funziona per me.


2

Invece cambiando il umaskpotresti usare l' usergroupsopzione per pam_umask, con questo utente e gruppo ha le stesse autorizzazioni, come il classico modo unix per condividere le cartelle.

# /etc/pam.d/login or
# /etc/pam.d/common-session or system-auth
session optional pam_umask.so usergroups

1
Se l'utente non è root e il nome utente è uguale al nome del gruppo primario , i bit del gruppo umask sono impostati per essere uguali ai bit del proprietario (esempi: 022 -> 002, 077 -> 007).
Christophe Drevet-Droguet,

Uso il gruppo primario come gruppo di condivisione. Con i gruppi di utenti, i file verranno creati con questo gruppo di utenti per impostazione predefinita e non modificabili da altri utenti.
Christophe Drevet-Droguet,

1
Vedo un modo, però: posso usare i gruppi di utenti e un gruppo secondario comune, quindi, sull'albero condiviso, aggiungere un bit "set group" per forzare questo gruppo comune su tutti i file e le cartelle creati. Comunque, proverò sul mio PC più tardi. Non sono sicuro che lo gnomo se ne occuperà comunque, perché ci vuole sempre 0022 come umask, non importa cosa stia funzionando per le sessioni tty.
Christophe Drevet-Droguet,

1

Per impostare umask di default a livello di sistema dovrai abilitarlo al primo posto, che qui è abbastanza ben spiegato:

http://manpages.debian.org/cgi-bin/man.cgi?query=pam_umask&sektion=8

Il link sopra è per debian e ubuntu ma lo stesso per tutti gli altri sistemi Linux.

Per abilitarlo umask (che forse è già in atto) è necessario aggiungere una riga a /etc/pam.d/common-session:

session optional pam_umask.so

Una volta abilitato, puoi configurarlo in:

/etc/login.defs

Vedo che hai già trovato questo file, quindi tutto ciò che devi fare è impostare:

# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK           077

E impostalo UMASK su 0002 o qualsiasi altra cosa tu voglia.

Questo imposterà il valore predefinito a livello di sistema, il che significa che tutti gli utenti dovranno prelevare l'umask da lì a meno che non abbiano impostato diversamente nel loro .profile o .bashrc


La ringrazio per la risposta. Dovrò provarlo. Non sono così ottimista perché ho già provato questo modulo PAM con un parametro inline "umask = 0002" e non ha funzionato (per Gnome, ha funzionato con altre shell di login). Proverò il tuo suggerimento.
Christophe Drevet-Droguet,

hai provato il modulo pam per system-auth not common-auth :-)
ostendali

3
È solo una questione di scelta della distribuzione dei nomi dei file. Conosco gli usi di Debian common-*per le impostazioni comuni. Arch, come RedHat, utilizza un system-authfile per questo. Ad ogni modo, ho provato il tuo suggerimento di aggiungere session optional pam_umask.soe e UMASK 002in /etc/login.defsCome mi aspettavo, e come pam_umask.so umask=0002, ha funzionato per una loginsessione tty (o tramite SSH) ma Gnome ha impostato un 0022umask come sempre. Gnome deve usare un'impostazione umask interna, oppure archlinux ne usa una ... Proverò un'altra distribuzione per vedere se anche il problema si presenta.
Christophe Drevet-Droguet,

1

Per la sessione di accesso: aggiungi umask 0002al tuo $HOME/.profile(o /etc/profile).

Per la sessione di Gnome: aggiungi umask 0002al tuo$HOME/.gnomerc


1

EDIT: Per fare in modo che systemd imposti l'umask della sessione di gnome, ho creato un file umask.conf in /etc/systemd/system/display-manager.service.d/ con le seguenti righe:


[Service]
UMask=0002

Dopo aver riavviato la macchina, questo ora consente a tutti i processi user.slicedi conformarsi all'umask che desideri. La disconnessione non è stata sufficiente per le modifiche, quindi consiglio di riavviare il computer prima di eseguire i test su umask di processo.

Informazioni aggiuntive:

  • Sistema operativo: CentOS7.4
  • DE: Gnome3

3
Se funziona, allora un file come /etc/systemd/system/gdm.service.d/umask.confsolo contenente [Service]\nUMask=0002dovrebbe essere sufficiente.
Christophe Drevet-Droguet,

E infatti lo fa! appena provato lì. La mia cartella / etc / systemd / system / contiene un link simbolico a gdm.service, quindi ho creato un display-manager.service.d / umask.conf e aggiunto la riga, ha funzionato perfettamente, aggiornando la risposta per includerla. Grazie tu @ ChristopheDrevet-Droguet
jamalm

0

Volevo solo aggiungere che le pam_umaskmanpage forniscono alcune informazioni piuttosto utili per aiutarti a capire da dove proviene la tua umask. In particolare:

pam_umask è un modulo PAM per impostare la maschera di creazione della modalità file dell'ambiente corrente. La umask influisce sulle autorizzazioni predefinite assegnate ai file appena creati.

Il modulo PAM tenta di ottenere il valore umask dalle seguenti posizioni nel seguente ordine:

·   umask= argument
·   umask= entry of the users GECOS field
·   pri= entry of the users GECOS field
·   ulimit= entry of the users GECOS field
·   UMASK= entry from /etc/default/login
·   UMASK entry from /etc/login.defs

Come qualcuno ha affermato, dovresti configurarlo nel common-sessionfile nella directory /etc/pam.d.

Nota che gli accessi che non usano pam (come quelli che usano gettyo loginavranno la loro umask impostata via login.defs.


0

Su un'installazione di Fedora 29 con Gnome ho scoperto che i programmi lanciati dal programma di avvio di Gnome lasciavano file leggibili in altro modo, 0022. Pam apparentemente difende su /etc/login.defs come notato sopra. Tuttavia, modificando la maschera lì, 0077, non è cambiato il comportamento di Gnome. Ho anche dovuto modificare / etc / profile e in / etc / bashrc - entrambi i quali lo stavano riportando a 0022.

Sarebbe bello se Fedora avesse un posto per questo, ma le voci in / etc / profile e / etc / bashrc impostano la maschera in modo diverso per gli utenti con ID sopra o sotto 200, quindi sembra che una maschera non vada bene per tutti.

Anche se questa è una soluzione per ora, il problema non è completamente risolto, poiché l'utente gnome non ha ancora modo di impostare la propria umask poiché viene applicato alle applicazioni eseguite dal programma di avvio di gnome. Sembra che Gnome dovrebbe avere un'opzione di configurazione per quella umask. (Forse lo fa, ma non l'ho trovato.)


0

Ho la soluzione almeno su Fedora 31:

sudo vi /etc/profile.d/umask.sh
umask <your_umask>

sudo vi /etc/login.defs
UMASK <your_umask>

sudo vi /usr/local/bin/systemd-user
/usr/lib/systemd/systemd --user

sudo chmod a+x /usr/local/bin/systemd-user

sudo vi /usr/lib/systemd/system/user@.service
ExecStart=-/usr/local/bin/systemd-user
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.