Desabilitar o login de um usuário sem desabilitar a conta

78

Digamos que eu crie um usuário chamado "bogus" usando o comando adduser . Como posso ter certeza de que esse usuário NÃO será uma opção de login viável, sem desabilitar a conta. Em suma, eu quero que a conta seja acessível via su - bogus , mas eu não quero que seja acessível através de um prompt de login regular.

Pesquisando, parece que preciso desativar a senha desse usuário, mas passwd -d bogus não ajudou. Na verdade, isso piorou as coisas, porque agora eu podia fazer login em falsas sem precisar digitar uma senha.

Existe uma maneira de desativar logins regulares para uma determinada conta?

Observação: só para esclarecer, eu sei como remover um usuário das opções de menu de telas gráficas de login, como o gdm, mas esses métodos simplesmente escondem a conta sem realmente desabilitar o login. Estou procurando uma maneira de desativar completamente o login normal, incluindo o modo de texto.

    
por Malabarba 24.08.2011 / 15:49

7 respostas

92
passwd -l user

é o que você quer.

Isso bloqueará a conta do usuário. Mas você ainda será capaz de

su - user

mas você terá que su - user como root.

Como alternativa, você pode realizar a mesma coisa, adicionando um ! à senha do usuário em /etc/shadow (isso é tudo que o passwd -l faz nos bastidores). E passwd -u irá desfazer isso.

    
por 24.08.2011 / 16:12
32

A página man de passwd(1) diz sobre passwd -l :

Note that this does not disable the account. The user may still be able to login using another authentication token (e.g. an SSH key). To disable the account, administrators should use usermod --expiredate 1 (this set the account's expire date to Jan 2, 1970).

Então

usermod --expiredate 1 [LOGIN]

parece-me o caminho certo para desabilitar uma conta que um usuário não pode mais usar (por exemplo, porque ele deixou a empresa).

    
por 15.05.2014 / 08:38
24

Existem dois métodos para impedir que um usuário faça o login:

  1. você pode bloquear o usuário editando /etc/passwd
  2. ao emitir diretamente o comando passwd com a opção -l

No segundo caso, o usuário pode fazer login usando outro token de autenticação (por exemplo, uma chave SSH).

Método 1

  1. Encontre onde está o nologin: / bin / nologin ou / bin / sbin / nologin
  2. Abra um terminal e faça o login como root
  3. Digite vi /etc/passwd

Agora você está em passwd arquivo pressione Ins para editar o arquivo.

Altere a linha abaixo com a opção nologin ( /bin/bash significa que o usuário pode efetuar login).

root:x:0:0:root:/root:/bin/bash

para isso. nologin significa que o usuário não consegue fazer login.

root:x:0:0:root:/root:/bin/nologin

(ou com / bin / sbin / nologin)

  1. Feche o vi Esc : wq

Método # 2

Para bloquear o usuário: passwd -l username

Para desbloquear usuário: passwd -u username

    
por 02.11.2012 / 22:23
6

É muito fácil fazer algumas alterações no arquivo /etc/passwd .

Simplesmente você tem que mudar o shell que geralmente é por padrão /bin/bash ou seja, você pode logar usando este shell, mude para /bin/nologin ou /bin/false . É aconselhável alterá-lo para /bin/nologin porque /bin/false está desatualizado.

    
por 02.12.2014 / 10:53
4

Defina /bin/false como um shell em /etc/passwd

    
por 24.08.2011 / 16:12
0

Quando bloqueamos o usuário usando o comando passwd -l user , " !! " é indicado no arquivo /etc/shadow . Mas ainda podemos mudar para um shell de usuário a partir da conta root, mas não podemos mudar para a conta de usuário por outro shell de login de usuários normais.

Também podemos desativar a conta fornecendo /bin/nologin ou /bin/false no arquivo /etc/passwd . Então o usuário pode não conseguir entrar.

    
por 03.08.2018 / 00:02
-1

Você pode usar o comando

usermod -s /sbin/nologin username
    
por 20.09.2018 / 11:15