Usando o Gnome 3.18. Compartilho arquivos entre outros membros da família, mas o umask padrão na minha distribuição (archlinux) é 0022
. Portanto, todos os arquivos / diretórios criados não podem ser gravados em nosso grupo comum.
Eu tentei colocar umask 0002
, /etc/profile
mas a sessão do gnome ainda está usando 0022
. Porém, ele está trabalhando para um shell bash de login.
Também tentei adicionar esta linha /etc/pam.d/system-auth
:
session required pam_umask.so umask=0002
Ela tem o mesmo efeito que a da /etc/profile
. eu tentei
Se eu alterar o umask manualmente em um shell do terminal gnome, inicio um aplicativo, digamos gedit, e os arquivos criados por ele têm as permissões desejadas. Se eu iniciar o gedit nos menus do gnome, isso não acontece. Portanto, o meu problema é realmente definir o umask para a sessão do gnome, e não consigo encontrar onde fazê-lo.
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 /etc/pam.d/gdm-launch-environment
. Todos os outros gdm-*
arquivos contém inclui de session
partir do system-auth
arquivo, para que eles não devem precisar de mais. Isso não muda nada.
/etc/login.defs
contém UMASK 077
, mas também USERGROUPS_ENAB yes
que deve definir o umask
que quer 0077
ou 0007
para usuários cujas grupo primário é o nome de usuário.
O único arquivo que contém 022
para umask in /etc
é /etc/profile
mas essa foi minha primeira tentativa.
Quanto a /etc/Xsession.d
, não tenho esse 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 o estiver usando.
/etc/Xsession.d
ou um arquivo diferente/etc/pam.d
(suponho que você queira definir esse sistema em todo o sistema). Ou talvez/etc/login.defs
.tty
oussh
logins e são basicamente as mesmas, realmente (usandopam_umask
). Eles não funcionam com a minha sessão de gnomo. Então, eu não posso dar a recompensa a ninguém. Não sei se isso é específico para o gnome no Xorg no archlinux. Vou testar com outras distribuições quando tiver algum tempo.Respostas:
Alguns aplicativos Gnome são iniciados por
systemd --user
, caso em que umask é definido pelo systemd como0022
independentemente do valor configurado para pam_umask . Não conheço nenhuma solução alternativa, mas abri um problema no rastreador de problemas do systemd github. Esse problema também é relatado no bugzilla do Gnome .O uso de conjunto de máscaras
pam_umask
está funcionando conforme o esperado para aplicativos que não são iniciados porsystemd --user
.Uma solução alternativa é sugerida no bugzilla do Ubuntu para substituir o serviço systemd em 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:
Encontre PIDs para: (1) a instância da sua sessão do systemd --user ; (2) um aplicativo lançado por ele , como o gedit, que aparecerá como processo filho no systemd --user ; e (3) um processo em sua sessão não iniciado pelo systemd --user .
Compare umasks relatadas no procfs :
systemd --user propriamente dito (1) e processos não iniciados por ele (3) devem ter o umask correto, definido por pam_umask . Os processos iniciados pelo systemd --user (2) terão umask de
0022
.fonte
O problema é o mencionado por Sebasth. Eu tentei muitas coisas, mas depois encontrei uma solução alternativa que consiste em substituir a UMask (por usuário) do dbus:
No arquivo que é aberto, basta escrever:
O arquivo é salvo em .config / systemd / user / dbus.service.d / override.conf e substitui o umask padrão do dbus, que presumo ser herdado do systemd --user, pois o dbus é iniciado por ele. Faça logout e faça login novamente e os aplicativos gnome devem usar o umask especificado. Apenas uma solução alternativa, mas funciona para mim.
fonte
Em vez disso, altere a opção para a qual
umask
você pode usar , com esse usuário e grupo, as mesmas permissões que a maneira clássica do unix de compartilhar pastas.usergroups
pam_umask
fonte
Para definir o padrão umask em todo o sistema, você deverá habilitá-lo em primeiro lugar, o que é bastante explicado aqui:
O link acima é para debian e ubuntu, mas o mesmo para todos os outros sistemas linux.
Para habilitá-lo umask (que talvez já esteja no lugar), você precisa adicionar uma linha a
/etc/pam.d/common-session
:Depois de ativado, você pode configurá-lo em:
Vejo que você já encontrou esse arquivo, então tudo o que você precisa fazer é definir:
E configure 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 o umask a partir daí, a menos que não tenham definido especificamente o contrário em seus perfis .profile ou .bashrc
fonte
common-*
para configurações comuns. Arch, como RedHat, usa umsystem-auth
arquivo para isso. Enfim, tentei sua sugestão de adicionarsession optional pam_umask.so
eUMASK 002
entrar/etc/login.defs
Como eu esperava, e assim comopam_umask.so umask=0002
funcionou para umalogin
sessão tty (ou através do SSH), mas o Gnome definiu uma0022
umask como sempre. O Gnome deve usar uma configuração interna umask, ou o archlinux está usando uma… tentarei outra distribuição para ver se o problema também ocorre.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
fonte
EDIT: Para que o systemd defina o umask da sessão do gnome, criei um arquivo umask.conf em /etc/systemd/system/display-manager.service.d/ com as seguintes linhas:
Depois de reiniciar a máquina, isso agora permite que todos os processos abaixo
user.slice
estejam em conformidade com o umask que você deseja. O logout não foi suficiente para que as alterações ocorram, portanto, aconselho reiniciar a máquina antes de executar os testes no processo umasks. Informações adicionais:
fonte
/etc/systemd/system/gdm.service.d/umask.conf
contendo apenas[Service]\nUMask=0002
deve ser suficiente.Só queria acrescentar que as
pam_umask
páginas de manual fornecem algumas informações muito boas para ajudá-lo a descobrir de onde vem a sua umask. Especificamente:Como alguém afirmou, você deve configurá-lo no
common-session
arquivo no diretório/etc/pam.d
.Observe que os logons que não usam pam (como aqueles que usam
getty
oulogin
terão o umask definido vialogin.defs
.fonte
Em uma instalação do Fedora 29 com o Gnome, descobri que os programas lançados a partir do iniciador do Gnome deixaram outros arquivos legíveis, 0022. Pam aparentemente adia para /etc/login.defs como observado acima. No entanto, editar a máscara lá, 0077, não mudou o comportamento do Gnome. Eu também tive que editar o / etc / profile e o / etc / bashrc - ambos os quais estavam definindo-o como 0022.
Seria bom se o Fedora tivesse um lugar para isso, mas as entradas em / etc / profile e / etc / bashrc definem a máscara de maneira diferente para usuários com IDs acima ou abaixo de 200, então parece que uma máscara não serve para todos.
Embora essa seja uma correção por enquanto, o problema não está completamente resolvido, pois o usuário do gnome ainda não tem como definir sua própria umask, pois é aplicada a aplicativos executados a partir do iniciador do gnome. Parece que o Gnome deve ter uma opção de configuração para esse umask. (Talvez sim, mas não o encontrei.)
fonte
Eu tenho a solução alternativa pelo menos no Fedora 31:
fonte