активировать login.defs

Я пытаюсь применить новую политику паролей на моем сервере Ubuntu 12.04.1. Я редактировал MAX_PASS_DAYS 30, MIN_PASS_DAYS 2, PASS_WARN_AGE 7 в /etc/login.defs.

Новые правила применяются ко всем новым пользователям, которых я создаю, но как я навязываю их всем текущим пользователям? Я тестирую его, используя пользователя, который не менял свой пароль в течение 3 месяцев. chage -l по-прежнему показывает 99999 для MAX_PASS_DAYS. Я бы предпочел не использовать chage для всех текущих пользователей.

Спасибо заранее

3
задан 21 December 2012 в 03:03

1 ответ

Два года и никакой ответ? Печальный сказать, единственным решением, которое я предложил, является этот сценарий. Я протестировал его на Ubuntu 14. Обратите внимание, что нет никакой обработки ошибок, если Вы даете ему плохой вход.

chage_update.sh:

#!/bin/bash
usage() { 
    cat <<EOF
Usage: $0 [ YYYY-MM-DD ]

Update chage information for all regular users to the values present in
/etc/login.defs, and set the date of the last password change to YYYY-MM-DD
(defaults to current date). Must be run as root.
EOF
    exit;
}
get_val() {
    ARR=(`grep ^$1 /etc/login.defs`)
    echo ${ARR[1]}
}
UID_MIN=`get_val UID_MIN`
PASS_MAX_DAYS=`get_val PASS_MAX_DAYS`
PASS_WARN_AGE=`get_val PASS_WARN_AGE`
if [ "$1" = "-h" -o "$1" = "--help" ]; then
    usage
elif [ -z "$1" ]; then
    DATE=`date +%Y-%m-%d`
else
    DATE=$1
fi
cat /etc/passwd | while read line; do
    ARR=($(echo "$line" | cut -d\: -f1-3 | tr : \ ))
    USER=${ARR[0]}
    USERID=${ARR[2]}
    if [ -z "$USERID" ]; then
        continue
    elif [ "$USERID" -ge $UID_MIN ]; then
        chage -d $DATE -M $PASS_MAX_DAYS -W $PASS_WARN_AGE $USER
    fi
done
1
ответ дан 21 December 2012 в 03:03

Другие вопросы по тегам:

Похожие вопросы: