Como definir umask para um usuário do sistema?

12

É possível definir o umask para um usuário do sistema (criado com useradd --system username )?

    
por sid_com 11.04.2012 / 13:35

3 respostas

11

Existem três formas normais de definir a umask do usuário.

  1. Defina UMASK em /etc/login.defs
  2. Adicione pam_umask.so à sua configuração do PAM em /etc/pam.d
  3. Defina nos arquivos de inicialização do shell, por exemplo %código%

Não há diferença entre usuários do sistema e usuários normais em relação a isso.

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ê estiver executando um daemon, ele nunca efetuará login. Ele será iniciado pelo init e executado como root ou chama /etc/profile para ser executado como o usuário do sistema que você especificar.

Suas principais opções são:

  1. coloque setuid no seu script de inicialização (faça um umask para um exemplo)
  2. configure o init para iniciar o programa com uma umask customizada ( systemd.exec < umsk="http://upstart.ubuntu.com/wiki/Stanzas#umask"> umask upstart )
  3. se estiver usando grep umask /etc/init.d/* , passe a opção umask
  4. modifique o próprio programa para chamar a função umask ou a chamada do sistema
por 11.04.2012 / 22:47
2

Os usuários do sistema diferem dos "normais" de três maneiras: expiração da senha, diretório inicial (os usuários do sistema não têm um) e UID (os usuários do sistema geralmente ficam abaixo de algum 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 com que o PAM faça distinção entre usuários de "sistema" e "não de sistema". Isso deixa você com duas opções:

  • Você usa o PAM para definir o umask para todos (por exemplo, check-in /etc/login.defs ) e, em seguida, define explicitamente o umask para usuários que não são do sistema em /etc/bash.bashrc (ou similar);

  • Ou você escreve seu próprio módulo PAM para fazer isso. Eu acho que isso seria bem recebido por muitas pessoas, já que definir o umask é um pedido comum.

Por favor, tome esta resposta com uma generosa pitada de sal. Esse tipo de solicitação é bastante comum e eu não ficaria surpreso se uma maneira melhor / apropriada existir agora.

    
por 11.04.2012 / 18:23
1

Como sugere o @ Mikel, se você está tentando configurar uma conta do sistema que é um daemon, tente configurar o próprio daemon.

Eu cheguei a essa questão olhando como definir o umask para a conta _www no MacOS. Embora isso seja difícil, como as respostas acima sugerem, descobri que poderia resolvê-lo configurando o serviço apache como (neste caso) o usuário == um daemon.

Eu estranhamente não consegui encontrar o script de inicialização (normalmente em /etc/init.d/ mas em um mac em Library / LaunchDaemons /), mas com a ajuda de: descobriu que o apache tem 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.

    
por 14.02.2015 / 00:44