Изменяем пароль пользователя в Linux. Ubuntu Manpage: passwd - изменяет пароль пользователя

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

Для изменения паролей в Linux служит команда passwd . Команду можно выполнять без указания каких-либо параметров, либо явно указать имя пользователя, пароль которого вы хотите сменить (в данном случае требуются права суперпользователя). После чего вам нужно будет ввести текущий пароль, а затем дважды ввести новый пароль.

Меняем пароль текущего пользователя

Чтобы сменить пароль текущего пользователя выполните команду passwd без параметров:

После этого нужно будет ввести текущий пароль и нажать клавишу Enter , затем ввести новый пароль и снова нажать Enter и, наконец, еще раз ввести новый пароль и нажать Enter .

Changing password for yuriy. (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passed: password updated successfully

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

Если вдруг вы получили сообщение:

You must choose a longer password

Это означает, что вы ввели очень простой (или короткий) пароль. В таком случае повторите команду passwd и введите более сложный пароль (как минимум длиной от 6 до 8 символов, пароль должен включать цифры, прописные и строчные символы). Чтобы избежать проверки пароля на сложность необходимо выполнять команду passwd через sudo (см. ниже).

Меняем пароль произвольного пользователя

Чтобы сменить пароль любого пользователя вам необходимо запускать программу passwd под пользователем root или через sudo . Например, чтобы сменить пароль пользователя с именем pingvinus необходимо выполнить:

Sudo passwd pingvinus

В данном случае вам нужно будет ввести только новый пароль:

Enter new UNIX password: Retype new UNIX password: passed: password updated successfully

Здесь пароль не проверяется на сложность и можно задавать совсем простые и короткие пароли.

Дополнительная информация

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

PASSWD(1)

НАЗВАНИЕ
passwd,yppasswd - смена входного пароля

СИНТАКСИС

Passwd [входное_имя]

ОПИСАНИЕ
Команда passwd меняет (или устанавливает) пароль, связанный с входным_именем пользователя.

Обычный пользователь может менять только пароль, связанный с его собственным входным_именем.

Команда запрашивает у обычных пользователей старый пароль (если он был), а затем дважды запрашивает новый. После первого запроса проверяется, достаточен ли "возраст" старого пароля. Возраст - это промежуток времени (обычно несколько дней), который должен пройти между сменами пароля. Если возраст недостаточен, новый пароль отвергается и passwd завершается; см. passwd(4) .

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

Технические требования к паролям:

  1. Каждый пароль должен содержать не менее 6 симво лов. Значащими являются только первые 8.
  2. Каждый пароль должен содержать как минимум две буквы (большие или малые) и хотя бы одну цифру или знак.
  3. Каждый пароль должен отличаться от входного_имени, прочитанного слева направо или задом наперед, и от его циклических сдвигов. При сравнении не делается различий между большими и малыми буквами.
  4. Новый пароль должен отличаться от старого хотя бы тремя символами. При сравнении не делается разли чий между большими и малыми буквами.

Пользователь, у которого действующий идентификатор есть ноль, называется суперпользователем [см. id(1) и su(1) ]. Суперпользователь имеет право изменять любые пароли, поэтому у него старый пароль не запрашивается. Суперпользователь не связан ограничениями на возраст пароля и соответствие техническим требованиям. Суперпользователь может создать пустой пароль, нажимая возврат каретки в ответ на запрос нового пароля.

ФАЙЛЫ

/etc/passwd

СМ. ТАКЖЕ
id(1) , login(1) , su(1) .
crypt(3C) , passwd(4) в Справочнике программиста.

СЮРПРИЗЫ
Пустой пароль не равнозначен отсутствию пароля и запрашивается каждый раз при входе.

passwd - изменяет пароль пользователя

СИНТАКСИС

passwd [параметры ] [УЧЁТНАЯ_ЗАПИСЬ ]

ОПИСАНИЕ

Программа passwd изменяет пароли пользовательских учётных записей. Обычный пользователь может изменить пароль только своей учётной записи, суперпользователь может изменить пароль любой учётной записи. Программа passwd также изменяет информацию об учётной записи или срок действия пароля. Изменение пароля Сначала пользователя попросят ввести старый пароль, если он был. Этот пароль зашифровывается и сравнивается с имеющимся. У пользователя есть только одна попытка ввести правильный пароль. Для суперпользователя этот шаг пропускается, для того чтобы можно было изменить забытый пароль. После ввода пароля проверяется информация об устаревании пароля, чтобы убедиться, что пользователю разрешено изменять пароль в настоящий момент. Если нет, то passwd не производит изменение пароля и завершает работу. Затем пользователю предложат дважды ввести новый пароль. Значение второго ввода сравнивается с первым и для изменения пароли из обеих попыток должны совпасть. Затем пароль тестируется на сложность подбора. Согласно общим принципам, пароли должны быть длиной от 6 до 8 символов и включать один или более символов каждого типа: · строчные буквы · цифры от 0 до 9 · знаки пунктуации Не включайте системные символы стирания и удаления. Программа passwd не примет пароль, который не имеет достаточной сложности. Выбор пароля Безопасность пароля зависит от стойкости алгоритма шифрования и размера пространства ключа. В старых системах UNIX метод шифрования основывался на алгоритме NBS DES. Сейчас рекомендуют более новые методы (смотрите ENCRYPT_METHOD ). Размер пространства ключа зависит от степени произвольности выбранного пароля. При обеспечении безопасности пароля выбирают нечто среднее между сложным паролем и сложностью работы с ним. По этой причине, вы не должны использовать пароль, который является словом из словаря или который придётся записать из-за его сложности. Также, пароль не должен быть названием чего-либо, номером вашей лицензии, днём рождения и домашним адресом. Обо всём этом легко догадаться, что приведёт к нарушению безопасности системы. О том, как выбрать стойкий пароль, читайте в http://ru.wikipedia.org/wiki/ Сложность_пароля.

ПАРАМЕТРЫ

Параметры команды passwd : -a , --all Этот параметр можно использовать только вместе с -S для вывода статуса всех пользователей. -d , --delete Удалить пароль пользователя (сделать его пустым). Это быстрый способ заблокировать пароль учётной записи. Это сделает указанную учётную запись беспарольной. -e , --expire Немедленно сделать пароль устаревшим. В результате это заставит пользователя изменить пароль при следующем входе в систему. -h , --help Показать краткую справку и закончить работу. -i , --inactive ДНЕЙ Этот параметр используется для блокировки учётной записи по прошествии заданного числа дней после устаревания пароля. То есть, если пароль устарел и прошло более указанных ДНЕЙ , то пользователь больше не сможет использовать данную учётную запись. -k , --keep-tokens Указывает, что изменение пароля нужно выполнить только для устаревших ключей аутентификации (паролей). Пользователи хотят оставить свои непросроченные ключи нетронутыми. -l , --lock Заблокировать пароль указанной учётной записи. Этот параметр блокирует пароль, изменяя его значение на вариант, который не может быть шифрованным паролем (добавляется символ «!» в начало пароля). Заметим, что это не блокирует учётную запись. Пользователь всё ещё может войти в систему с помощью другого способа аутентификации (например, с помощью ключа SSH). Чтобы заблокировать учётную запись, администратор должен использовать команду usermod --expiredate 1 (это установит дату устаревания учётной запись равной 2 января 1970 года). Посетитель с заблокированным паролем не может изменить свой пароль. -n , --mindays МИН_ДНЕЙ Задать минимальное количество дней между сменами пароля. Нулевое значение этого поля указывает на то, что пользователь может менять свой пароль когда захочет. -q , --quiet Не выводить сообщений при работе. -r , --repository РЕПОЗИТОРИЙ Изменить пароль в РЕПОЗИТОРИИ . -R , --root КАТ_CHROOT Выполнить изменения в каталоге КАТ_CHROOT и использовать файлы настройки из каталога КАТ_CHROOT . -S , --status Показать состояние учётной записи. Информация о состоянии содержит 7 полей. Первое поле содержит имя учётной записи. Второе поле указывает, заблокирован ли пароль учётной записи (L), она без пароля (NP) или у неё есть рабочий пароль (P). Третье поле хранит дату последнего изменения пароля. В следующих четырёх полях хранятся минимальный срок, максимальный срок, период выдачи предупреждения и период неактивности пароля. Эти сроки измеряются в днях. -u , --unlock Разблокировать пароль указанной учётной записи. Этот параметр разблокирует пароль, возвращая его прежнее значение (которое было перед использованием параметра -l ). -w , --warndays ПРЕД_ДНЕЙ Установить число дней выдачи предупреждения, перед тем как потребуется смена пароля. В параметре ПРЕД_ДНЕЙ указывается число дней перед тем как пароль устареет, в течении которых пользователю будут напоминать, что пароль скоро устареет. -x , --maxdays МАКС_ДНЕЙ Установить максимальное количество дней, в течении которых пароль остаётся рабочим. После МАКС_ДНЕЙ пароль нужно изменить.

ПРЕДОСТЕРЕЖЕНИЯ

Сложность пароля проверяется на разных машинах по разному. Пользователю настоятельно рекомендуется выбирать пароль такой сложности, чтобы ему нормально работалось. Пользователи не могут изменять свои пароли в системе, если включён NIS и они не вошли на сервер NIS. Команда passwd для аутентификации пользователей и для смены паролей использует PAM.

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

    регистрационное имя;

    идентификатор пользователя;

    идентификатор группы по умолчанию;

    поле GECOS (полное имя, номер офиса, рабочий и домашний телефоны);

    начальный каталог;

    регистрационный интерпретатор команд.

Вот примеры правильно составленных строк файла /etc/passwd:

root:jsg8Y.lp6uWMo:0:0:The System,x6096,:/:/bin/csh jl:Hwex6bM8cT3/E:100:0:Jim Lane,ECT8-3,:/staff/jl:/bin/sh dotty:oP0vdZ/s93ZiY:101:20::/home/korbel/dotty:/bin/csh

Файл /etc/passwd часто используется несколькими системами через СУБД, такую как NIS или NIS+. Более подробную информацию на эту тему вы найдете в главе 18.

Ниже рассматривается назначение отдельных полей файла /etc/passwd.

Регистрационное имя

Регистрационные имена (называемые также пользовательскими именами) должны быть уникальными. Как правило, они содержат не более восьми символов*. Если используется база данных NIS или NIS+, длина имени ограничена 8 символами независимо от операционной системы.

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

Регистрационные имена могут содержать как строчные, так и прописные буквы. Правда, большинство почтовых систем (включая sendmail ) предполагает, что используются только строчные буквы. По этой причине мы рекомендуем избегать употребления прописных букв в регистрационных именах за исключением случая, когда пользователям не нужно работать с электронной почтой.

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

Любая жестко заданная схема в конечном итоге приводит к появлению дубликатов имен или слишком длинных имен, поэтому иногда придется делать исключения. В случае появления длинного имени можно в файле /etc/mail/aliases задать две версии одного и того же имени, по крайней мере, для электронной почты.

Например, схема именования может быть такой: первый инициал и фамилия каждого сотрудника. Пользователь Брент Браунинг (Brent Browning), таким образом, превратится в "bbrowning", но девять символов — слишком много. Лучше присвоить этому пользователю регистрационное имя "brentb", a "bbrowning" сделать элементом файла aliases :

bbrowning: brentb

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

Когда пользователь работает за несколькими машинами, то регистрационные имена должны быть уникальными в двух аспектах. Во-первых, необходимо, чтобы имя конкретного пользователя на всех машинах было одним и тем же. Это предусматривается главным образом для удобства — самого пользователя и администратора.

Во-вторых, конкретное регистрационное имя всегда должно относиться к одному и тому же лицу. Если в сетевой среде одно имя принадлежит двум разным пользователям, это приводит к возникновению слабых мест в системе защиты. Например, если записи scott@boulder и scott@refuge относятся к разным пользователям, то при определенных обстоятельствах оба пользователя могут получить доступ к файлам друг друга.

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

Зашифрованный пароль

Пароли хранятся в файле /etc/passwd в зашифрованном виде. Если только вы не производите DES-кодирование в уме (в этом случае мы очень хотели бы с вами познакомиться), необходимо либо установить содержимое этого поля с помощью команды passwd (или yppasswd , если используется база данных NIS), либо скопировать строку, содержащую зашифрованный пароль, из другой учетной записи.

Редактируя файл /etc/passwd для создания новой учетной записи, в поле зашифрованного пароля поставьте звездочку (*). Она воспрепятствует несанкционированному использованию учетной записи до установки реального пароля. Никогда не оставляйте это поле пустым, иначе в системе защиты возникнет огромная брешь, поскольку для доступа к такой учетной записи пароль не требуется.

В системах, где применяются стандартные DES-пароли, длина незашифрованного пароля не может превышать 8 символов. Более длинные пароли допускаются, но значащими в них будут только первые 8 символов. Зашифрованный пароль будет иметь длину 13 символов независимо от длины исходного пароля. В алгоритме используется случайная двухсимвольная "примесь", чтобы одному исходному паролю соответствовало несколько зашифрованных форм. Таким образом, факт выбора пользователями одинаковых паролей не может быть выявлен путем просмотра файла passwd.

В HP-UX существует "доверительный режим", при котором допускаются пароли любой длины. Это достигается путем многократного применения алгоритма DES, по одному разу для каждого 8-символьного сегмента.

В Red Hat и FreeBSD поддерживаются пароли MD5, которые также могут иметь произвольную длину. Зашифрованные таким способом пароли легко распознать, так как они имеют длину 31 символ и всегда начинаются с последовательности

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

В Solaris теневые пароли обязательны. Необходимо модифицировать файл теневых паролей при подключении и отключении пользователей, чтобы он был согласован с файлом /etc/passwd . Структура файла shadow в Solaris описана в параграфе 6.4.

Идентификатор пользователя

В большинстве современных систем идентификатор пользователя (UID) — это 32-разрядное целое число в диапазоне от 0 до 2147483647. Но для обеспечения совместимости со старыми системами мы рекомендуем, чтобы значение самого старшего идентификатора по возможности не превышало 32767. В текущих версиях Linux максимальное значение UID равно 65535, но подобное положение может измениться в будущем.

По определению пользователь root имеет идентификатор 0. В большинстве систем есть также псевдопользователи bin (идентификатор 1) и daemon (идентификатор 2). Как правило, псевдоимена помещаются в начало файла /etc/passwd , и им назначаются низкие идентификаторы. Чтобы зарезервировать побольше номеров для неперсонифицированных пользователей, рекомендуем присваивать реальным пользователям идентификаторы, начиная с номера 100.

Нежелательно создавать более одной учетной записи с идентификатором 0. Может показаться удобным иметь несколько суперпользовательских записей с разными интерпретаторами команд и паролями, но в действительности это создает дополнительные бреши в системе защиты и приводит к лишним трудностям. Если нескольким пользователям необходимо быть администраторами, пусть они применяют команду sudo .

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

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

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

Идентификатор группы по умолчанию

Идентификатор группы (GID) представляет собой 16- или 32-разрядное целое число со знаком или без. Идентификатор 0 зарезервирован для группы с именем root или wheel , а идентификатор 1 обычно принадлежит группе daemon .

Группы определяются в файле /etc/group . В старых версиях UNIX пользователь мог быть членом только одной группы. Для выбора эффективного идентификатора группы, используемой по умолчанию при входе в систему, брали значение поля GID из файла /etc/passwd . Новейшие версии UNIX позволяют пользователю быть членом до 16 групп одновременно, поэтому поле GID в файле /etc/passwd никогда не используется и, по сути дела, является рудиментом старой эпохи. Тем не менее, значение поля продолжают включать в список групп пользователя.

В HP-UX список групп пользователя инициализируется во время регистрации на основании файла /etc/logingroup , а не /etc/group . Мы рекомендуем сделать файл /etc/logingroup символической ссылкой на файл /etc/group , чтобы ОС HP-UX вела себя так же, как и другие системы при работе в нескольких группах.

Единственный раз, когда эффективный идентификатор учитывается, — при создании новых файлов и каталогов. Если используется семантика BSD, новые файлы наследуют значение GID у своего родительского каталога. В противном случае им назначается текущий эффективный идентификатор группы, которой принадлежит владелец. Изменить этот идентификатор можно с помощью команды newgrp .

Большинство систем по умолчанию не используют семантику BSD, но ее можно активизировать с помощью опции grpid команды mount либо путем установки для нужных каталогов бита SGID (2000). Во FreeBSD этот режим всегда включен, так как в данной системе нет команды newgrp .

Поле GECOS

Поле GECOS не имеет четко определенного синтаксиса. Первоначально в Bell Labs его использовали для регистрации информации, необходимой при передаче пакетных заданий из UNIX-системы мэйнфрейму, работающему под управлением GECOS. Сейчас осталось одно название.

Как правило, это поле используют для хранения персональной информации о каждом пользователе. Некоторые программы заменяют символ "&" в поле GECOS регистрационным именем пользователя, что позволяет немного сократить объем вводимых данных. В частности, это относится к программам finger и sendmail . Лучше не полагаться на подобную возможность.

Программа finger интерпретирует разделенные запятыми элементы поля GECOS в следующем порядке:

    полное имя (часто используется только это поле);

    номер офиса;

    рабочий телефон;

    домашний телефон.

С помощью команды chfh (passwd -g в Solaris) можно изменять информацию, содержащуюся в поле GECOS. Эта команда полезна для ведения и обновления списка телефонных номеров, но ею часто злоупотребляют: пользователь может изменить информацию так, что она станет нецензурной или некорректной. В нашем факультетском компьютерном центре, который посещают толпы старшекурсников, эту команду пришлось отключить.

Начальный каталог

При входе в систему пользователь попадает в свой начальный каталог. Если на момент регистрации у пользователя нет начального каталога, выводится сообщение наподобие "no home directory" (начальный каталог отсутствует). В некоторых системах допускается продолжение процедуры регистрации, и пользователь попадает в корневой каталог. Есть системы, в которых регистрация без начального каталога не разрешена.

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

Регистрационный интерпретатор команд

В качестве регистрационного интерпретатора, как правило, задается Bourne shell или С shell (соответственно /bin/sh или /bin/csh ), но в принципе это может быть любая программа. В большинстве систем по умолчанию используется интерпретатор Bourne shell, который запускается, если соответствующее поле в файле /etc/passwd не указано. К другим распространенным интерпретаторам относятся ksh (Korn shell), bash (Bourne-again shell) и tcsh (усовершенствованная разновидность С shell).

Во многих системах пользователи могут изменить интерпретатор с помощью команды chsh . В Solaris лишь суперпользователь имеет право менять интерпретатор другого пользователя (с помощью команды passwd -е ), если только не используется база данных NIS или NIS+. Файл /etc/shells содержит список тех интерпретаторов, которые пользователь может выбирать с помощью команды chsh . Пользователь root может применять эту команду без ограничений. Проверьте, чтобы элементы файла /etc/shells



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: