Respostas:
Existem três maneiras normais de definir uma umask do usuário.
UMASK
em/etc/login.defs
pam_umask.so
à sua configuração do PAM em/etc/pam.d
/etc/profile
Não há diferença entre usuários do sistema e usuários normais nesse sentido.
Mas suponho que você esteja tentando iniciar um daemon com uma umask personalizada?
O problema é: todas as opções acima acontecem quando um usuário efetua login. Se você está executando um daemon, ele nunca efetua login. Ele é iniciado pelo init, então é executado como root ou é setuid
executado como o usuário do sistema especificado por você. .
Suas principais opções são:
umask
no seu script init (faça um grep umask /etc/init.d/*
por exemplo)start-stop-daemon
, passe a opção umaskOs usuários do sistema diferem dos 'normais' de três maneiras: expiração de senha, diretório inicial (os usuários do sistema não têm um) e UID (os usuários do sistema geralmente estão abaixo de um limite arbitrário).
No caso geral, você está quase totalmente sem sorte. Você pode usar o PAM para definir o umask, mas o PAM seleciona comportamentos com base em outras coisas além dessas três diferenças.
Em outras palavras, você não pode fazer o PAM distinguir entre usuários de 'sistema' e 'não pertencentes ao sistema'. Isso deixa você com duas opções:
Você pode usar o PAM para definir o umask para todos (por exemplo, fazer check-in /etc/login.defs
) e definir explicitamente o umask para usuários que não são do sistema /etc/bash.bashrc
(ou similares);
Ou você escreve seu próprio módulo PAM para fazer isso. Eu acho que isso seria bem-vindo por muitas pessoas, pois definir o umask é uma solicitação comum.
Por favor, tome esta resposta com uma pitada generosa de sal. Esse tipo de solicitação é bastante comum, e eu não ficaria surpreso se uma maneira melhor / adequada existir agora.
pam_umask
, mas talvez não pam_succeed_if
. Com pam_succeed_if , você pode aplicar qualquer outro módulo apenas a um determinado usuário ou grupo. Mas ainda acho que o PAM não ajudará aqui.
Como o @Mikel sugere, se você está tentando configurar uma conta do sistema que é um daemon, tente configurar o próprio daemon.
Cheguei a esta pergunta procurando como definir o umask para a conta _www no MacOS. Embora isso seja difícil, como as respostas acima sugerem, achei que poderia resolvê-lo configurando o serviço apache como (nesse caso) o usuário == um daemon.
Estranhamente, não consegui encontrar o script de inicialização (normalmente em /etc/init.d/, mas em um mac na Library / LaunchDaemons /), mas com a ajuda de: http://krypted.com/mac-security/apache2-umasks / descobri que o apache possui seu próprio script de ambiente específico.
$ sudo vim /usr/sbin/envvars
umask 002
Possivelmente outros daemons têm métodos semelhantes, o que pode ajudar em casos específicos.