¿Cómo configurar `umask` para toda la sesión de gnome?


10

Usando Gnome 3.18. Comparto archivos entre otros miembros de la familia, pero la umask predeterminada en mi distribución (archlinux) es 0022. Por lo tanto, cada archivo / directorio creado no se puede escribir para nuestro grupo común.

Traté de poner umask 0002en /etc/profilepero la sesión de GNOME sigue utilizando 0022. Sin embargo, está funcionando para un shell bash de inicio de sesión.

También traté de agregar esta línea /etc/pam.d/system-auth: session required pam_umask.so umask=0002 tiene el mismo efecto que el de adentro /etc/profile. Lo intenté

Si cambio la umask manualmente en un shell gnome-terminal, entonces ejecuto una aplicación desde allí, digamos gedit, entonces los archivos creados por ella tienen los permisos deseados. Si ejecuto gedit desde los menús de gnome, no lo hace. Entonces, mi problema es realmente configurar el umask para la sesión de gnome, y no puedo encontrar dónde hacerlo.

EDITAR (para responder el comentario de Gilles): estoy usando gdm 3.18 como DM. También intenté agregar la línea pam_umask en /etc/pam.d/gdm-launch-environment. Todos los demás gdm-*archivos contienen incluye de sessiondesde el system-autharchivo, por lo que no deberían necesitar más. No cambia nada.

/etc/login.defscontiene UMASK 077, sino también USERGROUPS_ENAB yesque debe establecer el umaskque cualquiera 0077o 0007para los usuarios cuyo grupo principal es el nombre de usuario.

El único archivo que contiene 022para umask /etces /etc/profilepero ese fue mi primer intento.

En cuanto a /etc/Xsession.d, no tengo este directorio. Además, como wayland es ahora el servidor de visualización predeterminado, no estoy seguro de que la umask deba configurarse como parte de la inicialización de X, incluso si todavía la estoy usando.


¿Qué administrador de pantalla usas? (Ese es el programa donde ingresas tu nombre de usuario y contraseña.) Gdm, lightdm, slim, xdm, kdm, ...? Dependiendo de cómo estén configurados Arch y su DM, intente agregar un archivo /etc/Xsession.do un archivo diferente /etc/pam.d(supongo que desea configurarlo en todo el sistema). O tal vez /etc/login.defs.
Gilles 'SO- deja de ser malvado'

Las dos respuestas son válidas para ttyo sshinicios de sesión, y son básicamente el mismo, realmente (usando pam_umask). No funcionan con mi sesión de gnomos. Entonces no puedo dar la recompensa a nadie. No sé si esto es específico de gnome en Xorg en archlinux. Probaré con otras distribuciones cuando tenga algo de tiempo.
Christophe Drevet-Droguet

1
Hay un hilo similar en el foro de archlinux que trata el problema: bbs.archlinux.org/viewtopic.php?id=207753 Parece un error en gdm ...

Terminé usando ACL, que es una forma mucho mejor de controlar los permisos. No es necesario cambiar la máscara de permisos predeterminada más segura.
Christophe Drevet-Droguet el

Respuestas:


6

Algunas aplicaciones de Gnome son iniciadas por systemd --user, en cuyo caso umask es configurado por systemd 0022independientemente del valor configurado para pam_umask . No conozco ninguna solución, pero abrí un problema en el rastreador de problemas de systemd github. Este problema también se informa en Gnome bugzilla .

Umask set using pam_umaskfunciona como se espera para las aplicaciones que no se inician systemd --user.

Se sugiere una solución alternativa en Ubuntu bugzilla  para colocar las anulaciones del servicio systemd en todas las aplicaciones afectadas.


Para investigar esto usted mismo

Puede enumerar los procesos que se ejecutan en su sistema en un formato de árbol (procesos padre / hijo) usando:

pstree -Tapu

Encuentre los PID para: (1) la instancia de systemd --user de su sesión ; (2) una aplicación lanzada por él , como gedit, que se mostrará como un proceso secundario para systemd --user ; y (3) un proceso en su sesión no iniciado por systemd --user .

Compare umasks reportados en procfs :

grep Umask /proc/<pid>/status

systemd --user sí mismo (1) y los procesos no lanzados por él (3) deberían tener la umask correcta que fue establecida por pam_umask . Los procesos lanzados por systemd --user (2) tendrán umask de 0022.


3

El problema es el mencionado por Sebasth. Intenté muchas cosas, pero luego encontré una solución que consiste en sobrescribir la UMask (por usuario) de dbus:

$ systemctl --user edit dbus

En el archivo que se abre, solo escribe:

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

El archivo se guarda en .config / systemd / user / dbus.service.d / override.conf y anula la umask predeterminada de dbus, que supongo que se hereda de systemd --user, ya que dbus se inicia. Simplemente cierre sesión e inicie sesión nuevamente y las aplicaciones gnome deberían usar la umask especificada. Solo una solución, pero funciona para mí.


2

En cambio, cambiar la opción para la umaskque podría usar , con este usuario y grupo tiene los mismos permisos, que la forma clásica de Unix para compartir carpetas.usergroupspam_umask

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

1
Si el usuario no es root y el nombre de usuario es el mismo que el nombre del grupo primario , los bits del grupo umask se configuran para ser los mismos que los bits del propietario (ejemplos: 022 -> 002, 077 -> 007).
Christophe Drevet-Droguet

Yo uso el grupo primario como el grupo para compartir. Con los grupos de usuarios, los archivos se crearán con este grupo de usuarios de manera predeterminada, y otros usuarios no podrán editarlos.
Christophe Drevet-Droguet

