Como eu crio um login de daemon interativo?

2

Eu executo um serviço em uma máquina debian / linux que roda na inicialização com uma sessão 'screen' à qual eu sempre posso me conectar.

Gostaria de criar um nome de usuário para o qual eu possa executar este serviço. No momento eu uso uma conta de login 'regular'. Eu gostaria da segurança adicional de um nome de usuário dedicado a este sevice (similar ao modo como 'nobody' ou 'web' são usados com o apache).

Requisitos:

  • Não é possível fazer login, local ou remotamente (sem senha para gerenciar)
  • Capacidade de usuários aprovados obterem acesso à sessão de tela e interagirem com o serviço.

Eu imagino que a solução terá uso criativo do su / sudo e os detalhes de como criar a conta.

    
por John McAleely 01.05.2009 / 13:22

3 respostas

5

Primeiro, crie a conta em que a sessão screen é executada (digamos que ela se chama screenimage ), bem como um grupo de usuários com permissão para usá-la (digamos screenusers ):

adduser --system --group screenimage
addgroup --system screenusers

Em seguida, para cada usuário autorizado a usá-lo, adicione-o ao grupo screenusers :

adduser USER screenusers

Em seguida, adicione usuários aprovados a /etc/sudoers : run visudo e adicione a linha

%screenusers ALL = (screenimage) /usr/bin/screen

ETA: para resolver as outras respostas nesta postagem: o --system cria contas sem shell ou senha. A linha sudoers significa que os usuários estão limitados a executar screen , como o usuário screenimage apenas.

    
por 01.05.2009 / 13:30
2

Criar o usuário é a parte fácil. Simplesmente adicione um usuário com o script adduser (isto é específico do debian, mas notei que ele está em suas tags) e edite a linha / etc / passwd resultante para esse usuário. Altere o x para um ! , o que faz com que nenhuma senha seja igual a válida. Altere /bin/bash para /bin/false para que, se alguém fizer login como esse usuário, não receba nenhum shell.

Quanto ao resto, realmente depende do serviço que você está tentando executar ou de como você precisa interagir com ele. Eu sinto que provavelmente há uma maneira melhor de resolver isso do que executá-lo em uma sessão de tela.

    
por 01.05.2009 / 13:27
1

OK, que tal (em /etc/rc.something):

sudo -u user screen -d -m service

e defina o shell usuário para /bin/false .

    
por 01.05.2009 / 13:29