Executando um daemon como um usuário não privilegiado

3

Estou tentando configurar um servidor de aplicativos Thin Ruby no meu Ubuntu VPS. Eu criei uma conta específica, instalei o rbenv sob ele junto com todas as gemas.

Estou procurando uma maneira conveniente de obter os seguintes objetivos:

  1. Execute o aplicativo Thin Rack na minha conta de usuário sem privilégios.
  2. Faça o aplicativo ser executado como um daemon
  3. O daemon deve ser executado automaticamente sempre que o sistema inicializar
  4. Torne o daemon reiniciável
  5. Torne o aplicativo acessível para o Nginx por meio de um soquete de domínio unix.

Objetivo dois e três são os mais complicados. É possível definir scripts para um usuário ser executado como esse usuário sempre que o sistema for inicializado?

    
por Niels B. 12.06.2013 / 21:22

2 respostas

5

Para iniciar no momento da inicialização, adicione uma linha ao seu arquivo crontab de usuários (usando crontab -e ):

@reboot / path / to / your / script com parâmetros

O conteúdo real desse script varia de acordo com as suas necessidades. Pode apenas iniciar o daemon, ou pode iniciar um agente um pouco mais inteligente que você passe uma configuração. Dessa forma, você pode ter seu serviço reiniciado automaticamente se, por algum motivo, ele morrer inesperadamente.

    
por 12.06.2013 / 21:36
2

Você só precisa adaptar o modelo de script de início da sua distro. Tenho certeza de que todos têm esses modelos.

Se você usar o systemd, poderá fornecer ao usuário para ser usado no arquivo da unidade.

Se você usar os scripts de init antigos, o script provavelmente usará startproc ou start_daemon . Você pode adicionar parâmetros a esses wrappers para configurar o ID do usuário.

Ou você cria o programa SUID (não para raiz, mas o usuário pretendido) e restringe os direitos de execução para usuários confiáveis (ou apenas para root).

    
por 12.06.2013 / 21:36