Политика принудительного применения пароля будет применяется большинством компаний, но период времени будет отличаться.

Обычно каждый админ использует 90-дневный цикл паролей.

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

В частности, большинство разработчиков забывают изменить пароль учетной записи службы, что может привести к нарушению обычных заданий, даже если они настроены для работы с аутентификацией на основе ключей SSH.

Аутентификация на основе ключей SSH и cronjobs не будут работать, если срок действия пароля учетной записи пользователя истечет.

Чтобы избежать этой ситуации, мы создали скрипт на bash, который отправляет вам список учетных записей, срок действия которых истекает в течение 10 дней.

В это руководство включены два скрипта bash, которые помогут вам собрать информацию о сроках действия пользователей в вашей системе.

1. Bash Script для проверки списка учетных записей пользователей, срок действия которых истекает через 10 дней

Этот скрипт поможет вам проверить список учетных записей, срок действия которых истекает через 10 дней на вашем терминале.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# nano /opt/script/user-password-expiry.sh

#!/bin/sh
/tmp/user-expiry-1.txt
/tmp/user-expiry.txt
echo "-------------------------------------------------"
echo "UserName Количество дней, в течение которых истекает пароль.
echo "-------------------------------------------------"
for usern in u1 u2 u3 u4
do
today=$(date +%s)
userexpdate=$(chage -l $usern | grep 'Password expires' |cut -d: -f2)
passexp=$(date -d "$userexpdate" "+%s")
exp=`expr \( $passexp - $today \)`
expday=`expr \( $exp / 86400 \)`
echo "$usern $expday" >> /tmp/user-expiry.txt
done
cat /tmp/user-expiry.txt | awk '$2 <= 10' > /tmp/user-expiry-1.txt
cat /tmp/user-expiry-1.txt | column -t

Установите для исполняемого файла Linux разрешение на выполнение:

1
# chmod +x /opt/script/user-password-expiry.sh

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

1
2
3
4
5
6
7
8
9
# sh /opt/script/user-password-expiry.sh

-------------------------------------------------
UserName  The number of days the password expires
-------------------------------------------------
u1         -25
u2          9
u3          3
u4          5

2. Скрипт на Bash для отправки электронной почты со списком учетных записей, срок действия которых истекает через 10 дней

Этот скрипт отправит письмо со списком учетных записей пользователей, срок действия которых истекает через 10 дней.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# nano /opt/script/user-password-expiry-mail.sh

#!/bin/sh
SUBJECT="Information About User Password Expiration on "`date`""
MESSAGE="/tmp/user-expiry.txt"
MESSAGE1="/tmp/user-expiry-1.txt"
TO="your_email@domain.com"
echo "-------------------------------------------------" >> $MESSAGE1
echo "UserName Количество дней, в течение которых истекает пароль" >> $MESSAGE1
echo "-------------------------------------------------" >> $MESSAGE1
for usern in u1 u2 u3 u4
do
today=$(date +%s)
userexpdate=$(chage -l $usern | grep 'Password expires' |cut -d: -f2)
passexp=$(date -d "$userexpdate" "+%s")
exp=`expr \( $passexp - $today \)`
expday=`expr \( $exp / 86400 \)`
echo "$usern $expday" >> $MESSAGE
done
cat $MESSAGE | awk '$2 <= 10' >> $MESSAGE1
mail -s "$SUBJECT" "$TO" < $MESSAGE1
rm $MESSAGE
rm $MESSAGE1

Установите для исполняемого файла Linux разрешение на выполнение:

1
# chmod +x /opt/script/user-password-expiry.sh

Наконец добавьте cronjob, чтобы автоматизировать это все. В этом примере скрипт будет работать один раз в день в 8 утра.

1
2
# crontab -e
0 8 * * * /bin/bash /opt/script/user-password-expiry-mail.sh