Linux дата смены пароля

Обновлено: 07.07.2024

Linux - начинающим. Часть 6. Управление пользователями и группами. Теория

Пользователи окружают нас всюду, в современных информационных системах это одно из ключевых понятий, вокруг которого строится вся система разграничения прав доступа и безопасности. Поэтому умение управлять пользователями и группами - это один из основных навыков необходимых любому администратору. Базовые механизмы управления пользователями и доступом в Linux достаточно просты и некоторым могут показаться грубыми, но нельзя осваивать более сложные механизмы, не обладая базовыми навыками, поэтому давайте начинать изучение этой непростой темы с самых ее азов.

Чтобы понять современную систему пользователей в Linux сделаем небольшой экскурс в историю. Как известно, Линус Торвальдс создавал ОС по образу и подобию UNIX и поэтому в основе Linux лежат многие простые и изящные решения этой системы. Одна из замечательных абстракций UNIX - это все есть файл, т.е. файлами также являются устройства, процессы, сетевые сокеты и т.д. и т.п. Это позволяет делать при помощи достаточно простых инструментов довольно сложные вещи, например, чтобы сделать образ диска достаточно просто скопировать файл блочного устройства в файл образа, а для работы с последовательным портом достаточно прочитать или записать что-либо в файл устройства ввода-вывода.

У каждого файла обязательно есть владелец и группа, которой он принадлежит. На этой схеме строится классическая система прав в Linux и UNIX: владелец, группа и остальные. Более подробно о ней вы можете прочитать в предыдущих частях нашего цикла:

Таким образом пользователи и группы определяют доступ не только к файлам в привычном нам понимании, но и ко всему спектру объектов операционной системы: процессам, устройствам, сокетам. Просто запомните, что все есть файл, а каждый файл имеет владельца и группу.

Условно всех пользователей можно разделить на специальных, служебных и обычных, но повторимся еще раз - деление это условное, все различие между ними заключается в предоставляемых им правах и некоторых иных возможностях. Чтобы получить список пользователей системы откроем файл /etc/passwd:

linux-user-and-group-management-001.jpg

Давайте рассмотрим его структуру подробнее. Каждая строка соответствует одному пользователю и имеет следующий формат:

С именем пользователя все понятно, а вот второй параметр может вызвать некоторое недоумение. Когда-то давно пароли хранились в открытом виде, о чем намекает само название файла, но затем от этой практики отказались и современные системы не хранят пароли в каком-либо виде вообще, хранится только сформированный по специальному алгоритму хеш, такие пароли в Linux называются затененными ( shadow). Для такого пароля во втором поле всегда ставится символ x.

UID (User identifier) и GID (Group identifier) - числовые идентификаторы пользователя и группы. Важно понимать, что система различает пользователей именно по UID, а не по наименованиям и многие системы имеют возможность создать несколько пользователей с одинаковым UID, с точки зрения системы это будет один и тот же пользователь.

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

В реальных сценариях данную возможность использовать не следует, так как наличие таких пользователей может вызвать конфликты в системе. Например, Gnome 3 в Debian 10 просто отказался загружаться после того, как мы создали такого пользователя.

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

Следующие два поля указывают на домашнюю директорию пользователя и его командную оболочку. Разным пользователям можно назначить разные командные оболочки, скажем, ваш коллега предпочитает zsh, то вы можете без проблем назначить ему любимую оболочку.

Рассмотрение командных оболочек Linux выходит за рамки данной статьи, поэтому мы оставим эту тему, но расскажем о двух специализированных "оболочках", которые указывают, когда пользователю запрещен интерактивный вход в систему. Это обычно применяется для служб и пользователей от имени которых исполняются некоторые скрипты. Даже если такая учетная запись будет скомпрометирована войти в консоль с ней не удастся.

Обычно для этой цели используется:

В современных системах директория /sbin является символической ссылкой на /usr/sbin. Реже используется "оболочка":

linux-user-and-group-management-002.jpg

Как мы уже говорили выше, всех пользователей можно условно разделить на три группы. К специальным пользователям относятся root (суперпользователь) и nobody (с группами root и nogroup). Это практически полные противоположности, root имеет наименьшие UID и GID - 0 и является обладателем неограниченных прав, он имеет доступ к любому объекту системы и может выполнять любые настройки. В отличие от Администратора Windows, который максимально огражден от деструктивных действий, root может с легкостью уничтожить систему.

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

