Redefinindo a data de expiração da senha por número de dias em vez de especificar a data

2

Existe uma maneira com os comandos passwd ou chage para forçar a senha a expirar 90 dias a partir do momento da execução do comando?

Eu sei que posso fazer isso por data, como:

chage -E "2014-07-31" userid

Mas estou procurando uma maneira de fazer isso com um número em vez de uma data específica.

Obrigado!

    
por HEADLESS_0NE 25.03.2014 / 23:02

2 respostas

8

chage não manipula diferenças de datas sozinho, mas você pode deixar o shell cuidar disso e fornecer chage alguns dias desde 1970-01-01, em vez de uma representação de data AAAA-MM-DD :

chage -E $(( $(date +%s)/3600/24 + 90 )) userid

(Substituir 90 por qualquer número de dias.)

Alterar a data de expiração da senha em vez da conta é um pouco mais complicado - na verdade, você não pode definir uma data de expiração real para a senha, apenas um máximo idade (usando chage -M ).

Para calcular a idade máxima exigida para a senha expirar daqui a 90 dias, precisamos passar por mais alguns arcos:

userid=johndoe
pwd_age=$(grep "^$userid:" /etc/shadow | cut -d: -f 3)
now=$(( $(date +%s) / 3600 / 24 ))
age_at_expiry_date=$(( $now + 90 - $pwd_age ))
chage $userid -M $age_at_expiry_date

Se você não se importa em ser um pouco complicado, você pode até combinar isso em uma linha:

userid=johndoe chage $userid -M $(( $(date +%s) / 3600 / 24 + 90 - $(grep "^$userid:" /etc/shadow | cut -d: -f 3) ))

Se você não se importa em substituir a data em que a senha foi alterada pela última vez, basta

chage -M 90 -d $(date +%F) userid
    
por 26.03.2014 / 00:34
1

RHEL 6.8

#set passwd max no days = 30
passwd username -x30
    
por 21.12.2016 / 10:20