Управление паролями

Последнее обновление: 14.03.2024

Команда passwd

Команда passwd применяется для управления паролями, позволяя пользователям изменять свой собственный пароль, а администраторы могут использовать эту команду для изменения пароля другого пользователя. Также эту команду можно использовать для установки срока действия пароля и для обслуживания учетной записи (например, блокировать или разблокировать ее).

passwd [options] [USERNAME]

Команда принимает два необязательные параметры options и также необзательный аргумент USERNAME. Аргумент USERNAME указывает на логин пользователя, для которого устанавливается пароль. Если этот параметр не указан, то пароль устанавливается для текущего пользователя.

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

  • -d, --delete: удаляет пароль для указанной учетной записи

  • -e, --expire: принудительно делает истекшим пароль для указанной учетной записи. В итоге при следующем логине пользователь будет вынужден изменить свой пароль

  • -k, --keep-tokens: меняет пароль, только если срок его действия истек

  • -l, --lock: блокирует пароль указанной учетной записи

  • -S, --status: сообщает о состоянии пароля для указанной учетной записи

  • -u, --unlock: разблокирует пароль указанной учетной записи

  • -n, --mindays MIN_DAYS: минимальное количество дней до смены пароля

  • -i, --inactive INACTIVE: автоматически прекращает срок действия учетной записи, если она не использовалась в течение периода, заданного параметром INACTIVE (данный параметр задает количество дней).

  • -w, --warndays WARN_DAYS: устанавливает количество дней до истечения срока действия пароля, в течение которых пользователь будет получать предупреждение об истечении срока действия

  • -x, --maxdays MAX_DAYS: устанавливает максимальное количество дней до смены пароля на MAX_DAYS. В течение этого периода пользователь может использовать свой пароль. По умолчанию это 99999 дней или где-то 273 года.

Например, создадим пользователя "superuser1" и затем изменим ему пароль:

eugene@Eugene:~$ sudo useradd superuser1
eugene@Eugene:~$ sudo passwd superuser1
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password: 
passwd: password updated successfully
eugene@Eugene:~$ 

Как видно из вывода, Linux посчитал введенный пароль плохим, тем не менее пароль был изменен.

Если потребуется совсем удалить пароль, то можно применить опцию -d:

eugene@Eugene:~$ sudo passwd -d superuser1
passwd: password changed.

Настройка политики паролей

Для настройки политик проверки качества паролей Linux применяет файл /etc/security/pwquality.conf. Этот файл определяет правила и настройки, которые контролируют сложность и надежность паролей пользователей. Этот файл используется системой подключаемого модуля аутентификации (pluggable authentication module или PAM) для обеспечения соблюдения политик паролей в системе, таких как минимальная длина, требования к сложности и предотвращение повторного использования. Администраторы могут редактировать этот файл, чтобы настроить параметры политики паролей в соответствии со своими требованиями безопасности. Имея статус администратора с привиллегиями sudo, можно открыть этот файл в текстовом редакторе и изменить. По умолчанию этот файл имеет следующее содержимое:

# Configuration for systemwide password quality limits
# Defaults:
#
# Number of characters in the new password that must not be present in the
# old password.
# difok = 1
#
# Minimum acceptable size for the new password (plus one if
# credits are not disabled which is the default). (See pam_cracklib manual.)
# Cannot be set to lower value than 6.
# minlen = 8
#
# The maximum credit for having digits in the new password. If less than 0
# it is the minimum number of digits in the new password.
# dcredit = 0
#
# The maximum credit for having uppercase characters in the new password.
# If less than 0 it is the minimum number of uppercase characters in the new
# password.
# ucredit = 0
#
# The maximum credit for having lowercase characters in the new password.
# If less than 0 it is the minimum number of lowercase characters in the new
# password.
# lcredit = 0
#
# The maximum credit for having other characters in the new password.
# If less than 0 it is the minimum number of other characters in the new
# password.
# ocredit = 0
#
# The minimum number of required classes of characters for the new
# password (digits, uppercase, lowercase, others).
# minclass = 0
#
# The maximum number of allowed consecutive same characters in the new password.
# The check is disabled if the value is 0.
# maxrepeat = 0
#
# The maximum number of allowed consecutive characters of the same class in the
# new password.
# The check is disabled if the value is 0.
# maxclassrepeat = 0
#
# Whether to check for the words from the passwd entry GECOS string of the user.
# The check is enabled if the value is not 0.
# gecoscheck = 0
#
# Whether to check for the words from the cracklib dictionary.
# The check is enabled if the value is not 0.
# dictcheck = 1
#
# Whether to check if it contains the user name in some form.
# The check is enabled if the value is not 0.
# usercheck = 1
#
# Length of substrings from the username to check for in the password
# The check is enabled if the value is greater than 0 and usercheck is enabled.
# usersubstr = 0
#
# Whether the check is enforced by the PAM module and possibly other
# applications.
# The new password is rejected if it fails the check and the value is not 0.
# enforcing = 1
#
# Path to the cracklib dictionaries. Default is to use the cracklib default.
# dictpath =
#
# Prompt user at most N times before returning with error. The default is 1.
# retry = 3
#
# Enforces pwquality checks on the root user password.
# Enabled if the option is present.
# enforce_for_root
#
# Skip testing the password quality for users that are not present in the
# /etc/passwd file.
# Enabled if the option is present.
# local_users_only

