Como desabilito completamente uma conta?

46

Como desabilito completamente uma conta? passwd -l não permitirá que ninguém faça login em uma conta usando uma senha, mas você ainda poderá fazer login usando chaves privadas / públicas. Como eu desabilitaria a conta completamente? Como um quickfix, renomeiei o arquivo para authorized_keys_lockme . Existe outro jeito?

    
por Braiam 20.02.2011 / 03:13

6 respostas

57

A maneira correta de acordo com usermod(8) é:

usermod --lock --expiredate 1970-01-02 <username>

(Na verdade, o argumento para --expiredate pode ser qualquer data anterior à data atual no formato YYYY-MM-DD .)

Explicação:

  • --lock bloqueia a senha do usuário. No entanto, o login por outros métodos (por exemplo, chave pública) ainda é possível.

  • --expiredate YYYY-MM-DD desativa a conta na data especificada. De acordo com man shadow 5 1970-01-01 é um valor ambíguo e não deve ser usado.

Eu testei isso na minha máquina. Nenhum login com senha nem chave pública é possível após a execução deste comando.

Para reativar a conta em uma data posterior, você pode executar:

usermod --unlock --expiredate '' <username>
    
por 21.02.2011 / 11:42
9

Bloqueie a senha e altere o shell para /bin/nologin .

sudo usermod --lock --shell /bin/nologin username

(Ou mais concisa, sudo usermod -L -s /bin/nologin username .)

    
por 20.02.2011 / 04:19
3

Aqui está outro jeito simples. Você pode definir a conta de usuário expirada. Isso impedirá logons baseados em senha e baseados em chave ssh para a conta, mas não toca a senha.

Para bloquear a conta:

# chage -E 0 username

A conta de usuário 'username' será bloqueada no sistema. Para reativar a conta do usuário, faça o seguinte.

Para desbloquear a conta:

# chage -E -1 username

A conta de usuário 'username' será reativada em seu sistema com a mesma senha de antes. O binário 'chage' é parte do pacote shadow-utils no Red Hat Linux, ou o pacote passwd no Debian Linux.

    
por 14.05.2015 / 15:33
2

Não tenho representante suficiente para comentar a resposta de Legate, mas queria compartilhar que essa resposta nos ajudou com outro caso de uso:

1.) conta em questão é uma conta de serviço local executando um aplicativo, não uma conta de usuário final.

2.) usuários finais ssh em si mesmos, e sudo /bin/su <user> se tornar usuário e administrar aplicativo devido a um requisito de trilha de auditoria de que a conta de serviço não pode ter capacidade de login direto.

3.) conta de serviço deve ter um shell válido ( /bin/bash , não /sbin/nologin ), porque uma Plataforma de Agendamento Corporativo (agente é executado como raiz localmente) deve ser capaz de su - <user> e não tem o su -s /bin/bash <user> de capacidade que um shell completo possui e é necessário para executar trabalhos remotamente para operações em lote maiores que abrangem vários servidores e bancos de dados.


Então ...

passwd -l <user>
Não satisfaz as restrições porque a autenticação de chave pública ignora o PAM e ainda permite o login direto.

usermod -s /sbin/nologin <user>
Não satisfaz as restrições porque quebra o agendador da empresa

usermod --lock --expiredate 1970-01-01 <user>
Este é o nosso vencedor. O login remoto foi desativado, mas o root ainda pode su <user> , assim como outros usuários via sudo , para que o agendador funcione corretamente e os usuários finais autorizados possam se tornar a conta de serviço de destino, conforme necessário.

Obrigado pela solução!

    
por 13.04.2016 / 21:58
1

Para excluir completamente, use userdel .

Por favor, note que se você excluir uma conta, há um risco de que seu ID de usuário ainda seja usado no sistema de arquivos em algum lugar e um novo usuário herde a propriedade desses arquivos se ele estiver sob esse mesmo ID de usuário.

Você gostaria de alterar o proprietário de todos os arquivos pertencentes ao usuário excluído.

Se você quiser adicionar o usuário mais tarde, salve as linhas de /etc/passwd (e no Solaris /etc/shadow ) em arquivos temporários, como /etc/passwd_deleted .

Dessa forma, quando você adiciona de volta, você pode usar o mesmo ID de usuário e a mesma senha (que é criptografada em um dos arquivos acima)

Aviso de isenção de responsabilidade: Aprendi sozinho o UNIX para não ficar surpreso se houver uma maneira melhor de desabilitar temporariamente o usuário. Na verdade, eu nem sei do que as chaves privadas / públicas estão falando. Também tenho certeza de que existe um comando find que pode ser usado para procurar os arquivos com esse ID de usuário proprietário

    
por 20.02.2011 / 03:32
0

Alguém já tentou fazer isso via ssh_config? Talvez isso possa ajudar link

Also, ensure that PasswordAuthentication is set to no as well, to force all logins to use public keys.

    
por 21.02.2011 / 09:54