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 comowhoami
mostram 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
usermod
para alterarbind
' s shell de/bin/false
para outra coisa. Isso possibilitaria que os administradores usassemsudo -u -i bind
ousudo -u -s bind
eroot
usassemsu 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 bind
definir uma senha parabind
, para que qualquer pessoa (exceto convidado) possa fazer login comobind
comsu
, se souber a senha. Isso também possibilitaria o login comobind
em 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.