Como criar um usuário dedicado para executar um serviço?

1

Eu tenho um aplicativo que quero executar como um serviço no início do sistema, e esse aplicativo deve ser executado como um usuário específico (o aplicativo é Apache Karaf ). Eu tenho toda essa configuração, mas o usuário que estou usando para isso tem uma senha, então toda vez que o serviço é iniciado, a senha desse usuário deve ser inserida.

Atualmente, tenho um usuário com as seguintes entradas em /etc/passwd e /etc/shadow :

# /etc/passwd
karaf-test-user:x:1002:1002::/home/karaf-test-user:/usr/sbin/nologin

# /etc/shadow
karaf-test-user::15659:0:99999:7:::

Tanto quanto eu posso ver este usuário não tem uma senha definida, ele não pode entrar, mas ele tem um diretório de casa (isso é necessário para o aplicativo). No entanto, quando eu digito:

/etc/init.d/karaf-service start

Eu sou solicitado a senha desse usuário. Como posso evitar isso? Como posso modificar este usuário para não exigir uma senha neste momento? Eu encontrei esta resposta , mas parece-me hacky. Este é realmente o único caminho? Existe alguma prática recomendada para respeitar?

Estou executando no Ubuntu 12.04.1.

    
por Björn Pollex 15.11.2012 / 15:08

1 resposta

1

A maneira como resolvi foi criar o usuário dedicado com senha, mas sempre gerenciar o serviço como root, o que não requer uma senha para su . Para tornar isso seguro, criei um grupo karaf-admins e adicionei a seguinte entrada a sudoers :

%${KARAF_ADMINS} ALL=NOPASSWD: /etc/init.d/karaf-service

Isso permite que os membros desse grupo executem comandos como sudo /etc/init.d/karaf-service start como root sem inserir uma senha. O karaf-service -script em si mudará para o usuário dedicado que eu configurei. Contanto que os usuários em karaf-admins não tenham permissão para editar o script de serviço ou o link simbólico (que eles não deveriam ter), isso é perfeitamente seguro.

    
por Björn Pollex 16.11.2012 / 15:34