Eu quero escrever um daemon que inicie após a inicialização, antes do login, que faça comunicação em segundo plano por USB-rawhid com um microcontrolador Arduino .
Eu gostaria de executar este daemon como não-root.
Eu também gostaria de evitar a criação de um novo usuário, apenas para este daemon.
Existem usuários genéricos do sistema que poderiam ser (re)usados para isso?
Eu vejo no meu /etc/shadow
um usuário listado, nomeado daemon
mas...
# su daemon
This account is currently not available.
Atualmente estou segmentando:
- Ubuntu 21.04
systemd
- código nativo, em C, compilado para amd64
Seria um bônus se esse usuário genérico estivesse disponível nas instalações padrão do Debian e do Ubuntu.
Conforme mencionado por @Bib, a mensagem de erro que você recebe ao tentar alternar para o
daemon
usuário é porque o shell de login desse usuário está definido como/sbin/nologin
. Isso é para que ninguém possa trabalhar como esse usuário no console, o que é razoável para evitar interferências indesejadas nos serviços operados como esse usuário. Isso não significa quesystemd
não é possível executar um programa usando o UID desse usuário, portanto, você pode usar odaemon
usuário da maneira desejada.Observe, no entanto, que, embora pareça que o
daemon
usuário e o grupo foram originalmente introduzidos exatamente para esse propósito , atualmente é a abordagem recomendada criar usuários dedicados "com poucos privilégios" para serviços personalizados que você deseja configurar em seu computador.Como você declarou explicitamente que deseja executar o serviço usando
systemd
, você pode usar aUser=
diretiva para especificar o usuário com o qual o binário deve ser executado. Basta adicionarpara a
[Service]
seção do seu.service
arquivo. Consulte asystemd
documentação para obter mais informações.