Linux: Existe um comando shell não-root para descobrir se uma conta de usuário está ativada ou não?

1

Existe um comando shell não-root que pode me informar se a conta de um usuário está desabilitada ou não?

Por favor, note que há uma boa distinção entre LOCKING e DISABLED:

  • BLOQUEIO é onde você prefixa ! ou * ou !! no campo de senha do arquivo / etc / passwd. Nos sistemas Linux que ocultam as senhas, esse marcador de marcador pode ser colocado em / etc / shadow em vez de / etc / passwd. O bloqueio de senha pode ser feito (em um prompt do shell) via password -l username (como root) para bloquear a conta do nome de usuário, e o uso da opção -u irá desbloqueá-lo.
  • A desativação de uma conta é feita definindo o tempo de expiração da conta do usuário em algum momento no passado. Isso pode ser feito com chage -E 0 username , que define a data de expiração para 0 dias após a época do Unix. Definir como -1 desativará o uso da data de expiração.

O efeito de bloqueio para impedir que o processo de login use uma senha fornecida para hash corretamente contra o hash salvo (em virtude do fato de que o caractere marcador pre-pended não são caractere (s) de saída válido para o hash, portanto, nenhuma entrada possível pode ser usada para gerar um hash que correspondesse a ele). O efeito da desativação é impedir que qualquer processo use uma conta porque a data de expiração da conta já passou.

Para minha situação, o uso de bloqueio não é suficiente porque um usuário ainda pode fazer login, por exemplo, usando tokens de autenticação ssh, e os processos sob esse usuário ainda podem gerar outros processos. Assim, temos contas habilitadas ou desabilitadas, não apenas bloqueadas. Nós já sabemos como desabilitar e habilitar a conta - isso requer acesso root e o uso de chage , como mostrado acima.

Para repetir a minha pergunta: existe um comando shell que pode ser executado sem privilégios de root que podem gerar o status das informações de expiração dessa conta para um determinado usuário?

Se isso ajudar, é para uso em um sistema Red Hat Enterprise 5.4. A saída está sendo retornada para um processo java que pode, então, analisar a saída conforme necessário ou utilizar o código de retorno.

    
por weiji 10.08.2011 / 21:18

3 respostas

1

Não, não há. Como um usuário não privilegiado, seria um risco de segurança em potencial permitir que tais usuários acessem / etc / shadow. Acredito que, para todas as distribuições modernas de linux, hashes de senhas e informações adicionais de conta foram movidas para / etc / shadow de / etc / passwd para eliminar uma falha de segurança. Se o seu sistema usa senhas shadow, o "!" no início de um hash de senha só será visível e presente em / etc / shadow e, portanto, não acessível a um usuário regular, sem privilégios.

    
por 11.08.2011 / 13:25
0

Você pode adicionar o seguinte a /etc/sudoers :

%admin   ALL = NOPASSWD: /usr/bin/chage -l *

Isso dará a qualquer um no grupo admin a capacidade de executar comandos como este, sem precisar de uma senha:

sudo chage -l username

Se você deseja executá-lo a partir de um cron job ou algo semelhante, adicione o seguinte a /etc/sudoers :

Defaults:%admin   !requiretty

(Não edite /etc/sudoers diretamente; em vez disso, execute sudo visudo )

    
por 14.04.2014 / 05:57
-1

Você pode usar o arquivo / etc / passwd em um editor de texto para ver quais contas estão bloqueadas.

    
por 10.08.2011 / 21:27