Предупреждение! Данная команда уничтожает корневую файловую систему, что приводит к ее полной неработоспособности и потере всех данных. Приведена сугубо в качестве примера.

Современные дистрибутивы по умолчанию блокируют выполнение явно деструктивных команд, но не запрещают их, все это выглядит как предупреждение: "так делать опасно, но если ты настаиваешь. "

linux-user-and-group-management-003.jpg

С учетом вышесказанного есть ряд сложившихся правил работы с этим пользователем. Во-первых, не следует выполнять из-под учетной записи суперпользователя повседневную работу. Для разовых действий используйте sudo, для административных работ допустимо временно повышать привилегии с последующим обязательным выходом. Во-вторых, доступ к данной учетной записи должен быть тщательно ограничен, потому как утеря контроля над root равносильно полной потере контроля над системой.

Хорошая практика - сделать учетную запись root недоступной для интерактивного входа (как в Ubuntu) используя для повышения прав исключительно sudo, особенно это касается серверов с доступом к SSH из сети интернет.

Пользователь nobody (никто) - имеет наибольший идентификатор - 65534 и не может являться владельцем ни одного файла в системе, не состоит ни в одной привилегированной группе и не имеет никаких полномочий кроме стандартных. Используется для запуска от его имени процессов с низким уровнем доверия, чтобы ограничить их доступ к системе в случае возможной компрометации. Фактически к nobody будут всегда применяться права для "остальных" и при стандартных наборах привилегий 644 на файлы и 755 на директории он будет иметь возможность исключительно чтения и просмотра содержимого каталогов. Для чувствительных конфигурационных файлов, ключей и сертификатов используются более ограниченные наборы прав 640 или 600, к таким файлам nobody доступа не имеет.

Следующая условная группа - системные пользователи, которые используются для запуска служб и доступа к устройствам, например, www-data для веб-сервера или systemd-network для управления сетью через systemd. Первоначально для них выделялись идентификаторы от 1 до 100, но в связи с большим количеством служб в современных системах этот диапазон расширен до 499 в RHEL и производных от него, и до 999 в системах основанных на Debian.

Существует соглашение, что этот диапазон идентификаторов используется только системными службами и в нем не должно быть обычных пользователей. Однако никто не мешает назначить службе UID выше 1000, а пользователю менее 999, но никаких последствий это иметь не будет и никак не скажется на привилегиях. Это разделение чисто условное и предназначено для повышения удобства администрирования. Встретив в незнакомой системе пользователя с UID до 999, вы будете с большой долей вероятности предполагать, что это служба.

Кроме того, для многих стандартных пользователей идентификаторы зарезервированы, так во всех Debian и основанных на нем дистрибутивах www-data имеет UID и GID - 33, а proxy - 13. Это удобно, скажем вместо:

Но это тоже условность, скажем в отсутствии установленного веб-сервера мы можем назначить "зарезервированный" UID другому пользователю без каких-либо последствий, веб-сервер при установке возьмет ближайший свободный UID, но такие действия безусловно являются дурным тоном.

Многое стороннее ПО, например, сервер 1С и сборки PostgresPro занимают ближайшие свободные идентификаторы с верхнего конца диапазона: 999, 998 и т.д.

Из всего изложенного выше вы должны понимать, что система определяет пользователей по идентификаторам, а не по именам, а присвоение идентификаторов регулируется определенными правилами, но никакие из них, кроме двух специальных (0 для root и 65534 для nobody), не дают каких-либо дополнительных прав или привилегий.

Для более гибкого управления пользователями предназначены группы, они позволяют объединять пользователей по любому произвольному принципу и назначать им дополнительные права. Если мы хотим разрешить пользователю повышение прав, то мы включаем его в группу sudo, при этом мы всегда можем легко узнать, кто именно обладает такой возможностью, достаточно посмотреть участников группы.

Посмотреть список групп можно в файле /etc/group

linux-user-and-group-management-004.jpg

Он имеет следующий формат:

