Encontre usuários com senhas inalteradas?

3

Recentemente, adicionei vários usuários e dei a eles senhas geradas aleatoriamente. Nós, desde então, os instruímos a mudar suas senhas, mas suspeitamos que um grande número delas não o tenha feito.

Como podemos expirar as senhas de todos que ainda não alteraram suas senhas?

Estamos no servidor Ubuntu 9.04 usando a autenticação normal / etc / passwd.

    
por lfaraone 09.10.2009 / 15:22

3 respostas

4

Você pode usar o comando chage para ver a última vez que eles alteraram a senha, por exemplo:

sudo chage -l kbrandt

Você pode misturar isso com um loop e awk do arquivo / etc / passwd, mas pode ser uma maneira melhor. Talvez algo como:

while read line; do 
    date_change=$(echo $line | awk -F: '{print $3}')
    user=$(echo $line | awk -F: '{print $1}')
    #Say you set them on 14120 days since Jan 1, 1970
    if [[ $date_change -eq 14120 ]]; then
        #chage command to set warning and password expiration for $user
    fi
done < /etc/shadow
    
por 09.10.2009 / 15:29
2

Para expirar a senha, defina a data de vencimento como uma data anterior:

chage -E 0 username    # 0 is January 1, 1970; 14496 is 9/9/9

Para remover a expiração use -1:

chage -E -1 username

Combine isso com o script Kyle .

No entanto , você pode obter seus user e date_change usando apenas uma chamada para awk :

# Bash
read user date_change <<< $(echo $line | awk -F: '{print $1, $3}')

ou

# Bash
read user date_change < <(echo $line | awk -F: '{print $1, $3}')

ou

# Bourne
read user date_change <<EOF
'echo $line | awk -F: '{print $1, $3}''
EOF

No entanto , awk é desnecessário:

while IFS=: read -a line
do 
    date_change=${line[2]}
    user=${line[0]}
    # Have they changed their password since I told them to on Jul 1?
    if [[ $date_change <= 14426 ]]; then
        # Expire their password, that'll get their attention
        chage -E 0 $user
    fi
done < /etc/shadow
    
por 10.10.2009 / 03:42
1

A data em que a senha foi alterada pela última vez é listada em / etc / shadow no terceiro campo (codificado como dias desde 1970/01/01).

Você pode usar o utilitário chage para impor uma alteração de senha após n dias desde a última alteração. Mas cuidado que esta configuração é persistente, ela irá expirar a senha a cada n dias, então se você não quer que você tenha que redefinir isso em uma segunda execução, após a primeira mudança.

Eu realmente gostaria de ter uma opção para impor uma alteração de senha no primeiro login, como ofertas do MacOS e do Windows.

    
por 09.10.2009 / 15:29