Intereting Posts
Найдите определенные папки Почему не ограничивает скорость с рубином? Перемещение случайных файлов с использованием shuf и mv – список аргументов слишком длинный Застрял установку TexLive с нуля на Debian KDE! Находите справочную страницу со стандартным типом C или POSIX? Есть ли способ удалить значки из заголовка под KDE Plasma 5.8? Нет трафика через установленный туннель IKEv2 StrongSWAN grep: недопустимый контент \ {\} Сбой плагина Java на Firefox 53 Пользователь в группе не имеет группового доступа? Как перемонтироваться в режиме чтения-записи определенного монтирования устройства? Проблема с чтением текстового файла, закодированного в западной кодировке (ISO-8859-1) Почему Wine необходимо установить свой собственный экземпляр Mono, если в системе уже установлена ​​новая версия Mono? Проблема беспроводного соединения Broadcom или модема Когда я не должен убивать -9 процесс?

Как проверить, что пользователь / пароль истек в AIX?

Я могу проверить, что пользователь истек или нет:

lsuser -f USERNAME | fgrep expires 

Но как я могу проверить, что пароль пользователя истек или нет? Есть ли другие «истекающие» вещи, которые могут вызвать проблемы? [так что пользователь не может войти в систему, потому что он может только дойти до сервера через FTP, и его пароль истек, и он не может его изменить, потому что у него нет доступа к SSH для выдачи команды «passwd», чтобы обновить его пароль.]

Есть ли какая-нибудь команда в AIX? проверьте файл / etc / shadow, где хранится информация об истечении срока действия.

Обновление. Кажется, есть подпрограмма passwdexpired, которая может быть загружена, и проверяет пароль пользователя, чтобы определить, истекло ли это. Однако он, по-видимому, используется как root.

http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.basetechref%2Fdoc%2Fbasetrf1%2Fpasswdexpired.htm

Эта ссылка имеет отличную документацию о том, что вам потребуется.

http://www.torontoaix.com/scripting/when_pwd_exp

Как было показано ранее в предыдущей статье, истечение срока действия пароля определяется атрибутом maxage.

 For example: maxage=0 means never to expire maxage=2 means will expire in two weeks. 

AIX хранит время в формате эпохи за считанные секунды, поэтому сначала вы должны определить, сколько секунд в неделю, так как это максимальное значение времени между истечением срока действия пароля, то есть числом недель. Есть 86400 секунд в день, поэтому умножение на семь приходит на 604800. Таким образом, есть 604800 секунд в неделю. Следующая команда, которую вам нужно посмотреть, это pwdadm, который, в свою очередь, запрашивает файл / etc / security / passwd. Этот файл хранит значения в секундах, когда пользователь в последний раз изменил свой пароль. Опрос файла или использование команды pwdadm вернет тот же результат. Для этой демонстрации давайте попросим пользователя spoll:

 # grep -p "spoll:" /etc/security/passwd spoll: password = EvqNjMMwJzXnc lastupdate = 1274003127 flags = ADMCHG # pwdadm -q spoll spoll: lastupdate = 1274003127 flags = ADMCHG 

Вы можете увидеть значение lastupdate в секундах от указанного выше выхода. Другими словами, при последнем изменении пароля: 1274003127

Затем, используя lsuser или допрашивая файл с / etc / security / user, вы можете определить количество недель до истечения срока действия пароля пользователя spoll:

 # grep -p "spoll:" /etc/security/user spoll: admin = false maxage = 4 # lsuser -a maxage spoll spoll maxage=4 

Вы можете видеть из приведенного выше вывода, что количество недель до истечения срока действия пароля равно 4. Следующей задачей является умножить количество секунд в неделю на количество недель, прежде чем истечет срок действия пароля пользователя. В этом случае это 4: 604800 * 4

 # expr 604800 \* 4 2419200 

Затем вам нужно добавить значение maxage в секундах (604800 * 4) до последнего изменения пароля: 2419200 + 1274003127

 # expr 2419200 + 1274003127 1276422327 

Теперь вы можете преобразовать это количество секунд из эпохи UNIX в более значимую презентацию текущего времени. Вы можете использовать разные инструменты, но для этой демонстрации вы будете использовать gawk с функцией strftime:

 # gawk 'BEGIN {print strftime("%c",'1276422327')}' Sun Jun 13 10:45:27 BST 2010 

Приведенный выше расчет дает время истечения срока действия следующего пароля. Итак, теперь вы знаете, что пароль пользователя spoll был последним изменен (из команды pwdadm):

 # gawk 'BEGIN {print strftime("%c",'1274003127')}' Sun May 16 10:45:27 BST 2010 

И это истечет:

 Sun Jun 13 10:45:27 BST 2010 

—————— Perl script-let ——–

 #!/bin/perl use POSIX qw(strftime); $maxage=4; $last_update = 1274003127 $max_week_seconds = 86400 * $maxage; print strftime("%C ", localtime($max_week_seconds)); 

convertthis к нормальному времени (последний pwdupdate времени в секундах-+ MaxAge-в-секундах)

Вы можете ознакомиться с помощью инструмента интерфейса управления системой ( smit ). Консольная версия smitty

Я сделал этот сценарий, чтобы убедиться, что это помогает кому-то другому:

 #!/bin/sh ############################################################################### # Script Name: aix_chk_user_expires.sh # # Author: Chris Alderson # # Purpose: Check when a user expires in AIX # # NOTES: Please change the value of $oozer to the id you desire to check against # ############################################################################## # Set value to specify a user oozer='<username>' #get epoch time for the time since last updated time_since_last_update_in_epoch=$(lssec -f /etc/security/passwd -s $oozer -a lastupdate | cut -d= -f2) #get the max age number of weeks from luser max_age=$(lsuser -f $oozer | grep maxage | cut -d= -f2) #multiply maxage by 7 to get number of days password will last max_age_in_days=$(echo $((( max_age * 7 )))) # multiply number of days by how many seconds in a day to get total seconds until change # We will use this later to add to $time_since_last_update_in_epoch max_age_in_epoch=$(echo $((( $max_age_in_days * 86400 ))) ) # Create new variable to store the total of max age in seconds and epoch of updated password time_until_expires_in_epoch=$(echo $((( $max_age_in_epoch + $time_since_last_update_in_epoch )))) #take epoch times and pass them to perl to give them a readible format time_last_updated=$(perl -le 'print scalar localtime $ARGV[0]' ${time_since_last_update_in_epoch}) if [[ $max_age -eq 0 ]]; then time_of_expiration=$(echo "non-expiring password") else ##take epoch times and pass them to perl to give them a readible format time_of_expiration=$(perl -le 'print scalar localtime $ARGV[0]' ${time_until_expires_in_epoch}) fi echo "${oozer}'s password last updated: $time_last_updated" echo "${oozer}'s password will expire: $time_of_expiration" 

Результат выглядит следующим образом:

 user's password last updated: Mon Jul 31 17:00:13 2017 user's password will expire: Mon Oct 23 17:00:13 2017