Por que o trabalho “su bind” não funciona?

2

Quando você faz apt-get install bind9 , recebe um usuário bind criado.

Estou tendo problemas com a instalação do meu bind.

  

Veja

     

para mais informações sobre isso.

Eu tentei depurar por su ing de root para usuário bind (de root porque não sei a senha).

Geralmente isso funciona para qualquer usuário.

Mas quando eu digito

su bind

Não recebo nenhuma mensagem de erro, mas o usuário no bash ainda é mostrado como root e whoami também informa que ainda estou root .

Se eu fizer o mesmo para qualquer outro usuário, o bash muda para esse usuário e o whoami também me diz que eu sou esse usuário.

Então ... Por que não posso su ao usuário bind ?

Isso é o que um trecho de /etc/passwd :

root@zotac:/etc# cat passwd | grep "bind"
bind:x:107:119::/var/cache/bind:/bin/false

Eu tentei substituir /bin/false por /bin/bash , mas isso não faz diferença. Então qual é o problema?

    
por WitchCraft 04.08.2012 / 23:08

1 resposta

4

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:

  1. A autenticação ocorre. Supondo que seja bem sucedido ...
  2. O shell, /bin/false , é chamado.
  3. O shell sai imediatamente.
  4. Como o shell de login foi encerrado, a sessão de login foi encerrada.
  5. Agora você está de volta a ser root , por isso, comandos como whoami mostram você como root .

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 alterar bind ' s shell de /bin/false para outra coisa. Isso possibilitaria que os administradores usassem sudo -u -i bind ou sudo -u -s bind e root usassem su 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 como bind .
  • Você pode até executar sudo passwd bind definir uma senha para bind , para que qualquer pessoa (exceto convidado) possa fazer login como bind com su , se souber a senha. Isso também possibilitaria o login como bind em um console virtual, via SSH, e possivelmente até com a tela gráfica de login. Definir uma senha para bind é 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.

    
por Eliah Kagan 05.08.2012 / 01:44