Criei uma conta de serviço na minha máquina Redhat. O objetivo da conta é executar o script bash que criei.
O script bash basicamente verifica as propriedades do sistema como cpuinfo, ifconfig, status da rede, portas, processos, permissões de arquivo e status do dispositivo, etc.,
Agora, como faço para que minha conta de serviço execute apenas o script que eu criei, além de que esta conta não deve fazer nada, mesmo se alguém fizer login no meu servidor com as credenciais da conta de serviço, não poderá fazer nem mesmo o comandos básicos como ls,cp,mv,date etc. exceto a execução do script.
Responder1
com base no seu assunto decomo restringir o acesso de uma conta no Linux,
você criaria essa conta, bem como um novo grupo para ela, onde o nome do grupo poderia ser igual ao nome da conta, por exemplo. O resultado seria apenas esta conta de usuário neste novo grupo e seria completamente exclusiva, onde nada mais no sistema teria permissões de proprietário ou grupo relacionadas a este novo nome de conta de serviço e grupo de contas de serviço. Em seguida, defina seu script bash para pertencer a esta conta de serviço e ao nome do grupo de serviço. Além disso, defina o shell de login desta conta como /bin/false
ou /bin/nologin
.
Qual é a diferença entre /sbin/nologin e /bin/false
No entanto, lembre-se de que você acabou de criar uma nova conta com o único propósito de executar um scriptVOCÊcriada. Do ponto de vista da segurança, você acabou de realizar uma etapa extra de pouco valor, e agora qualquer pessoa além de você que vir essa nova conta de serviço em execução em segundo plano sem saber vai coçar a cabeça e se perguntar o que diabos é isso.
A melhor maneira é, já que o script é seu, mantê-lo como seu -você é um usuário válido e todos reconhecerão sua conta quando vinculada a algum processo em execução- e, em seguida, use o bit setuid no seu script para conceder permissões para executar as tarefas, já que a maior parte do que você mencionou para verificar as propriedades do sistema requer privilégios de root
Eu mencionei aproveitar o SETUID e isso estava incorreto porque você está usando umscript de shell, por razões que podem ser explicadas aqui: Permitir setuid em scripts shell
No entanto, se você escrever e compilar um programa para fazer as coisas que você precisa, cujo executável seria de sua propriedade, você poderá aproveitar as vantagens do SETUID nesse executável: