Como evitar que um usuário entre, mas permita o “su - usuário” no Linux?

87

Como você permite que um usuário efetue login usando " su - usuário ", mas impede que o usuário faça login usando o SSH?

Eu tentei definir o shell como /bin/false , mas quando tento su ele não funciona.

Existem várias maneiras de permitir somente logins por su ?

O AllowUser do SSH é o caminho a percorrer? (como eu faria isso se fosse o caminho a seguir)

    
por NoozNooz42 09.06.2010 / 17:13

11 respostas

108

Você pode usar AllowUsers / AllowGroups se tiver apenas alguns usuários / grupos com permissão para efetuar login via ssh ou DenyUsers / < em> DenyGroups se você tiver apenas alguns usuários / grupos que não têm permissão para efetuar login. Note que isto só restringe o login via ssh, outras formas de login (console, ftp, ...) ainda são possíveis. Você precisa adicionar essas opções ao seu arquivo / etc / ssh / sshd_config para a maioria das instalações ssh.

Se você configurou o shell de login para / bin / false , você pode usar su -s /bin/bash user (substitua / bin / bash pelo shell de sua escolha)

    
por 09.06.2010 / 17:40
13

Se você ainda quiser que o su funcione, você pode usar sudo -u [username] ou passar -s /bin/bash para su como um shell temporário. Ambos fazem o mesmo na ausência de um shell em /etc/passwd .

    
por 18.02.2012 / 11:04
7

Se uma conta não tiver senha ( passwd -d username ), ela não poderá efetuar login interativamente (console, SSH, etc.). Se eles tiverem um shell válido, o su ainda funcionará. Observe o "interativamente", embora; Se alguém decidir configurar um par de chaves SSH para a conta, funcionará!

    
por 09.06.2010 / 17:53
3

Em sshd_config, adicione uma linha DenyUser [username]

Observe que isso não impedirá que o usuário efetue login pelo console.

    
por 09.06.2010 / 17:28
2

Além do que foi mencionado acima (desabilitar e / ou não configurar a senha do usuário), o módulo pam_access (procure página de manual em pam_access e access.conf) pode ser usado para controlar o acesso de login.

    
por 28.09.2012 / 00:16
1

como outros já disseram;

DenyUser username ou DenyGroup groupname in sshd_config impediria login de senha / senha via ssh.

embora eu geralmente faça algo como AllowGroup ssh ou algo assim, e adicione explicitamente pessoas que precisam de acesso ssh a esse grupo.

então, você pode fazer o que os outros disseram: passwd -d username para apagar a senha do usuário, para que ele não possa efetuar login no console ou de outra maneira. ou melhor ainda passwd -l username para "bloquear" a conta. é possível que o ssh negue o acesso a uma conta bloqueada, mesmo com chaves, mas eu não sou positivo.

    
por 09.06.2010 / 18:15
1

Como mencionei em um comentário, acho que você ainda pode entrar em uma conta com um shell inválido. Então, se você definir o shell do usuário para / dev / null ou qualquer que seja o shell do bin, você deve ser capaz de continuar assimilando esse usuário ... mas qualquer tentativa de efetuar login de qualquer forma o deixará de fora ...

    
por 09.06.2010 / 18:26
1

edite o arquivo / etc / shadow adicionando! para o início do hash da senha.

username:!<hash>:#####:#:#####:#:::

Ao garantir uma nova instalação, esta é a primeira coisa que faço após instalar o sudo, para que ninguém possa usar o usuário root para efetuar login ou ssh no sistema, os usuários sudo ainda podem executar como usuário root.

    
por 31.12.2013 / 02:38
0

Não especifique uma senha para o usuário que não tenha permissão para efetuar login ou excluí-la.

# passwd -d myuser
    
por 09.06.2010 / 17:50
0

Supondo que você deseja apenas suar usuário da conta do root e desabilitar todos os outros acessos:

Use isso (execute como root):

usermod -e 1 -L user

Isso desabilita o login por senha (como muitas outras respostas aconselham), mas também expira a conta . Você não pode fazer login em uma conta expirada, por exemplo com chaves SSH. Você ainda pode su user , embora exiba um aviso de que a conta expirou.

    
por 18.11.2013 / 14:49
0

Saber qual mecanismo é o melhor depende dos requisitos. Se você conhece os requisitos, pode escolher o mecanismo apropriado. Todas as respostas acima são válidas para alguns requisitos.

Deseja apenas restringir o acesso SSH? Você precisa de acesso para os métodos mail ou ssh? O acesso é apenas do root?

su - user exigirá uma senha para o usuário, caso seja executado, seja um usuário diferente de root. No entanto, sudo -u user -i não requer uma senha para o usuário.

    
por 09.06.2010 / 18:25