Назад | Перейти на главную страницу

Найдите пользователей с неизмененными паролями?

Недавно я добавил группу пользователей и дал им случайно сгенерированные пароли. С тех пор мы проинструктировали их сменить пароли, но подозреваем, что многие из них этого не сделали.

Как мы можем истечь пароли всех, кто еще не сменил свой пароль?

Мы на сервере Ubuntu 9.04, используя обычную аутентификацию / etc / passwd.

Вы можете использовать команду chage, чтобы узнать, когда они в последний раз меняли свой пароль, например:

sudo chage -l kbrandt

Вы можете смешать это с циклом и awk файла / etc / passwd, хотя это может быть лучшим способом. Может быть что-то вроде:

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

Чтобы истечь пароль, установите дату истечения срока действия на дату в прошлом:

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

Чтобы удалить срок действия, используйте -1:

chage -E -1 username

Совместите это с Кайла сценарий.

тем не мениеты можешь получить свой user и date_change используя только один звонок awk:

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

или

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

или

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

тем не мение, awk не нужно:

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

Дата последнего изменения пароля указана в / etc / shadow в третьем поле (обозначено днями с 01.01.1970).

Затем вы можете использовать утилиту chage для принудительной смены пароля после п дней с момента последнего изменения. Но имейте в виду, что этот параметр является постоянным, срок действия пароля истечет каждые п дней, поэтому, если вы этого не хотите, вам придется сбросить это значение во втором прогоне после первого изменения.

Я действительно хотел бы иметь возможность принудительно менять пароль при первом входе в систему, как предлагает MacOS и Windows.