Defina $PATH para /bin/false usuário

Defina $PATH para /bin/false usuário

Eu tenho um usuário sensu:

sensu:x:496:496:Sensu Monitoring Framework:/opt/sensu:/bin/false

É $PATH: /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin

Quero atualizar seu PATH, para que, enquanto o sensu acione meu script de verificação, ele use minha versão python instalada lateralmente (instalada em /usr/local/bin), portanto, quero definir o sensu PATHpara:

export PATH=$PATH:/usr/local/bin

No entanto, editei ambos /opt/sensu/.bashrce /opt/sensu/.profilenão funcionou; Eu li online (link), .bashrcserá fornecido somente após o login para usuários interativos/não interativos, no entanto, sensu como /bin/falseusuário, .profileserá fornecido após o login do usuário com bash, meu entendimento é que ele não possui um shell de login, mas como poderia Eu alcanço meu objetivo de definir $PATHisso?

Aliás, ao executar, sudo su - sensu -s /bin/bashvi que .profile foi obtido corretamente, no entanto, isso faz pouco sentido para mim, pois enquanto o cliente sensu executa meu script de verificação python, ele não terá bash.

Posso modificar /etc/passwdpara mudar /bin/falsepara /bin/bash, isso causará problemas, por favor?

Responder1

Como você já percebeu, o shell do seu usuário sensu é /bin/false, portanto ele não possui nenhum shell. Você pode fornecer um shell real como /bin/bash e, ao mesmo tempo, bloquear a conta (use passwd -l) para não poder fazer login com a conta remotamente, tornando-a um pouco mais segura.

Responder2

Para atualizar o $PATH, a seguinte linha precisa ser adicionada

exportar PATH=$PATH:/usr/local/bin

Dependendo do tipo de máquina e do servidor/cliente, o nome do arquivo mudaria:

Para máquina redhat:

  • cliente sensu

     /etc/sysconfig/sensu-client
    
  • servidor sensu

     /etc/sysconfig/sensu-server
    

Para máquinas Debian:

  • cliente sensu

     /etc/default/sensu-client
    
  • servidor sensu

     /etc/default/sensu-server
    

informação relacionada