Большая часть полей аналогична записям в файле /etc/passwd и мы не будем подробно останавливаться на них. Разберем последний параметр - пользователи группы. При создании пользователя в Linux, если не указано иное, ему автоматически создается основная группа с повторяющим имя названием. Такой пользователь в последнем поле не указывается. Это хорошо видно на скриншоте выше. Но мы можем создать и отдельную группу, которая первоначально не содержит пользователей, и она будет иметь точно такой же вид записи с пустым последним полем.

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

linux-user-and-group-management-005.jpg

Давайте внимательно посмотрим на скриншот и проанализируем членство созданного при установке пользователя andrey в дополнительных группах. Практически все они связанны с доступом к оборудованию или дают возможность использовать некоторые системные механизмы, скажем группа plugdev предоставляет возможность монтировать съемные устройства.

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

Теперь о паролях, как мы уже говорили, современные системы не хранят пароли в открытом виде, а используют для этого хеши - односторонние криптографические функции, при вводе пароля система вычисляет его хеш и сравнивает с уже сохраненным, если хеши совпадают - то пароль введен верно. Такие пароли в Linux называются "затененными" и хранятся в отдельных файлах. Для пользователей это файл /etc/shadow:

linux-user-and-group-management-006.jpg

Синтаксис этого файла предусматривает девять полей, содержащих следующую информацию:

  • Имя пользователя
  • Хеш пароля, если поле содержит ! или *, это означает, что учётная запись заблокирована и этот пользователь не сможет войти в систему.
  • Дата последней смены пароля -- Количество дней, прошедших с 1 января 1970 г.
  • Число дней, которое должно пройти до смены пароля -- Минимальный срок (в днях), который должен пройти, прежде чем пользователь сможет сменить пароль.
  • Число дней, после которого необходимо сменить пароль -- Максимальный срок (в днях), по истечении которого необходимо сменить пароль.
  • Число дней до предупреждения о необходимости смены пароля -- Число дней до истечения срока действия пароля, в течение которых пользователь получает предупреждение об окончании его срока действия.
  • Число дней до отключения учётной записи -- Число дней после окончания срока действия пароля до отключения учётной записи.
  • Дата отключения учетной записи -- Количество дней, прошедших с 1 января 1970 г.
  • Зарезервированное поле

Наибольший интерес представляет второе поле, содержащее хеш пароля, оно имеет структуру:

Где ID - применяемый тип шифрования, могут использоваться следующие значения:

  • $1 - MD5, самый слабый хеш, в настоящее время не используется
  • $2 - Blowfish, использовался в BSD-системах
  • $5 - SHA-256
  • $6 - SHA-512

В современных системах используется наиболее стойкий хеш SHA-512.

Следующая часть строки - SALT - это соль (модификатор), генерируется случайно для каждого пользователя и используется для увеличения стойкости пароля. Хеш - это односторонняя криптографическая функция, которая позволяет быстро вычислить результат, но сделать обратное преобразование хеша невозможно. Единственный возможный вариант атаки - это подбор. Существуют уже вычисленные значения хеша для наиболее часто используемых сочетаний и словарных слов, т.н. радужные таблицы, с их помощью атака на хеш производится поиском по уже готовой базе.

Соль позволяет исключить атаки при помощи заранее вычисленных значений и при ее случайном значении позволяет скрыть наличие у пользователей одинаковых паролей. На скриншоте выше пользователям ivan и maria были установлены одинаковые пароли, но за счет различной соли они имеют различный хеш.

Ну и наконец ENCRYPTED - это, собственно, хеш. Кроме того, данное поле может содержать спецсимволы: *, ! и !!. Все они обозначают, что учетная запись заблокирована для входа с паролем, но не запрещают иные варианты входа (по SSH-ключу). Символ * обычно используется для системных учетных записей, которым вход в систему запрещен, ! ставится для записей пользователей без пароля или заблокированных администратором (тогда ! ставится перед содержимым поля). Иногда используется символ !!, означающий что данной учетной записи никогда не присваивался пароль (также для такой записи может использоваться просто !).

Для групп используется аналогичный по назначению файл /etc/gshadow

linux-user-and-group-management-007.jpg

Его структура более проста, а поля имеют следующее назначение:

  • Имя группы
  • Хеш пароля, если пароль установлен, не члены группы могут войти в нее, выполнив команду newgrp и указав пароль. Если это поле содержит * или !, ни один пользователь не сможет войти в неё указав пароль.
  • Администраторы группы -- Перечисленные здесь (через запятую) члены группы могут добавлять или удалять членов группы с помощью команды gpasswd.
  • Члены группы -- Здесь перечисляются (через запятую) обычные члены группы, не администраторы.

