Intereting Posts
Free BSD / Mac OS X Sed: соответствие регулярному выражению и строка строки после матча Порядок дешифрования / монтирования диска FreeBSD Диспетчер файлов, который может фильтровать с использованием регулярных выражений Установка раздела жесткого диска Linux Mint Рекурсивно скопировать apache openmeetings в папку red5 на linux Создание и установка RAM-диска при запуске компьютера Структура / proc / kcore на 64-битной машине и отношение к физической памяти Поддерживает ли fetchmail SSL или TLS при использовании SMTP для пересылки электронной почты? Почему инструменты GNU используют несоответствующие «и» для котировки ошибок? В чем разница между / tmp и / var / tmp? Почему моя служба Before = sleep.target запускается * после возобновления *? bash_completion Как сделать файлы WAV с качеством CD с помощью avconv? Linux не смонтирует устройство Android в режиме USB MSC Как создать скрипт с обратным действием

Последнее изменение пароля пользователя

В настоящее время я пытаюсь найти команду, которая покажет последнее изменение пароля пользователя в системе UNIX.

Я попытался запустить команду passwd -Sa, и она дает дату изменения пароля, отформатированную в 00/00/0000. Однако я хочу только указать дату последнего пользователя из этой команды. Я попытался передать команду grep, но я не могу понять, что мой синтаксис правильный.

Я ищу только выход даты в результате этой команды.

Текущая команда попыталась:

grep $USER | passwd -Sa 

Любая помощь по моим ошибкам оценивается!

Получение большей информации дает лучшие ответы. Оффлайн, на OpenSUSE, я вижу, что

 passwd -S -a 

дает запись для каждой записи в /etc/passwd , например:

 thomas PS 03/01/2013 0 99999 7 -1 

поэтому вы можете отфильтровать это с помощью awk:

 passwd -S -a | awk -v user=$USER '{ if ( $1 == user ) { printf "%s\n", $3; } }' 

Однако команда passwd хочет сделать это как root , поэтому ваш скрипт должен будет сделать что-то более элегантное, чем использовать переменную $USER (это для текущего пользователя). Причина, по которой он хочет root заключается в том, что он читает содержимое /etc/shadow , которое не является общедоступным.

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

Программа chage требует наличия файла теневого пароля.

Команда chage ограничена пользователем root , за исключением опции -l , которая может использоваться непривилегированным пользователем, чтобы определить, когда истечет срок его / ее пароля или учетной записи.

Дальнейшее чтение:

  • passwd – изменить пароль пользователя , показывая параметры -S и -a
  • теневой файл паролей , дата сохранения последнего смены пароля
  • Получение пароля истекает , показывает chage , но пропускает приглашение пароля …

Это звучит как домашнее задание, так что:

  • sort может сортировать ввод численно и при необходимости сортировать по нескольким определенным столбцам.
  • cut может печатать подмножество входных столбцов, используя набор символов для определения разделителей столбцов.
  • a | b a | b отправляет вывод команды a в команду b .
  • head и tail возвращают первую и последнюю строки файла, соответственно.
  • Обычно вы не можете узнать о других пользователях без root (то есть, используя sudo ). Вы можете избежать этого (и любого grep ping), просто используя passwd --status чтобы получить статус текущего пользователя.
  • Если вы хотите , чтобы пользователи регулярно меняли свой пароль, я уверен, что уже есть готовые решения, поскольку дистрибутивы Linux имеют эту функцию в течение многих лет.