Como definir 'umask' para toda a sessão do gnome?

9

Usando o Gnome 3.18. Eu compartilho arquivos entre outros membros da família, mas o umask padrão na minha distro (archlinux) é 0022 . Portanto, todos os arquivos / diretórios criados não podem ser gravados em nosso grupo comum.

Eu tentei colocar umask 0002 em /etc/profile , mas a sessão do gnome ainda está usando 0022 . Ele está trabalhando para um shell bash de login, no entanto.

Eu também tentei adicionar esta linha em /etc/pam.d/system-auth : %código% Tem o mesmo efeito que o de session required pam_umask.so umask=0002 . Eu tentei

Se eu mudar o umask manualmente em um shell do terminal gnome, eu inicio um aplicativo a partir dele, digamos gedit, e os arquivos criados por ele têm as permissões necessárias. Se eu iniciar o gedit nos menus do gnome, isso não acontece. Então, minha questão é realmente definir a umask para a sessão do gnome, e não consigo encontrar onde fazer isso.

EDIT (para responder ao comentário de Gilles): Estou usando o gdm 3.18 como o DM. Eu também tentei adicionar a linha pam_umask em /etc/profile . Todos os outros arquivos /etc/pam.d/gdm-launch-environment contêm inclusões de gdm-* do arquivo session , portanto, eles não precisarão de mais. Não muda nada.

system-auth contém /etc/login.defs , mas também UMASK 077 , que deve definir o USERGROUPS_ENAB yes como umask ou 0077 para usuários cujo grupo principal é o nome de usuário.

O único arquivo que contém 0007 para umask em 022 é /etc , mas essa foi minha primeira tentativa.

Quanto a /etc/profile , não tenho este diretório. Além disso, como o wayland agora é o servidor de exibição padrão, não tenho certeza se o umask deve ser definido como parte da inicialização do X, mesmo se eu ainda estiver usando ele mesmo.

    
por Christophe Drevet-Droguet 10.01.2016 / 11:45

7 respostas

4

Alguns aplicativos do Gnome são lançados por systemd --user , em cujo caso umask é definida pelo systemd como 0022 , independentemente do valor configurado para pam_umask . Não tenho conhecimento de nenhuma solução alternativa, mas abri um problema no problema do github do systemd rastreador. Esse problema também é relatado no bugzilla do Gnome .

O Umask definido usando pam_umask está funcionando conforme o esperado para aplicativos que não foram iniciados por systemd --user .

Uma solução alternativa é sugerida no bugzilla do Ubuntu para colocar O serviço systemd substitui todos os aplicativos afetados.

Para investigar isso você mesmo

Você pode listar os processos em execução no seu sistema em um formato de árvore (processos pai / filho) usando:

pstree -Tapu

Encontre PIDs para: (1) a instância da sua sessão de systemd --user ; (2) um aplicativo lançado por ele , como o gedit, que será mostrado como um processo filho para systemd --user ; e (3) um processo na sua sessão não iniciado pelo systemd --user .

Comparar unsks relatados em procfs :

grep Umask /proc/<pid>/status

systemd --user propriamente dito (1) e processos não lançados por (3) devem ter o umask correto que foi definido por pam_umask . Processos lançados por systemd --user (2) terão umask de 0022 .

    
por 18.07.2017 / 18:40
2

Em vez de alterar o umask , você pode usar a opção usergroups para pam_umask , com esse usuário e grupo com as mesmas permissões, como a maneira clássica de compartilhar pastas no unix.

# /etc/pam.d/login or
# /etc/pam.d/common-session or system-auth
session optional pam_umask.so usergroups
    
por 18.01.2016 / 22:03
2

O problema é o mencionado por Sebasth. Eu tentei muitas coisas, mas depois eu encontrei uma solução que consiste em substituir o UMask (por usuário) do dbus:

$ systemctl --user edit dbus

No arquivo que é aberto, basta escrever:

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

O arquivo é salvo em .config / systemd / user / dbus.service.d / override.conf e substitui a umask padrão do dbus, que presumo ser herdada do systemd --user, já que o dbus é iniciado por ela. Basta efetuar logout e login novamente e os aplicativos do gnome devem usar o umask especificado. Apenas uma solução, mas funciona para mim.

    
por 15.12.2017 / 14:34
1

Para a sessão de login: adicione umask 0002 ao seu $HOME/.profile (ou /etc/profile ).

Para a sessão do Gnome: adicione umask 0002 ao seu $HOME/.gnomerc

    
por 17.07.2016 / 02:35
1

EDIT: Para obter o systemd para configurar a umask da sessão do gnome, criei um arquivo umask.conf em /etc/systemd/system/display-manager.service.d/ com as seguintes linhas:


[Service]
UMask=0002

Após a reinicialização da máquina, isso agora permite que todos os processos em user.slice estejam em conformidade com o umask que você deseja. O logout não foi suficiente para que as alterações ocorressem, então eu aconselharia a reinicializar sua máquina antes de executar os testes em processar filas.

Informações adicionais:

  • SO: CentOS7.4
  • DE: Gnome3
por 19.01.2018 / 14:18
0

Para definir o padrão umask para todo o sistema, você terá que habilitá-lo em primeiro lugar, o que é bem explicado aqui:

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

O link acima é para debian e ubuntu, mas o mesmo para todos os outros sistemas Linux.

Para habilitá-lo umask (que talvez já esteja em vigor), você precisa adicionar uma linha a /etc/pam.d/common-session :

session optional pam_umask.so

Uma vez ativado, você pode configurá-lo em:

/etc/login.defs

Vejo que você já encontrou este arquivo, então tudo que você precisa fazer é definir:

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

E defina UMASK para 0002 ou o que você quiser.

Isso definirá o valor padrão em todo o sistema, o que significa que todos os usuários terão de pegar o umask de lá, a menos que não especifiquem de outra forma em .profile ou .bashrc

    
por 12.01.2016 / 18:46
0

Só queria acrescentar que as% man_de% manpages fornecem algumas informações muito boas para ajudá-lo a descobrir de onde vem sua umask. Especificamente:

pam_umask is a PAM module to set the file mode creation mask of the current environment. The umask affects the default permissions assigned to newly created files.

The PAM module tries to get the umask value from the following places in the following order:

·   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 alguém afirmou, você deve configurar isso no arquivo pam_umask no diretório common-session .

Observe que os logins que não usam pam (como aqueles que usam /etc/pam.d ou getty terão seu umask definido via login .

    
por 18.07.2017 / 18:48

Tags