Поле пароля также может содержать спецсимволы и также как для пользователей символ * используется преимущественно для системных групп, а ! для групп пользователей. По умолчанию пароли групп отсутствуют и вход в них заблокирован, т.е. никто, кроме членов группы, не может войти в группу, а членам пароль не нужен.

Файлы shadow и gshadow содержат важную учетную информацию и должны быть хорошо защищены. Владельцами этих файлов является root:shadow и права доступа для них установлены как 640. Это означает, что вносить изменения в них может только владелец - root, а читать только члены специальной группы shadow. Это дополнительный уровень безопасности, позволяющий исключить доступ к этим файлам добавлением пользователя в группу root (что даст доступ на чтение к другим конфигурационным файлам).

linux-user-and-group-management-008.jpg

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

Поэтому даже если что-то пойдет не так, всегда есть возможность (при условии физического доступа к системе) восстановить состояние этих файлов на момент перед внесением изменений в конфигурацию. В качестве примера приведем следующую ситуацию: вы случайно удалили единственного пользователя с административными правами из группы sudo, root при этом заблокирован, после завершения сеанса в системе не останется ни одного привилегированного пользователя.

7 примеров управления истечением и устареванием пароля Linux с помощью chage


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

Системные администраторы обязаны найти способ заставить разработчиков изменить свой пароль. Заставлять пользователей менять свой пароль с пистолетом на голове не вариант! Хотя большинство сисадминов, которые заботятся о безопасности, могут даже испытывать искушение сделать это.

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

В Debian вы можете установить chage, выполнив следующую команду:

Примечание: по этой команде очень легко сделать опечатку. Вместо chage вы можете в конечном итоге напечатать это как изменение. Пожалуйста, помните, что chage означает «изменить возраст». то есть аббревиатура команды chage похожа на chmod, chown и т. д.,

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

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

Примечание. Однако пользователь root может выполнить команду chage для любой учетной записи.

2. Установите срок действия пароля для пользователя, используя опцию chage -M

Пользователь root (системные администраторы) может установить срок действия пароля для любого пользователя. В следующем примере пароль пользователя RSA истекает через 10 дней после последнего изменения пароля.

Обратите внимание, что опция -M обновит записи «Срок действия пароля» и «Максимальное количество дней между сменами пароля», как показано ниже.

3. Предупреждение об истечении срока действия пароля при входе

4. Пользователь вынужден сменить пароль после истечения срока действия

Если истекает срок действия пароля и пользователь не меняет свой пароль, система заставит пользователя сменить пароль до входа в систему, как показано ниже.

5. Установите срок действия учетной записи для пользователя.

Вы также можете использовать команду chage, чтобы установить дату истечения срока действия учетной записи, как показано ниже, используя опцию -E. Дата, указанная ниже, представлена ​​в формате «ГГГГ-ММ-ДД». Это обновит значение «Срок действия учетной записи», как показано ниже.

6. Принудительно заблокировать учетную запись пользователя через X дней бездействия.

Обычно, если срок действия пароля истек, пользователи вынуждены менять его при следующем входе в систему. Вы также можете установить дополнительное условие, при котором после истечения срока действия пароля, если пользователь никогда не пытался войти в систему в течение 10 дней, вы можете автоматически заблокировать его учетную запись, используя опцию -I, как показано ниже. В этом примере дата «Пароль неактивен» устанавливается равной 10 дням от значения «Срок действия пароля».

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

7. Как отключить устаревание пароля для учетной записи пользователя

Чтобы отключить срок действия пароля для учетной записи пользователя, установите следующее:

Favorite

Добавить в избранное

Главное меню » Linux » Как использовать команду Chage в Linux

(1 оценок, среднее: 5,00 из 5)

Как использовать команду Chage в Linux

О перационная система Linux предоставляет несколько инструментов для управления своей системой. Одним из полезных инструментов Linux является команда «chage». Из своего названия команда «chage» происходит от слов «Изменить возраст», которые используются для изменения такой информации, как продолжительность смены пароля, активизация или неактивность статуса учетной записи, установка даты истечения срока действия учетной записи и установка напоминание об изменении пароля с помощью сигнала тревоги до того, как учетная запись пользователя станет неактивной.

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

