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


87

Digamos que eu crie um usuário chamado "falso" usando o addusercomando Como posso garantir que esse usuário NÃO seja uma opção viável de login, sem desativar a conta. Em resumo, quero que a conta seja acessível via su - bogus, mas não quero que seja acessível através de um prompt de login regular.

Pesquisando, parece que preciso desativar a senha do usuário, mas passwd -d bogusisso não ajudou. Na verdade, isso piorou as coisas, porque agora eu podia entrar no falso sem sequer digitar uma senha.

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

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


2
Você -dé a bandeira para excluir a senha. Isso é diferente de desativá-lo (referido como bloqueio, veja a resposta do Chade).
Caleb

1
Você provavelmente deseja desativá-los completamente: unix.stackexchange.com/questions/7690/… Consulte também esta pergunta do Ubuntu: askubuntu.com/questions/282806/how-to-enable-or-disable-a-user
Simon Woodside

Respostas:


102
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 fazer su - usero root.

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


27
Ao usar a passwd -lopção, você deve estar ciente de que o usuário pode efetuar login usando outro token de autenticação (por exemplo, uma chave SSH).
pl1nk

2
Por favor, veja minha resposta abaixo em uma solução recomendada sobre como evitar isso.
Jörg Gottschlich

2
Isso não funciona no ubuntu 16.04. Ele mudará a data de validade e não permitirá mais o su-user.
merlin

1
É o mesmo que a --disabled-passwordopção dada adduser? Será que a criação de um usuário sem --disabled-passworde depois correndo passwd -lem que o usuário alcançar o mesmo resultado como correr addusercom --disabled-password, em primeiro lugar?
haridsv

39

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

Observe que isso não desativa a conta. O usuário ainda poderá fazer login usando outro token de autenticação (por exemplo, uma chave SSH). Para desativar a conta, os administradores devem usar usermod --expiredate 1 (isso define a data de validade da conta para 2 de janeiro de 1970).

assim

usermod --expiredate 1 [LOGIN]

me parece a maneira correta de desativar uma conta que um usuário não deve mais usar (por exemplo, porque ele deixou a empresa).


4
No meu CentOs 6.3, passwd -lele bloqueia a sshconexão de um usuário e usermod --expiredate 1não!
Fduff

1
No meu CentOS 7.4, passwd -lnão bloqueia mais as sshconexões de um usuário e usermod --expiredate 1 userbloqueia. Por man passwdvocê também pode usar chage -E 0 userpara bloquear um usuário. Depois de aplicar usermodou chageeu sou capaz desudo su user
user12345

usermod --expiredate 0 [LOGIN]também funciona, define a data de vencimento para 1º de janeiro de 1970, enquanto um 1 define para 2 de janeiro de 1970.
slm

"O valor 0 não deve ser usado, pois é interpretado como uma conta sem vencimento ou como vencimento em 1º de janeiro de 1970." - shadow (5)
Johannes

28

Existem dois métodos para impedir que um usuário possa fazer login:

  1. você pode bloquear o usuário editando /etc/passwd
  2. emitindo diretamente o passwdcomando com o -lcomutador

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

Método 1

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

Agora você está no passwdarquivo, pressione Inspara editar o arquivo.

Altere a linha abaixo com a nologinopção ( /bin/bashsignifica que o usuário pode fazer login).

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

para isso. nologinsignifica que o usuário não pode 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 o usuário: passwd -u username


1
Em um sistema Ubuntu 14.04, encontrei em /usr/sbin/nologinvez de /bin/nologin.
Dennis Williamson

7

É uma tarefa bastante fácil, basta fazer algumas alterações no /etc/passwdarquivo.

Simplesmente você precisa alterar o shell, que geralmente é por padrão . Ou /bin/bashseja, você pode fazer o login usando esse shell ou alterá-lo para . É aconselhável alterá-lo para porque está desatualizado./bin/nologin/bin/false/bin/nologin/bin/false


4

Definir /bin/falsecomo um shell em/etc/passwd


18
Quando alguém define o shell como /bin/false, evita o uso de su para atuar como esse usuário. Além disso, o uso /bin/falsenão produz nenhum erro nem outra dica do que deu errado - nos casos em que alguém deseja impedir que mesmo su seja usado para obter um shell como esse usuário, o shell deve ser alterado para o /sbin/nologinque produz um erro.
HedgeMage

8
Não, o suainda é possível para os usuários com /bin/falseconchas em passwd- basta usar a opção --shell: su - --shell /bin/sh bogus.
Matej Kovac

1
/usr/sbin/nologintem o mesmo efeito que /bin/false, mas também mostra uma mensagem informativa útil.
Rörd

0

Quando bloqueamos o usuário usando o passwd -l usercomando, " !!" são indicados no /etc/shadowarquivo. Mas ainda podemos mudar para um shell de usuário a partir da conta raiz, mas não podemos mudar para uma conta de usuário por outros usuários normais.

Nós também pode desabilitar a conta, fornecendo /bin/nologinou /bin/falseno /etc/passwdarquivo. Portanto, o usuário pode não conseguir fazer login.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.