Каждая опция здесь по умолчанию закомментирована и также предваряется поясняющим комментарием. Основные опции:

  • minlen: определяет минимальную длину пароля (восемь символов).

  • minclass: устанавливает минимальное количество требуемых классов символов (три класса, например строчные, прописные и цифры).

  • maxrepeat: ограничивает максимальное количество последовательных одинаковых символов (допускаются два последовательных одинаковых символа).

  • minsequence: устанавливает минимальную длину последовательности (четыре символа, например, "1234" или "abcd")

  • maxclassrepeat: ограничивает максимальное количество последовательных символов из одного и того же класса символов (допускаются четыре последовательных символа из одного и того же класса).

  • reject_username: гарантирует, что пароль не будет содержать имя пользователя.

chage

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

Команда имеет следующий синтаксис:

chage [options] USERNAME

В качестве обязательного параметра USERNAME команде передается логин пользователя. НЕобязательные параметры представляют следующие опции:

  • -d, --lastday LAST_DAY: установливает дату последней смены пароля в LAST_DAY

  • -E, --expiredate EXPIRE_DATE: назначает дату истечения срока действия учетной записи на EXPIRE_DATE

  • -i, --iso8601: применяет формат ГГГГ-ММ-ДД при печати дат

  • -i, --inactive INACTIVE: автоматически прекращает срок действия учетной записи, если она не использовалась в течение периода, заданного параметром INACTIVE (данный параметр задает количество дней).

  • -l, --list: показать информацию об устаревании учетной записи

  • -m, --mindays MIN_DAYS: минимальное количество дней до смены пароля

  • -M, --maxdays: максимальное количество дней до смены пароля

  • -w, --warndays WARN_DAYS: устанавливает количество дней до истечения срока действия пароля, в течение которых пользователь будет получать предупреждение об истечении срока действия

Допустим, пусть у нас изначально был создан пользователь superuser1:

sudo useradd superuser1

Несмотря на то, что пароль для пользователя не установлен, к нему также применяется политика пароля. Сначала посмотрим информацию об устаревании пароля для созданной учетной записи с помощью команды chage -l superuser1:

eugene@Eugene:~$ sudo chage -l superuser1
Last password change					: Mar 07, 2024
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7
eugene@Eugene:~$

Команда отображает следующую информацию:

  • Last password change date: показывает дату последнего изменения пароля для учетной записи.

  • Password expiration date: показывает дату истечения срока действия текущего пароля.

  • Password inactive date: показывает дату, когда пароль будет отключен и учетная запись станет недоступна.

  • Account expiration date: показывает дату, когда срок действия учетной записи истечет и она будет отключена.

  • Minimum password age: показывает минимальное количество дней, которое должно пройти, прежде чем пароль можно будет изменить.

  • Maximum password age: показывает максимальное количество дней, в течение которых пароль можно использовать, прежде чем его необходимо будет изменить.

  • Password warning period: это количество дней до истечения срока действия пароля, в течение которого пользователю выдается предупреждение.

Например, изменим дату последнего изменения пароля на 1 декабря 2023 года:

sudo chage -d 2023-12-1 superuser1

И установим дату истечения пароля на 31 декабря 2023 года:

sudo chage -E 2023-12-31 superuser1

Снова посмотрим информацию об устаревании пароля:

eugene@Eugene:~$ sudo chage -l superuser1
Last password change					: Dec 01, 2023
Password expires					: never
Password inactive					: never
Account expires						: Dec 31, 2023
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7
eugene@Eugene:~$ 

pwck

Команда pwck проверяет согласованность /etc/passwd, /etc/shadow и /etc/group. Цель команды — убедиться, что учетные записи пользователей и группы, перечисленные в этих файлах, действительны, а также обнаружить любые несоответствия между ними. Это полезно для поддержания целостности и безопасности системы Linux, поскольку может помочь выявить и исправить ошибки, которые могут возникнуть из-за ручного редактирования этих файлов. Например, если учетная запись пользователя существует в файле passwd, но не существует в файле shadow, команда pwck обнаружит это несоответствие и предложит пользователю исправить его.

Например, проверим согласованность файла "/etc/passwd":

sudo pwck /etc/passwd
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850