Синтаксис команды Chage

Синтаксис служебной программы команды «chage»:

Параметры команды chage

Команда «chage» поддерживает множество полезных опций. Начнем с нескольких примеров, чтобы узнать его функции:

Отображение информации о текущем сроке годности

Чтобы отобразить полную статистику изменения информации учетной записи, используйте параметр «-l». Запустите его с логином на терминале, чтобы получать обновления:

Изменить текущую дату истечения срока действия

Чтобы изменить текущий статус даты истечения срока действия пароля, используйте опцию «-d». Использование этой опции позволит вам заменить текущую дату и отобразить обновленную.

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

Заблокировать учетную запись

Команда «chage» позволяет вам установить продолжительность блокировки учетной записи пользователя, когда она больше не будет доступна.

Параметр «-E» служебной программы «chage» используется для установки даты истечения срока действия пароля учетной записи. Когда вы обновите дату истечения срока действия, ваш пароль будет сохранен. И если вы не измените свой пароль до истечения этого срока, ваша учетная запись будет заблокирована. Это очень полезный вариант с точки зрения безопасности:

(Как видите, дата истечения срока действия обновлена. 1 февраля 2022 года учетная запись будет заблокирована / истечет срок ее действия.)

Читать Общее руководство по устранению неполадок GNU/Linux для начинающих

Максимальное количество дней для смены пароля

Используйте команду « -M », чтобы установить максимальное количество дней, в течение которых пароль может быть изменен.

Итак, чтобы установить его, выполните эту опцию следующим образом:

Ограничение на изменение пароля по истечении срока действия

Команда «chage» поддерживает опцию, которая позволяет вам изменить пароль после истечения срока его действия. После того, как вы установите лимит дней с помощью опции «-I» , это позволит пользователю изменить пароль учетной записи во время периода бездействия:

Текст предупреждения об истечении срока действия пароля

Чтобы установить предупредительный сигнал до того, как учетная запись будет заблокирована, используйте «-W». Он установит продолжительность, в течение которой предупреждающий сигнал будет отображаться при каждом входе в систему. По умолчанию установлено значение 7 дней:

Показать справку

Чтобы получить любую справку о параметрах команды «chage», используйте «-h» в терминале:

Заключение:

В этой статье обсуждались основные функции команды «chage». Команда «chage» используется для изменения даты истечения срока действия пароля учетной записи пользователя, в которой вы можете изменить текущий статус даты истечения срока действия, установить дату истечения срока, чтобы заблокировать учетную запись, активный и неактивный статус и количество дней предупреждения до получения учетной записи. истекший.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.


Ознакомился со всеми предлагаемые в интернете скриптами об уведомлении пользователей о скором истечении срока действия пароля учетной записи в Active Directory. Они все либо через чур сложные и объемные, имея от 70 строк и более, либо недоработанные, что не могут нормально отослать почту. И плюс ко всему, сильно не хотелось разбираться в особенностях скриптования под Power Shell. Поэтому было решено писать на богоспасаемом bash'е с использованием линуксовых утилит для работы с LDAP. Это же гораздо проще, чем PS!
Правда, тут есть ограничение, нужно либо иметь в сети Linux машину, либо ставить WSL (Windows Subsystem for Linux), что делается элементарно. Скажу сразу, что на WSL скрипт не тестировался, но в теории должен работать.

Принцип работы

Каждый день по крону на Linux машине стартует скрипт, который логинится на контроллер домена и проверяет пароли пользователей на истечение их срока действия. Чекаются только активные пользователи с истекающими паролями. Если пароль истекает менее, чем через 15 дней включительно, то шлется письмо на ящик этого пользователя, указанный в AD. Письма будут отсылаться каждый день, пока пароль не будет изменен или не истечет. Когда пароль истек, то по тому же принципу отсылается письмо о просрочке.

Зависимости

Утилита ldapsearch из набора инструментов ldap-utils для сбора информации с AD сервера, калькулятор bc для арифметических вычислений и консольный почтовый клиент mutt для отсылки почты. Который, кстати, можно настроить разными способами и самый распространенный (в моей голове) представлен в статье.

Скрипт

