Um sistema configurado corretamente, como o seu, não permite logins bem-sucedidos (mesmo com su ou sudo -u ) como bind . Mas você pode executar comandos como bind - até mesmo um shell, se precisar.
Por que isso acontece (e deve acontecer)
O usuário bind não é um usuário que deve poder efetuar login. Isso ocorre por design.
bind:x:107:119::/var/cache/bind:/bin/false
/bin/false é o shell de login de bind . false não é um shell real como sh ou bash . Em vez disso, ele não executa nenhuma ação e sinaliza para o processo de chamada que ele falhou. Configurar um usuário com /bin/false como seu shell é uma das formas padrão de possibilitar (potencialmente) a autenticação do usuário para executar comandos, mas não é possível fazer login efetivamente como usuário. Quando um usuário tem /bin/false como seu shell, isso é o que acontece quando o usuário faz logon:
- A autenticação ocorre. Supondo que seja bem sucedido ...
- O shell,
/bin/false, é chamado. - O shell sai imediatamente.
- Como o shell de login foi encerrado, a sessão de login foi encerrada.
- Agora você está de volta a ser
root, por isso, comandos comowhoamimostram você comoroot.
Se você alterar sua configuração para possibilitar que bind faça o login, dependendo de como você faz isso e outros detalhes de sua configuração, você poderá tornar seu sistema inseguro. Você quase certamente não deveria fazer isso.
Por que isso acontece mesmo com /bin/bash substituindo /bin/false
Se você modificou /etc/passwd diretamente, acredito que seja possível que os dados armazenados em cache não tenham sido atualizados. Se você reiniciar, o problema provavelmente será resolvido. Mas, como explicado acima, isso não é realmente uma boa ideia. Se você ainda não fez isso, recomendo (cuidadosamente) editar essa linha de volta para a versão original (com /bin/false ).
Comandos em Execução Como bind
Em vez disso, se você realmente precisar executar um comando como o usuário bind , use sudo para executar o comando específico:
sudo -u bind command
E se você realmente precisar executar um shell de login como o usuário bind , use sudo para executar um shell como bind e diga ao shell para agir como um login inicial concha:
sudo -u bind bash -l
Substitua bash pelo nome do shell que você deseja usar, se diferente.
O sinal -l faz com que bash aja como um shell de login (consulte man bash ). Isso corresponde funcionalmente a su - bind (consulte man su ) ou sudo -i bind (consulte man sudo ). Exceto, o shell especificado (neste exemplo, bash ) é executado, em vez de /bin/false .
Se você deseja algo que corresponda a su bind ou sudo -s bind (um shell que não é um shell de login e que mantém as variáveis de ambiente do chamador, incluindo HOME ), mas executa /bin/bash em vez de /bin/false , use este comando:
sudo -u bind bash
Se por algum motivo você quisesse usar su (executando como root ) para executar um comando como bind , você pode fazer isso com o -c flag:
su bind -c command
Coisas que não devem ser feitas
- É possível usar
usermodpara alterarbind' s shell de/bin/falsepara outra coisa. Isso possibilitaria que os administradores usassemsudo -u -i bindousudo -u -s binderootusassemsu bind, pelo menos, se feito corretamente. Mas você certamente não deve fazer isso - isso viola a suposição de design de que ninguém pode efetuar login comobind. - Você pode até executar
sudo passwd binddefinir uma senha parabind, para que qualquer pessoa (exceto convidado) possa fazer login comobindcomsu, se souber a senha. Isso também possibilitaria o login comobindem um console virtual, via SSH, e possivelmente até com a tela gráfica de login. Definir uma senha parabindé ainda pior do que alterar seu shell de login, e você não deve fazer isso.
Como detalhado acima, você não precisa para fazer qualquer uma dessas coisas.