Comment définir umask pour toute la session gnome?

Utilisation de Gnome 3.18. Je partage des files entre d'autres membres de la famille, mais l'umask par défaut sur ma distro (archlinux) est 0022 . Ainsi, chaque file / directory créé n'est pas inscriptible pour notre groupe commun.

J'ai essayé de mettre umask 0002 dans /etc/profile mais la session gnome utilise toujours 0022 . Cela fonctionne pour un shell de connection bash, cependant.

J'ai aussi essayé d'append cette ligne dans /etc/pam.d/system-auth : session required pam_umask.so umask=0002 Il a le même effet que celui de /etc/profile . j'ai essayé

Si je change manuellement le umask dans un shell gnome-terminal, alors je lance une application, par exemple gedit, puis les files créés ont les permissions voulues. Si je lance gedit à partir des menus gnome, ce n'est pas le cas. Donc, ma question est vraiment de définir l'umask pour la session gnome, et je ne peux pas find où le faire.

EDIT (pour répondre au commentaire de Gilles): J'utilise gdm 3.18 comme DM. J'ai aussi essayé d'append la ligne pam_umask dans /etc/pam.d/gdm-launch-environment . Tous les autres files gdm-* contiennent des gdm-* de session partir du file system-auth , ils ne devraient donc pas en avoir plus besoin. Cela ne change rien.

/etc/login.defs contient UMASK 077 mais aussi USERGROUPS_ENAB yes qui devrait définir l' umask sur 0077 ou 0007 pour les users dont le groupe primaire est le nom d'user.

Le seul file qui contient 022 pour umask dans /etc est /etc/profile mais c'était mon premier essai.

Comme pour /etc/Xsession.d , je n'ai pas ce directory. De plus, comme wayland est maintenant le server d'affichage par défaut, je ne suis pas sûr que l'umask devrait être défini dans le cadre de l'initialisation de X, même si je l'utilise encore moi-même.

Au lieu de changer l' umask vous pouvez utiliser l'option pam_umask pour pam_umask , avec cet user et ce groupe disposant des mêmes droits que la méthode unix classique pour partager des dossiers.

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

Certaines applications Gnome sont lancées par systemd --user , auquel cas umask est défini par systemd sur 0022 quelle que soit la valeur configurée pour pam_umask . Je ne suis pas au courant des solutions de contournement, mais j'ai ouvert un problème sur systemd github issue tracker. Ce problème est également signalé sur bugzilla Gnome .

Umask set using pam_umask fonctionne comme prévu pour les applications qui ne sont pas lancées par systemd --user .


Pour enquêter sur vous-même

Vous pouvez listr les process en cours d'exécution sur votre système sous forme d'arborescence (process parent / enfant) en utilisant:

 pstree -Tapu 

Trouver des PID pour: (1) l'instance de votre session de systemd –user ; (2) une application lancée par elle , telle que gedit, qui s'affichera en tant que process enfant à systemd –user ; et (3) un process de votre session non lancé par systemd –user .

Comparez les masques signalés dans procfs :

 grep Umask /proc/<pid>/status 

systemd –user lui-même (1) et les process non lancés par lui (3) devraient avoir le umask correct qui a été défini par pam_umask . Les process lancés par systemd –user (2) auront umask de 0022 .

Pour définir l'umask par défaut à l'échelle du système, vous devrez l'activer en premier lieu, ce qui est très bien expliqué ici:

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

Le lien ci-dessus est pour debian et ubuntu mais le même pour tous les autres systèmes Linux.

Pour l'activer, il faut append une ligne à /etc/pam.d/common-session :

 session optional pam_umask.so 

Une fois activé, vous pouvez le configurer dans:

 /etc/login.defs 

Je vois que vous avez déjà trouvé ce file donc tout ce que vous devez faire est de définir:

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

Et mettez-le UMASK à 0002 ou ce que vous voulez.

Cela définira la valeur par défaut à l'échelle du système, ce qui signifie que tous les users auront récupéré le masque à partir de là, sauf s'ils ne spécifient pas autrement dans leur file .profile ou .bashrc

Pour la session de connection: ajoutez umask 0002 à votre $HOME/.profile (ou /etc/profile ).

Pour la session Gnome: ajoutez umask 0002 à votre $HOME/.gnomerc

Je voulais juste append que les pam_umask pam_umask fournissent de très bonnes informations pour vous aider à comprendre d'où vient votre umask. Plus précisément:

pam_umask est un module PAM pour définir le masque de création de mode file de l'environnement actuel. L'umask affecte les permissions par défaut atsortingbuées aux nouveaux files créés.

Le module PAM essaie d'get la valeur umask des endroits suivants dans l'ordre suivant:

 · 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 

Comme quelqu'un l'a dit, vous devriez le configurer dans le file de common-session dans le directory /etc/pam.d .

Notez que les logins qui n'utilisent pas pam (tels que ceux qui utilisent getty ou login auront leur umask défini via login.defs .