1
Sin embargo, veo una manera: puedo usar grupos de usuarios y un grupo secundario común, y luego, en el árbol compartido, agregar un bit de "grupo establecido" para forzar este grupo común en todos los archivos y carpetas creados. De todos modos, lo intentaré en mi PC más tarde. No estoy seguro de que a gnome le importe eso de todos modos, porque siempre toma 0022 como umask, sin importar lo que funcione para las sesiones de tty.
Christophe Drevet-Droguet

1

Para establecer umask predeterminado en todo el sistema, deberá habilitarlo en primer lugar, lo que se explica bastante bien aquí:

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

El enlace de arriba es para Debian y Ubuntu pero igual para todos los otros sistemas Linux.

Para habilitarlo umask (que tal vez ya esté en su lugar) necesita agregar una línea a /etc/pam.d/common-session:

session optional pam_umask.so

Una vez habilitado, puede configurarlo en:

/etc/login.defs

Veo que ya encontraste este archivo, así que todo lo que necesitas hacer es configurar:

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

Y configúrelo UMASK en 0002 o lo que quiera.

Esto establecerá el valor predeterminado en todo el sistema, lo que significa que todos los usuarios tendrán que seleccionar la máscara de usuario desde allí a menos que no establezcan específicamente lo contrario en su .profile o .bashrc


Gracias por su respuesta. Tendré que intentar eso. No soy tan optimista porque ya probé este módulo PAM con un parámetro en línea "umask = 0002" y no funcionó (para Gnome, sin embargo, funcionó para otros shells de inicio de sesión). Probaré tu sugerencia.
Christophe Drevet-Droguet

intentaste el módulo pam para system-auth not common-auth :-)
ostendali

3
Es solo una cuestión de distribución de los nombres de archivo. Sé los usos de Debian common-*para configuraciones comunes. Arch, como RedHat, usa un system-autharchivo para esto. De todos modos, he intentado su sugerencia de añadir session optional pam_umask.soy y UMASK 002en la /etc/login.defsmedida de lo que esperaba, y como con pam_umask.so umask=0002, que trabajaba para una TTY loginsesión (o a través de SSH), pero Gnome puse una 0022máscara de usuario como siempre. Gnome debe usar una configuración interna de umask, o archlinux está usando una ... Probaré otra distribución para ver si el problema también surge.
Christophe Drevet-Droguet

1

Para la sesión de inicio de sesión: agregue umask 0002a su $HOME/.profile(o /etc/profile).

Para la sesión de Gnome: agregue umask 0002a su$HOME/.gnomerc


1

EDITAR: Para que systemd configure la umask de la sesión de gnome, creé un archivo umask.conf en /etc/systemd/system/display-manager.service.d/ con las siguientes líneas:


[Service]
UMask=0002

Después de reiniciar la máquina, esto ahora permite que todos los procesos se user.sliceajusten a la máscara de usuario que desea. El cierre de sesión no fue suficiente para que se produjeran los cambios, por lo que recomendaría reiniciar su máquina antes de realizar las pruebas en las máscaras de proceso.

Información adicional:

  • OS: CentOS7.4
  • DE: Gnome3

3
Si funciona, entonces un archivo como /etc/systemd/system/gdm.service.d/umask.confcontener solo [Service]\nUMask=0002debería ser suficiente.
Christophe Drevet-Droguet el

Y de hecho lo hace! solo lo probé allí. mi carpeta / etc / systemd / system / contiene un enlace simbólico a gdm.service, así que creé un display-manager.service.d / umask.conf y agregué la línea, esto funcionó perfecto, y actualicé la respuesta para incluirla. Gracias you @ ChristopheDrevet-Droguet
jamalm

0

Solo quería agregar que las pam_umaskpáginas de manual proporcionan información bastante buena para ayudarlo a descubrir de dónde proviene su umask. Específicamente:

pam_umask es un módulo PAM para configurar la máscara de creación de modo de archivo del entorno actual. La umask afecta los permisos predeterminados asignados a los archivos recién creados.

El módulo PAM intenta obtener el valor de umask de los siguientes lugares en el siguiente orden:

·   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

Como alguien ha dicho, debe configurar esto en el common-sessionarchivo en el directorio /etc/pam.d.

Tenga en cuenta que los inicios de sesión que no usan pam (como los que usan gettyo logintendrán su umask configurado a través de login.defs.


0

En una instalación de Fedora 29 con Gnome, descubrí que los programas lanzados desde el iniciador de Gnome dejaban otros archivos legibles, 0022. Pam aparentemente difiere a /etc/login.defs como se indicó anteriormente. Sin embargo, editar la máscara allí, 0077, no cambió el comportamiento de Gnome. También tuve que editar / etc / profile y / etc / bashrc, los cuales lo volvieron a configurar en 0022.

Sería bueno si Fedora tuviera un lugar para esto, pero las entradas en / etc / profile y / etc / bashrc configuran la máscara de manera diferente para los usuarios con ID superiores o inferiores a 200, por lo que parece que una máscara no sirve para todos.

Aunque esto es una solución por ahora, el problema no está completamente resuelto, ya que el usuario de gnome todavía no tiene forma de configurar su propia umask, ya que se aplica a las aplicaciones que se ejecutan desde el iniciador de gnome. Parece que Gnome debería tener una opción de configuración para esa umask. (Tal vez sí, pero no lo encontré).


0

Tengo la solución al menos en 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.