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

Vimperator является хорошим плагином для Firefox. Эквивалентный Chrome называют vrome.

2
04.11.2011, 00:46
4 ответа

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

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

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 хранит время в формате эпохи в секундах, поэтому сначала необходимо определить, сколько секунд за неделю, поскольку это - то, как maxage измеряет время между истечением пароля, которое находится в недельных числах. За день существует 86 400 секунд, таким образом умножение этого семь входит в 604 800. Таким образом, существует 604 800 секунд за неделю. Следующая команда, на которую необходимо посмотреть, является 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. Следующая задача состоит в том, чтобы затем умножить число секунд за неделю числом недель, прежде чем пользователь spoll пароль будет должен истечь. В этом случае это 4: 604800 * 4

# expr 604800 \* 4
2419200

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

# expr 2419200 + 1274003127
1276422327

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

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

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

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

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

Sun Jun 13 10:45:27 BST 2010

------------------Perl позволенный сценарием--------

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

3
27.01.2020, 22:07

convertthis-to-normal-time (last-pwdupdate-time-in-seconds+maxage-in-seconds)

0
27.01.2020, 22:07
  • 1
    #!/bin/perl QW POSIX (strftime); $maxage=4; $last_update = 1 274 003 127$max_week_seconds = 86400 * $maxage; распечатайте strftime (" %C", localtime ($max_week_seconds)); –  Nikhil Mulley 05.12.2011, 10:36

Можно узнать через Инструмент Интерфейса Управления системой (smit). Консольная версия smitty

0
27.01.2020, 22:07
  • 1
    Ответы обычно требуют большего количества объяснения, чем простое название команды. Уточните или переместите это в комментарий. –  jw013 14.11.2012, 16:25
  • 2
    , который я добавил бы к этому ответу, но я не могу найти страницу справочника нигде. Упоминание, что флаги дать его и на что будет похож вывод, было бы полезным –  Michael Mrozek♦ 14.11.2012, 17:22

Я сделал этот скрипт, чтобы проверить, надеюсь, это поможет кому-то еще:

#!/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
0
27.01.2020, 22:07

Теги

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