O umask 022
(ou 0022
) é a umask comumente usada para sistemas UNIX que usam o estilo tradicional de gerenciamento de contas de usuário . No estilo tradicional de gerenciamento de contas, quando um usuário é criado, o usuário recebe um grupo padrão que seria algo como uma equipe ou departamento, ou talvez tão simples quanto "usuários". Os diretórios setgid (poderíamos chamá-los de "diretórios de equipe") não funcionam como esperado, porque os arquivos não podem ser gravados por outros membros da equipe, a menos que o usuário os torne explicitamente graváveis. Isso não é muito prático, especialmente quando os arquivos são opacos para o usuário, como seria o caso, por exemplo, de um repositório git. Isso não é considerado um problema porque as ACLs fornecem uma solução perfeita para isso.
O umask 002
(ou 0002
) é a umask comumente usada para sistemas UNIX que usam UPG - User Private Groups . Ao adicionar um usuário em um sistema UPG, o sistema cria um grupo com o mesmo nome e id de grupo que o nome do usuário e o ID do usuário. UPG é uma abordagem inspirada pelo Debian de gerenciamento de contas de usuários. Como você acabou de experimentar, o UPG tem algumas vantagens quando se trata de diretórios setgid - contanto que os usuários não sobreponham sua umask. As ACLs estão protegidas dessa substituição.
A melhor solução é refatorar suas contas de usuário e grupo e ativar o UPG, então você está "seguro".
Aviso! Quando você toma um atalho e simplesmente altera a umask em /etc/login.defs
para 002
(ou 0002
) em vez de 022
(ou 0022
), esteja ciente que todos os arquivos criados por todos os usuários serão, por padrão, agora graváveis por todos os outros usuários no mesmo grupo. Este é um risco de segurança , então é quase certo que isso não é o que você quer.
Uma das razões para a introdução do sistema UPG foi que ele permite que os administradores configurem umask de 002
(ou 0002
) em vez de 022
(ou 0022
) para facilitar facilmente o bit setgid para o trabalho colaborativo em projetos sem o risco de segurança descrito.
Até onde eu sei, o OpenSUSE não oferece uma maneira de ativar o UPG durante a instalação ou o YaST e a única maneira de usar o UPG é usar a linha de comando para criar contas de usuário, depois de fazer a alteração necessária em /etc/login.defs
: Altere para ter USERGROUPS_ENAB yes
. Há uma armadilha aqui. O UPG só funciona corretamente se o ID do usuário e o id do grupo forem idênticos. Se você fizer essa mudança em um sistema em execução, primeiro terá que alterar os IDs dos grupos existentes, o que envolve reatribuir os grupos a todos os arquivos com esses grupos e, no contexto de LDAP, NFS e NIS, isso pode ser um pouco peludo.
Aqui estão algumas leituras adicionais sobre esse tópico, que achei úteis quando eu era novo no tópico de setgid vs. umask e UPGs: