Última alteração de senha de um usuário [closed]

4

Atualmente, estou tentando descobrir um comando que mostrará a última alteração de senha de um usuário em um sistema UNIX.

Eu tentei executar o comando passwd -Sa e ele fornece a data de alteração da senha formatada em 00/00/0000. No entanto, quero listar apenas a data do último usuário desse comando. Eu tentei canalizar o comando para grep, mas não consigo obter minha sintaxe correta.

Estou procurando apenas a saída de data como resultado desse comando.

Comando atual tentado:

grep $USER | passwd -Sa

Qualquer ajuda sobre meus erros é apreciada!

    
por Mister123 27.03.2016 / 21:10

2 respostas

3

Dar mais informações obtém respostas melhores. De improviso, no OpenSUSE, vejo que

passwd -S -a

fornece um registro para cada entrada em /etc/passwd , assim:

thomas PS 03/01/2013 0 99999 7 -1

para que você possa filtrar com o awk:

passwd -S -a | awk -v user=$USER '{ if ( $1 == user ) { printf  "%s\n",  $3; } }'

No entanto, o comando passwd quer fazer isso como root , então seu script teria que fazer algo mais elegante do que usar a variável $USER (para o usuário atual ) . O motivo pelo qual ele quer root é que ele está lendo o conteúdo de /etc/shadow , que não é público.

Você pode usar chage , que mostra um relatório diferente, mas em uma verificação rápida, ele solicita a senha do usuário (que provavelmente não é o que você quer):

The chage program requires a shadow password file to be available.

The chage command is restricted to the root user, except for the -l option, which may be used by an unprivileged user to determine when his/her password or account is due to expire.

Leitura adicional:

por 27.03.2016 / 23:06
1

Isso soa como um exercício de lição de casa, então:

  • sort pode classificar entradas numericamente e pode classificar por várias colunas definidas, se necessário.
  • cut pode imprimir um subconjunto das colunas de entrada, usando um conjunto de caracteres para definir os separadores de coluna.
  • a | b envia a saída do comando a para o comando b .
  • head e tail retornam as primeiras e últimas linhas de um arquivo, respectivamente.
  • Você geralmente não pode perguntar sobre outros usuários sem ser root (ou seja, usando sudo ). Você pode evitar isso (e qualquer grep ping) simplesmente usando passwd --status para obter o status do usuário atual .
  • Se você quiser certifique-se de que os usuários alterem sua senha regularmente I Tenho certeza de que já existem soluções prontas por aí, já que as distribuições Linux tiveram essa funcionalidade por muitos anos.
por 27.03.2016 / 22:19