Собственно, сам скрипт, вычисляющий окончание срока действия пароля ADшного пользователя и отсылающий ему по почте оповещение, если пароль скоро будет просрочен:

15 строк, не считая переменных, комментов и шебанга. 15!

Немного теории

TimeSpans

Это интервал времени, который можно представить как разность двух DateTime атрибутов. TimeSpans атрибуты имеют особенность, они могут являться как положительными, так и отрицательными. В контексте AD некоторые атрибуты всегда имеют отрицательное значение, а именно maxPwdAge (максимальный срок действия пароля), который по дефолту равен -36288000000000 . Чтобы перевести в cекунды, его требуется умножить на сто наносекунд == 100*10^-9 (100 умножить на десять в минус девятой степени). Или же разделить на 10^7, что проще, поскольку bc не умеет отрицательные степени.

Упомяну, что сто наносекундных интервалов получило название "тик" (tick). Количество тиков в человеческих единицах времени, скопированные с сайта Майкрософт:

Итак, полученное значение TimeSpans, взятое по модулю, делится на 10.000.000, чтобы перевести его в секунды, затем на количество секунд в часе и на количество часов в сутках. На выходе получается количество дней, пока все просто:

Забавно, что maxPwdAge равен -36288000000000 только в том случае, когда его не трогали. Если атрибут настраивался, то значение становится равным -37108517437440 и остается таким всегда, даже если вернуть все настройки в "как было". При этом, появляется два maxPwdAge, что надо учесть в скрипте для получения верного значения:

В первом блоке или текущее значение атрибута, или последнее заданное, если в текущий момент оно не определено. Во втором дефолтное значение. Это даже логично и можно объяснить, но не буду публиковать догадки.

DateTime

Представляет собой мгновенное время и используется для вычисления даты. Например, дефолтное значение атрибута pwdLastSet (дата последней смены пароля пользователем) записывается как 132178176000000000 в Windows Time формате, что соответствует времени 10 Ноября 2019, 21:00:00 или 1573419600 в Unix Time.

Т.е. записанный в виде DateTime атрибут, указывает на конкретную дату и время.

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

Описание работы

Список всех пользователей с истекающими паролями

userAccountControl=512 - фильтр для поиска пользователей. Значение 512 соответствует активному (не отключенному) пользователю с ограниченным сроком действия пароля. Подробно описывал в заметке про виндовые пользовательские атрибуты. Подразумевается, что sAMAccountName содержит имя пользователя, что и должно быть в норме.

Срок жизни пароля

Запрос берет значение атрибута maxPwdAge из групповых политик домена. Для удобства вычислений берется значение по модулю, отсекая минус. Параметр -s base говорит взять первый параметр политик, который и является нужным. Не исключено, что при использовании нескольких политик, надо брать разные значения атрибута из других мест, но для подавляющего большинства случаев, с единой политикой, этого достаточно.

Время последней смены пароля пользователем

Возвращает время последней смены пароля пользователя в Windows time формате. Пока берется как есть, в следующей команде будет переводится в удобочитаемый формат.

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

Вычисляется время в днях до истечения пароля пользователя:

Тут есть две не совсем понятных штуки, это $(date +%s) и 11644473600 . Поскольку скрипт выполняется в Linux среде, надо перевести формат даты из Windows time в Unix time. 11644473600 - разница между Windows time и Unix time в секундах. Т.е. -11644473600 в Unix time формате это Monday, 1 January 1601 .
date +%s - текущее время в Unix time формате.

$PWD_LAST_SET+$MAX_PWD_AGE - дата исчения пароля в тиках. $PWD_LAST_SET+$MAX_PWD_AGE)/10000000 тоже самое, но в секундах. Вычитая 11644473600 - получается дата исчения пароля в Unix time формате. Вычитая из получившегося числа текущую дату - количество секунд до истечения пароля, которая преобразуется в количество дней.

Самое простое. Этот почтовый клиент был выбран и-за простоты настройки и легкости смены конфигураций. А еще он умеет отсылать почту от любого почтового сервиса по имеющимся кредам. Как видно из скрипта, используется параметр -F /root/.muttrc_pass_exp , указывающий на файл конфигов, который выглядит так:

В конфиге приведены настройки для отсылки с Яндекса. Уверен, что настроить на любой другой почтовый сервис не составит труда.

Читайте также: