/etc/passwd

/etc/passwd

/etc/passwd (от англ. password — пароль) — файл, содержащий в текстовом формате список пользовательских учётных записей (аккаунтов).

Является первым и основным источником информации о правах пользователя операционной системы. Существует в большинстве версий и вариантов UNIX-систем. Обязан присутствовать в POSIX совместимой операционной системе.

Содержание

Принципы

login : password : UID : GID : GECOS : home : shell

Каждая строка файла описывает одного пользователя и содержит семь полей, разделённых двоеточиями:

  1. регистрационное имя или логин;
  2. хеш пароля (см. ниже);
  3. идентификатор пользователя;
  4. идентификатор группы по умолчанию;
  5. информационное поле GECOS (см. ниже);
  6. начальный (он же домашний) каталог;
  7. регистрационная оболочка, или shell.

Основным назначением /etc/passwd является сопоставление логина и идентификатора пользователя (UID). Изначально поле пароля содержало хеш пароля и использовалось для аутентификации. Однако, в связи с ростом вычислительных мощностей процессоров появилась серьёзная угроза применения простого перебора для взлома пароля. Поэтому все пароли были перенесены в специальные файлы, такие как /etc/shadow в GNU/Linux или /etc/master.passwd во FreeBSD. Эти файлы недоступны для чтения обычным пользователям. Такой подход называется механизмом скрытых паролей (см. ниже).

root:lZTB0KTrSKy8M:0:0:root:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/false
bin:x:2:2:bin:/bin:/bin/false
<…>
john:H5ned8EV1vank:101:101::/home/john:/usr/bin/csh
bill:7qeFjndagetZk:102:102::/home/bill:/bin/sh


Фрагмент файла /etc/passwd

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

Регистрационные имена должны быть уникальными и представлять собой строки не длиннее 32-х символов (любые, кроме двоеточия и символа новой строки). В некоторых старых версиях UNIX существует ограничение длины в 8 символов, оно же будет действовать при использовании административной базы данных NIS. По сути дела, имя пользователя — это его короткий и легко запоминаемый псевдоним, который используется при входе в систему и часто включается в адреса электронной почты.

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

Идентификатор пользователя — это число от 0 до 2^{32}-1. В старых системах (Minix, ранние версии BSD) оно может быть не более 32 767. Пользователь с идентификатором 0 (обычно root) называется суперпользователем и имеет право на выполнение любых операций в системе. Принято соглашение о выделении «специальным» пользователям (bin, daemon), назначение которых — только запуск определённых программ, маленьких идентификаторов (меньше 100 или, в некоторых дистрибутивах Linux, меньше 500).

Безопасность

В системе могут существовать несколько пользователей с одним идентификатором. Это нередко используется взломщиками, когда они после проникновения в систему создают себе учётную запись с UID=0. В результате они выглядят как обычные пользователи, но на самом деле имеют права root.

Группы пользователей

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

Список групп с их участниками задаётся в /etc/group. В файле же /etc/passwd указывается идентификатор группы по умолчанию.

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

Файл групп

root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
<…>
httpd:x:100:httpd
cpanel:x:101:cpanel


Фрагмент файла /etc/group

/etc/group содержит записи обо всех группах в системе. Каждая его строка содержит

  • Символьное имя группы.
  • Пароль группы — устаревшее поле, сейчас не используется. В нём обычно стоит «x».[1]
  • Идентификатор группы, или GID.
  • Список имён участников, разделённых запятыми.

Пример записи:

bin:x:1:root,bin,daemon

Здесь сообщается, что группа bin имеет GID=1, а входят в неё пользователи root, bin и daemon.

GECOS

Поле GECOS хранит вспомогательную информацию о пользователе (номер телефона, адрес, полное имя и так далее). Оно не имеет чётко определённого синтаксиса.

Первые системы UNIX в компании Bell Labs использовали компьютеры под управлением операционной системы GECOS в качестве спулеров печати и для исполнения ряда других задач; поле GECOS было введено в формат учётной записи пользователя UNIX, чтобы хранить идентификатор пользователя для предъявления системе GECOS (GECOS ID).

Тем не менее, демон fingerd предполагает, что в нём содержатся следующие элементы, разделённые запятыми:

  • Полное имя
  • Адрес офиса или домашний адрес
  • Рабочий телефон
  • Домашний телефон

С помощью утилиты chfn можно изменять эту информацию, а с помощью finger — узнать, например, полное имя любого пользователя в системе (или даже на другом компьютере сети).

Пример строки с заполненным полем GECOS:

tester:x:210:8:Edward Chernenko,Marx Street 10,4554391,5454221:/home/ed:/bin/bash

Домашний каталог

После входа в систему пользователь оказывается в своём домашнем каталоге. Исторически сложилось так, что домашний каталог пользователя root называется /root, а остальные имеют вид /home/имя_пользователя. Но могут применяться и другие схемы.

Если на момент входа в систему домашний каталог отсутствует, то система выдаёт сообщение об ошибке и отказывается допустить пользователя к командной строке. Такое поведение НЕ характерно для GNU/Linux; в большинстве дистрибутивов этой ОС просто выводится предупреждение, после чего пользователь попадает в каталог «/». Это можно изменить посредством установки параметра DEFAULT_HOME в файле /etc/login.defs в значение no.

Следует отметить, что при использовании графического интерфейса (KDE, GNOME) пользователь не увидит предупреждения или сообщения об ошибке, но просто будет выведен из системы безо всяких объяснений (так как оконный менеджер не сможет выполнить запись в нужный каталог, такой как ~/.gnome).

Регистрационная оболочка

В поле регистрационной оболочки задаётся shell, то есть интерпретатор командной строки. Здесь может быть указана любая программа, и пользователь может сам выбирать для себя наиболее подходящую при помощи команды chsh. Тем не менее, некоторые системы в целях безопасности требуют, чтобы суперпользователь явно разрешил использовать приложение в качестве интерпретатора командной строки. Для этого используется специальный файл /etc/shells, содержащий список «допустимых» оболочек.

Управление базой пользователей

Стандартные утилиты
vipw 
запускает текстовый редактор, указанный в переменной среды EDITOR (или редактор по умолчанию, обычно vi(1)), загружая в него копию файла /etc/passwd (в системах GNU/Linux /etc/shadow, во FreeBSD /etc/master.passwd). После закрытия редактора переносит временную копию в сам файл. Не позволяет двум пользователям выполнять редактирование одновременно.
useradd 
создаёт новую учётную запись.
usermod 
изменяет данные учётной записи.
userdel 
удаляет существующую учётную запись.
chfn 
изменяет поле GECOS.
chsh 
устанавливает новый командный интерпретатор.
passwd 
задаёт новый пароль пользователя.

Использование

Почти все программы в современных GNU/Linux-системах обращаются к /etc/passwd через библиотеку glibc.

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

Аналоги

Возможная альтернатива хранению списка пользователей — это сервер, хранящий информацию о них в более эффективной форме (особый случай — это системы класса Win32, где эту функцию выполняет само ядро операционной системы). Более частый для UNIX вариант — сетевая база данных LDAP, которая может обслуживать сразу несколько компьютеров. Тем не менее, на одной машине подобных решений обычно избегают из-за того, что они требуют дополнительной установки специального ПО, часто содержащего и дополнительные уязвимости.

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

passwd: nis

заставляет все библиотечные функции обращаться к системе NIS.

Значением по умолчанию (когда пользователи задаются в /etc/passwd) является

passwd: files

Механизм скрытых паролей

root:13$/Xhw3kaR$Vif2djTL4aQshu8aKfkl0/:12545:0:99999:7:::
daemon:*:12545:0:99999:7:::
bin:*:12545:0:99999:7:::
<…>
john:13$80l1AVB5$6AdyTstdHpsSTsewiac8O1:13283:0:31:3:14:13514:
bill:13$UdKpet5.$ssoFdtbe21qd.FL1gj19/0:13286:0:31:3:14:13514:


Фрагмент файла /etc/shadow

В файле /etc/shadow хранятся хеши паролей всех пользователей в системе. Процессы суперпользователя могут читать его напрямую, а для остальных создана специальная библиотека PAM. Она позволяет непривилегированным приложениям спрашивать у неё, правильный ли пароль ввёл пользователь, и получать ответ. Библиотека PAM как правило действует с привилегиями вызвавшего процесса. Таким образом, хеш не попадает «в чужие руки».

Дело в том, что злоумышленник, имея набор хешей, всегда может осуществить атаку путём перебора паролей. Например, слова из словаря являются ненадёжными паролями, так как можно зашифровать словарь целиком и поискать хеши в том, что получится. Одна из наилучших программ, выполняющих такого рода атаки — John the Ripper. Также весьма популярна утилита crack.

Уровни защиты

В ранних UNIX пароль шифровался с помощью одного из вариантов DES, теперь используется MD5-хеширование или blowfish-хеширование (bcrypt), MD5-хеши всегда записываются после префикса «$1$».

Перед хешированием к паролю добавляются случайные символы — «salt» (соль, от англ. add salt to something — сделать что-либо более интересным; в русскоязычных источниках иногда используется термин «затравка»). Salt также приписывается к началу полученного хеша. Благодаря salt нельзя при простом просмотре файла обнаружить пользователей с одинаковыми паролями.

Обратите внимание, что в /etc/shadow, показанном выше, две учётные записи имеют одинаковый пароль, хотя этого и не видно.

Файл /etc/shadow

Кроме имени (первое поле каждой строки) и хеша (второе поле) здесь также хранятся

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

