Formas de definir umask no Ubuntu para processos daemon

8

Eu tenho um processo do servidor de daemon http (yaws) que gostaria que o servidor escrevesse novos arquivos com um umask de 002, para que outro usuário no mesmo grupo pudesse modificar, mover ou excluir arquivos criados pelo daemon processo. Isso é no Ubuntu 10.04.

Ao contrário do Apache, o yaws não possui uma opção de configuração para umask, então quais métodos existem para configurar o umask de qualquer processo daemon?

Eu encontrei esta resposta sobre como alterar o script de inicialização para adicionar %código%. Isso funcionou, mas não tenho certeza se a edição do script de inicialização é a melhor maneira de tornar isso fácil de documentar e configurar em várias máquinas.

Também encontrei referência ao módulo pam_umask aqui . Parece que isso permite que as configurações por usuário da umask sejam configuradas no campo GECOS de / etc / passwd.

Existem outras maneiras de definir o umask para processos do daemon? E qual seria o caminho recomendado?

    
por mp3foley 02.08.2010 / 07:11

3 respostas

2

Crie um arquivo .profile no diretório pessoal do daemon:

#!/bin/sh
umask 002

Você pode encontrar o diretório pessoal do daemon executando:

getent passwd daemon | awk -F':' '{ print $6; }'

Se isso não funcionar, a única outra solução em que posso pensar seria editar o script /etc/init.d .

    
por 02.08.2010 / 12:23
5

No Ubuntu 10.04, configurações globais de umask padrão podem ser controladas com o módulo pam_umask.

Alguns detalhes foram encontrados neste blog relacionados ao Debian em geral: link

O módulo pam_umask é instalado por padrão no Ubuntu 10.04, mas precisa ser configurado.

Edite /etc/pam.d/common-session, adicionando a linha:

session optional pam_umask.so umask=022

Em seguida, as configurações por usuário podem ser alteradas executando o comando:

sudo chfn -o "umask=002" daemon_username

para adicionar uma configuração de umask ao campo GECOS em / etc / passwd.

Isso só funciona para shells não interativos e não-login, como quando um script de inicialização do daemon é executado na inicialização.

Para configurações de shells de login de umask devem ser removidas de outros arquivos de configuração do shell, como /etc/profile, /etc/login.defs, ou diretório inicial de usuários .profile, .bashrc, etc. Caso contrário, as configurações do pam_umask serão substituídas. Veja a página do manual pam_umask para a ordem de configuração.

    
por 06.08.2010 / 05:34
1

Se o serviço for iniciado através da ferramenta "start-stop-daemon", o umask pode ser especificado no nível da linha de comando com o parâmetro "--umask" por exemplo:

log_daemon_msg "Starting $DESC" "$NAME"
if start-stop-daemon --start --oknodo --exec $DAEMON -b --chuid motion --umask 002 ; then
        log_end_msg 0
    else
        log_end_msg 1
        RET=1
    fi

Ajustar o script de início para ler esses detalhes de um arquivo de configuração pode ser mais transparente do que adicionar configurações baseadas no usuário - isso, é claro, depende do procedimento de inicialização usado para o daemon.

Mais informações podem ser recuperadas do homem-página: man start-stop-daemon

    
por 01.08.2013 / 13:51