Даты обозначаются как число дней с 1 января 1970 года (начало эпохи UNIX).

Обязательная регулярная смена паролей — это популярная административная мера, призванная сделать учётные записи более защищёнными. К сожалению, многие пользователи после принудительного изменения возвращают себе старый пароль.

Применение с PAM

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

История

Основные этапы развития схемы пользователей в UNIX:

  1. Все пароли, зашифрованные в DES, хранятся в /etc/passwd.
  2. Пароли перемещаются в /etc/shadow.
  3. Начинает применяться хеш MD5.

Одно из основных событий, заставивших разработчиков перейти к механизму скрытых паролей — это атака червя Морриса.

Червь Морриса

Червь Морриса читал /etc/passwd, пытаясь подобрать пароли к учётным записям. Для этого использовалось имя пользователя (и оно же с буквами в обратном порядке), а также список из 400 наиболее популярных слов. Эта атака привела к масштабному заражению всей сети ARPANET, и именно после этого разработчики придумали /etc/shadow, а также паузы после неправильного ввода пароля.

Библиотечные функции

Эти средства описаны в стандарте POSIX; существуют также другие (здесь не перечисленные) функции, позволяющие просматривать содержимое файлов /etc/passwd и /etc/shadow по записям.

Информационные

Описаны в заголовочном файле pwd.h:

  • getpwuid — получает всю информацию о пользователе по его идентификатору.
  • getpwnam — то же, но по имени пользователя.
  • putpwnam — добавляет запись к уже существующим в /etc/passwd.

Скрытые пароли

Описаны в shadow.h:

  • getspnam — получает всю информацию о пароле пользователя с заданным именем, включая хеш, из файла /etc/shadow. Применять может только суперпользователь.
  • putspent — добавляет запись в /etc/shadow.

См. также

Примечания

  1. Использование «x» или «*» в поле пароля широко используется, чтобы показать, что в данную учётную запись нельзя зайти. По сути, это гарантированно неправильный хеш пароля. Основное применение — в учётных записях псевдопользователей, единственное назначение которых — запуск определённых приложений или владение определёнными файлами. Пример таких пользователей — lp, rpc, uucp. Кроме того, на данный момент принято задавать пароли групп, устаревшее поле в файле /etc/group, в значение «x» (во избежание проблем со старыми программами, которые его использовали).

Литература

  • Эви Немет, Гарт Снайдер, Трент Хейн. Руководство администратора Linux. Установка и настройка = Linux Administration Handbook. — 2-е изд. — М.: Вильямс, 2007. — С. 1072. — ISBN 0-13-148004-9

Ссылки

  • man 5 passwd. — руководство UNIX о строении файла /etc/passwd. Архивировано из первоисточника 19 мая 2012. Проверено 17 июня 2008.

Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "/etc/passwd" в других словарях:

  • Etc/passwd — …   Википедия

  • Passwd — Saltar a navegación, búsqueda El programa passwd (acortamiento del inglés password, contraseña) es una utilidad en sistemas operativos tipo Unix, como GNU/Linux, que se usa para cambiar la contraseña de un usuario. Se usa una función de hashing… …   Wikipedia Español

  • Passwd (command) — passwd is a tool on most Unix and Unix like operating systems used to change a user s password. The passwd entered by the user is run through a key derivation function to create a hashed version of the new password, which is saved. Only the… …   Wikipedia

  • Passwd — may refer to:* passwd (command), tool used for changing passwords on Unix and Unix like operating systems. * passwd (database), the source of user information on Unix and Unix like operating systems. * passwd (file), one way to store user… …   Wikipedia

  • passwd — passwd: /etc/passwd  файл с перечнем пользовательских учётных записей в Unix. passwd (утилита)  утилита Unix систем для управления паролями учётных записей …   Википедия

  • /etc — (от лат. et cetera  и так далее)  директория стандарта FHS, содержащая конфигурационные файлы большинства системных утилит и программ UNIX подобных ОС. Редактирование этих файлов влечёт за собой изменения для всех пользователей… …   Википедия

  • Passwd (file) — The /etc/passwd file is a configuration file used to hold local user data on Unix like operating systems. It has world readable permissions, allowing its contents to be used for name service. The file is named as it originally contained passwords …   Wikipedia

  • Passwd — Unix Systeme zeichnen sich durch eine Vielzahl von Kommandos aus, mit denen sich über eine Shell das Betriebssystem bedienen lässt. Die Syntax dieser Kommandos weicht unter den verschiedenen Systemen voneinander ab. Es existieren die beiden… …   Deutsch Wikipedia

  • PASSWD — Password (unter UNIX), vergl. /etc/passwd …   Acronyms

  • PASSWD — Password (unter UNIX), vergl. /etc/passwd …   Acronyms von A bis Z


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»