Какие поля содержатся в файле etc shadow и etc passwd
Файлы /etc/passwd и /etc/ group в Solaris имеют такой же формат, как и в других системах UNIX , а файл /etc/ shadow одинаков для всех систем ветви System V. Рассмотрим примеры файлов (для этого потребуется посмотреть содержимое упомянутых файлов командой cat или командой more ):
Учетные записи пользователей
Файл состоит из записей, каждая из которых описывает одного пользователя и занимает одну строку. Поля записей разделяются двоеточиями.
Первое поле – имя пользователя в системе. Это имя пользователь вводит для входа в систему . Имя в Solaris должно иметь длину от 2 до 8 символов и содержать только латинские буквы и цифры. Имя пользователя в Solaris может содержать прописные латинские буквы, однако из соображений совместимости с другими системами UNIX рекомендуется использовать только строчные (маленькие) буквы.
Второе поле – признак наличия пароля. Пустое поле означает отсутствие пароля. Для фактического отсутствия пароля у пользователя необходимо, кроме того, чтобы второе поле в файле /etc/ shadow в описании этого пользователя имело значение NP .
Третье поле – идентификатор пользователя , UID .
Четвертое поле – идентификатор главной группы пользователя , GID .
Пятое поле (иногда его называют GECOS) – описание пользователя. Обычно оно содержит полное имя пользователя (имя и фамилию) и координаты для связи с ним – номер офиса, адрес, телефон или пейджер .
Шестое поле – домашний каталог пользователя . При интерактивном входе в систему пользователь попадает именно в этот каталог сразу после успешного входа. Кроме этого, некоторые сетевые службы (например, ftpd ) требуют, чтобы у каждого пользователя, пытающегося получить доступ к сетевой службе , был "честный", т.е. на самом деле существующий и доступный для пользователя домашний каталог .
Седьмое поле – командный процессор , который будет запущен для пользователя при интерактивном входе в систему . Некоторые сетевые службы (например, ftpd ) требуют, чтобы у каждого пользователя, пытающегося получить доступ к сетевой службе , был существующий в системе на самом деле командный процессор . Файл /etc/shells описывает доступные в системе командные процессоры , которые следует назначать пользователям. Сразу после установки системы файл /etc/shells не существует. Системный администратор должен создать его вручную, если он требуется для каких-то программ в системе, например, для ftpd .
Относительно содержания поля GECOS следует сделать несколько замечаний.
Поле GECOS часто называют полем комментария, и это верно: в нем следует записывать контактную информацию о пользователе. Системному администратору ничего не скажет строка в файле протокола , которая свидетельствуюет о проблеме, вызванной работой пользователя ikonst34. Кто это? Иван Константинович из планового отдела или Илья Константинов из технического? Или это Иконников Станислав из филиала 34? Чтобы не мучаться ассоциациями, навеянными именем пользователя, а точно знать, кто скрывается за лаконичным username , следует заполнять поле комментария.
Каждый элемент этого поля (например, полное имя , номер комнаты в офисе, контактный телефон) принято отделять от других запятой, но это необязательное требование. В настоящее время, к сожалению, не существует строго определенного правила заполнения поля комментария. Хорошим стилем является указание в этом поле следующей информации:
- полные фамилия, имя и (если это необходимо для однозначной идентификации ) отчество пользователя или, если это учетная запись предопределенного псевдопользователя типа bin , полное название приложения, использующего эту запись;
- номер комнаты и ее местоположение, или контактное лицо, ответственное за запуск приложения, использующего запись;
- рабочий телефон;
- другая контактная информация ( пейджер , факс, мобильный телефон и т.п.).
Не всегда требуется указывать всю эту информацию. На деле достаточно иметь ровно столько сведений, сколько требуется системному администратору для однозначной идентификации владельца учетной записи. Пожалуйста, только имейте в виду – не одному-единственному конкретному системному администратору , а любому администратору , которому придется управлять созданной вами системой. Вдруг нынешний системный администратор уволится или уедет в отпуск? Сможет ли его преемник или заместитель быстро разобраться в записях в /etc/passwd ? Делайте записи в поле комментария полезными сведениями, а не отписками.
Например, можно ожидать нечто вроде следующих записей в /etc/passwd :
Последнее, что следует сказать о поле GECOS: почему оно так называется.
В свое время компания General Electric владела компьютером, операционной системой которого была GECOS ( General Electric Comprehensive Operating System ). Компьютеры под управлением UNIX использовались для подготовки задач печати для этого компьютера. Изначальным назначением поля комментария было хранение идентификационной информации для задач, которые были предназначены для системы GECOS.
Этот файл тоже описывает пользователей. В нем хранятся зашифрованные пароли пользователей. Формат файла таков:
- первое поле – имя пользователя ;
- второе поле – зашифрованный пароль, *LK* означает, что учетная запись заблокирована ( locked ), а NP – что пароль отсутствует (no password );
- третье поле – число дней между 1 января 1970 года и датой последнего изменения пароля;
- четвертое поле – минимальное количество дней, которое должно пройти от одной смены пароля до другой;
- пятое поле – максимальное количество дней, которое пароль считается действительным; по истечении этого количества дней система попросит ввести новый пароль, так как старый утратит силу;
- шестое поле – количество дней, за которое система предупредит пользователя о необходимости смены пароля;
- седьмое поле – количество дней, которое пользователь может не работать в системе и считаться активным; по истечении этого количества дней учетная запись автоматически блокируется;
- восьмое поле – дата, до которой учетная запись считается действительной; после этой даты пользователь не сможет войти в систему;
- девятое поле зарезервировано и сейчас не используется.
Данный формат /etc/ shadow характерен как для Solaris , так и для других подобных System V систем UNIX, например, для Linux.
В /etc/ shadow обязательно присутствуют только первые три поля в каждой записи, остальные могут отсутствовать – все или часть из них. Рекомендуется не вносить исправления в /etc/ shadow вручную, а делать это с помощью программ smc , usermod, useradd, passwd . Однако, в одном случае – если вы забыли пароль root – придется исправлять /etc/ shadow в текстовом редакторе .
Пользовательские файлы конфигурации
У каждого пользователя в домашнем каталоге есть несколько файлов конфигурации. Обычно присутствуют файлы конфигурации командного процессора . Если в системе используется несколько командных процессоров , имеет смысл сделать такие файлы конфигурации для каждого из них; о разных файлах конфигурации командных процессоров см. лекцию 11. Кроме них, могут быть файлы конфигурации графической среды (.Xsession и другие), файлы конфигурации почтовой системы (.elm, . forward и другие), файлы с историей команд (. history , .bash_history) и прочие. Их объединяет то, что их имена практически всегда начинаются с символа "." (точка). Можно увидеть их в списке файлов каталога, если дать команду
Пользовательские файлы конфигураций создаются заранее системным администратором . Стандартные пользовательские файлы конфигураций по умолчанию поставляются вместе с операционной системой и в Solaris располагаются в /etc/skel (от слова skeleton – скелет, т.е. основа). При создании нового пользователя они автоматически копируются из каталога /etc/skel в домашний каталог нового пользователя. При создании нового пользователя или модификации существующей учетной записи можно указать другой каталог с файлами конфигурации, чтобы копировать не файлы по умолчанию, а другие файлы. Их предварительно следует создать и модифицировать в соответствии с желаемыми настройками для новых пользователей.
Модификация файлов в каталоге /etc/skel повлияет только на настройки новых пользователей, которые будут созданы после модификации этих файлов.
Мы будем далее называть /etc/skel каталогом базовых пользовательских файлов конфигурации. После того, как пользователь войдет в систему, он может изменить настройки, сделанные для него в файлах конфигурации, или добавить новые, если системный администратор не запретил ему запись в файлы конфигурации.
Группы пользователей
Группы, определенные в системе, перечислены в файле /etc/ group . В системе могут быть определены и другие группы, если для аутентификации и авторизации помимо файлов /etc/passwd и /etc/ group используются и другие источники (например, каталог LDAP – см. лекцию 8 курса "Системное администрирование ОС Solaris 10").
Первое поле – имя группы .
Второе поле – зашифрованный пароль; это устаревшее поле – в настоящее время нет команды, которая бы позволила установить пароль на группу, и обычно нет необходимости это делать. Если все же такая необходимость появится, то можно установить требуемый пароль какому-нибудь пользователю с помощью программы passwd, а затем копировать поле пароля из /etc/ shadow в /etc/ group . Пароль группы используется в Solaris только программой newgrp . Эта программа требуется для изменения эффективного группового идентификатора пользователя в ходе его интерактивной работы. Если группа, которой соответствует новый групповой идентификатор, имеет пароль, то программа newgrp его запросит.
Третье поле – идентификатор группы ( GID ). Этот идентификатор должен быть уникальным в пределах системы, а в случае использования общих файлов групп и паролей – в пределах всей сети организации. Номера от 0 до 99 и от 60001 до 60002 зарезервированы для системных групп. Создавайте свои группы с идентификаторами от 100 до 60000 включительно.
Четвертое поле – список пользователей через запятую; для этих пользователей данная группа будет являться дополнительной. В Solaris принято по умолчанию, что один пользователь может принадлежать не более чем к 15 дополнительным группам .
Немного обо всем и все о немногом, или практический опыт системного администратора.
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
---|---|---|---|---|---|---|
« Сен | Ноя » | |||||
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Об авторах
/etc/shadow
Итак, сами пользовательские аккаунты определены в /etc/passwd. Системы Linux вдобавок к /etc/passwd содержат его файл-компаньон /etc/shadow. Он, в отличие от /etc/passwd, доступен для чтения только суперпользователю и содержит зашифрованную информацию о паролях. Взглянем на образец строки из /etc/shadow:
drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0
Каждая строка определяет информацию о пароле конкретного аккаунта, поля в ней разделены знаком ":". Первое поле определяет конкретный пользовательский аккаунт, которому соответствует данная «теневая» запись. Во втором поле содержится зашифрованный пароль. Оставшиеся поля описаны в таблице ниже:
поле 3 — количество дней с 01.01.1970 до момента, когда пароль был изменен
поле 4 — количество дней до того, как будет разрешено сменить пароль («0» — «менять в любое время»)
поле 5 — количество дней до того, как система заставит пользователя сменить пароль ("-1" — «никогда»)
поле 6 — количество дней до истечения срока действия пароля, когда пользователь получит предупреждение об этом ("-1" — «не предупреждать»)
поле 7 — количество дней после истечения срока действия пароля, по прошествии которых аккаунт будет автоматически отключен системой ("-1" — «не отключать»)
поле 8 — количество дней, прошедшее с момента отключения этого аккаунта ("-1" — «этот аккаунт включен»)
поле 9 — зарезервировано для будущего использования
Утилиты администрирования учетных записей
Вы уже знаете как вручную добавить новые аккаунты и группы, давайте же теперь рассмотрим различные, экономящие время, утилиты для управления аккаунтами под Linux. Из-за некоторых ограничений мы не будем рассматривать множество деталей, описывающих эти команды. Запомните — вы всегда можете получить больше информации о какой-либо команде если посмотрите её man-страничку. Если вы планируете сдавать LPIC 101 экзамен, вам следует провести побольше времени на ознакомление с каждой из этих команд.
newgrp — По умолчанию, любой файл, который создает пользователь, сразу же присваивается к группе, в которой он состоит, определенной в /etc/passwd. Если пользователь принадлежит к другим группам, он или она может набрать newgrp thisgroup чтобы стать членом группы thisgroup. Затем, любые новые созданные файлы унаследуют членство в thisgroup.
chage — Команда chage используется для просмотра и изменения настроек срока действия паролей, сохраненных в /etc/shadow.
gpasswd — Основная утилита управления группами
groupadd/groupdel/groupmod — Используются для добавления/удаления/изменения групп в /etc/group
useradd/userdel/usermod — Используются для добавления/удаления/изменения пользователей в /etc/passwd. Эти команды могут выполнять и другие полезные функции. Смотрите man для получения дополнительной информации.
pwconv/grpconv — Используются для преобразования passwd и group файлов старого образца в новые shadow passwords. Фактически, все Linux системы уже используют shadow passwords, так что вам никогда не придется использовать эти команды.
Продолжение следует.
Daniel Robbins
Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.
Установка пароля
Вы вернетесь к командной строке. Теперь, самое время задать пароль для вашего нового пользователя.
/etc/passwd, советы и хитрости
Вы вероятно заметили, что в системе намного больше пользовательских аккаунтов, которые определены в /etc/passwd, чем тех, которые логинятся в систему на самом деле. Всё это потому, что различные компоненты Linux используют некоторые аккаунты для повышения безопасности. Обычно, такие системные аккаунты имеют идентификатор (uid) меньший 100, и у многих из них в качестве стартовой оболочки установлена /bin/false. Так как эта программа ничего не делает, кроме как выходит и возвращает код ошибки, это эффективно препятствует использованию этих аккаунтов в качестве обычных аккаунтов для логина — т.е. они предназначены только для внутрисистемного пользования.
Редактирование /etc/passwd
Итак, у вас уже есть готовый файл /etc/passwd, добавьте теперь следующую строку:
testuser:x:3000:3000:LPI tutorial test user:/home/testuser:/bin/false
Мы только что добавили пользователя «testuser» с идентификатором 3000. Мы определили его в группу с таким же идентификатором, которую еще не создали. Но мы можем добавить его к уже имеющейся группе пользователей, если нужно. У этого пользователя установлен комментарий, гласящий «LPI tutorial test user», домашний каталог установлен как "/home/testuser", а командная оболочка — как "/bin/false", в целях безопасности. Если бы мы создавали не тестовый аккаунт, мы бы установили командную оболочку как "/bin/bash". Отлично, теперь сохраните файл и выходите.
Примечания о группах
Замечание насчет соответствия пользователей с группами: на некоторых системах каждый новый логин-аккаунт связан с группой, имеющей то же имя (и обычно идентификатор). На других системах все логин-аккаунты будут принадлежать к одной группе пользователей. Какой из этих методов выбрать зависит от вас. Создание соответствующей группы для каждого пользователя имеет преимущество в том, что позволяет им более легко контролировать их собственный доступ просто помещая доверенных друзей в свою личную группу.
Ручное создание пользователей и групп
Теперь, я покажу как создать аккаунты для пользователя и группы. Лучший путь узнать как это сделать это добавить нового пользователя в систему вручную. Для начала убедитесь что вашей переменной окружения EDITOR соответствует ваш любимый редактор:
Chris Houser
Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.
Лекция №10 Пользователи, группы. Файлы passwd, shadow, group.
28 октября 2009, 17:40
На этой лекции мы поговорим о пользователях (учетных записях) и группах пользователей. Как я уже неоднократно говорил операционная система Linux является многопользовательской системой в которой может одновременно существовать достаточно большое число пользователей, которых можно объединять в группы.
Все пользователи локальной системы перечислены в файле /etc/passwd. Давайте посмотрим содержимое этого файла с помощью команды less /etc/passwd. Каждая строка файла /etc/passwd описывает одну учетную запись. Несмотря на то, что у вас может быть всего два пользователя в системе (root и вы сами), строчек в файле /etc/passwd гораздо больше. Дело в том, что для большинства служб операционной системы Linux существует своя собственная учетная запись с правами необходимыми для нормального функционирования этой службы. Такой подход позволяет повысить безопасность системы. Каждая строка состоит из семи полей разделенных двоеточием. Давайте рассмотрим эти поля. Для примера возьмем следующую строку: igor:x:1000:1000:igor. /home/igor:/bin/bash.
1. igor - мнемоническое представление учетной записи. Хотя система работает только с числовыми именами пользователей, нам проще запоминать имена именно в таком виде.
2. х - раньше в этом поле был пароль. Теперь он находится в другом месте, но поле осталось и сейчас там находится просто символ х.
3. 1000 - цифровое обозначение учетной записи. Его UID.
4. 1000 - числовое обозначение основной группы пользователя (GID). Каждый пользователь может принадлежать нескольким группам, но только одна из групп является для пользователя - основной. Именно та которая указана в четвертом поле файла /etc/passwd. Также пользователь должен обязательно принадлежать хотя бы одной группе. Как правило при создании нового пользователя создается одноименная группа для этого пользователя, которая и является основной.
5. igor. - В этом поле может содержаться описание пользователя, что позволяет администратору более полно описать того или иного пользователя или службу. Данное поле имеет стандартный формат о котором мы поговорим позднее, когда рассмотрим программу создания нового пользователя в системе.
6. /home/igor - путь к домашнему каталогу пользователя.
7. /bin/bash - командный интерпретатор пользователя. Если вы посмотрите на седьмое поле других учетных записей, то заметите, что /bin/bash является интерпретатором по умолчанию для обычных пользователей, /bin/sh - является интерпретатором для различных служб. Если службе для своей работы не нужен командный интерпретатор, то можно встретить запись /bin/false или /bin/nologin. Обе эти строчки не позволяют регистрироваться в системе, с той лишь разницей, что последняя записывает в журнал попытки входа.
Теперь рассмотрим файл в котором хранятся пароли пользователей. Данный файл называется /etc/shadow. В нем по аналогии с файлом /etc/passwd каждая строка описывает одного пользователя и имеет 9 полей разделенных двоеточием. Для просмотра этого файла нужны права администратора. Давайте рассмотрим поля данного файла на примере строки: root. 14438:0:99999:7.
1. root - мнемоническое имя пользователя к которому относится данная строка.
2. ! - в этом поле хранится пароль, а точнее его хеш (хеш пароля). Что такое хеш пароля? Хеш пароля это некая последовательность символов, которая получается после определенных необратимых преобразований над паролем пользователя. Необратимых потому, что обратная процедура: получение исходного вида пароля из хеша пароля представляет собой сложную математическую задачу невыполнимую в определенном заданном промежутке времени (обычно десятилетия и более). Когда вы каждый раз регистрируетесь в системе, то с вашим паролем каждый раз проводится операция (назовем ее хешированием) вычисления хеша пароля и сравнения его с хешем пароля из файла /etc/shadow. Если хеши паролей совпали - пользователь проходит аутентификацию.
По умолчанию в большинстве дистрибутивов применяется алгоритм хеширования md5. Но ничего не мешает вам заменить этот алгоритм на еще более стойкие версии (например md6). Правда в рамках лекции мы этот вопрос рассматривать не будем. Вернемся ко второму полю файла /etc/shadow. В примере вы видите там символ ! (восклицательный знак). Это в данном примере не хеш пароля. Хеш пароля выглядит примерно так: $1$4vN1osMk$EWywQfrBWxCtK45.4ARgc. Первые три символа являются одинаковыми для определенного алгоритма хеширования и позволяют его (алгоритм идентифицировать). В примере $1$ - это идентификатор алгоритма md5. Если перед любым хешем пароля в файле /etc/shadow поставить символ ! или *, то такой пароль будет признан недействительным и учетная запись будет заблокирована.
Пример когда вместо хеша пароля стоит ! характерен для дистрибутива Ubuntu где пользователь root действительно по умолчанию не может зарегистрироваться в системе. Таким образом если вы хотите заблокировать учетную запись пользователя, достаточно перед хешем пароля установить символ !, а чтобы разблокировать учетную запись нужно убрать этот символ.
Поля 3-7 содержат временные параметры пароля. Подробнее смотрите в
man shadow.
Поле 8 - это дата до которой учетная запись будет считаться действительной. По достижении указанного времени запись будет заблокирована. Если поле пустое, то время действия не ограничено.
Поле 9 - это зарезервированное поле.
Группы. Информация о группах хранится в файле /etc/group. Принцип тот же: строка описывает одну группу, есть несколько полей. Полей всего 4-е. Рассмотрим пример строки: shara:x:1002:igor,test.
1. shara - мнемоническое имя группы.
2. х - пароль для группы.
3. 1002 - цифровой код группы.
4. igor,test - пользователи, которые входят в группу. Перечисляются через запятую.
Самый простой файл из рассмотренных. Подробнее останавливаться не будем. Все перечисленные выше файлы можно редактировать любым текстовым редактором, но для большинства операций существуют соответствующие команды. На следующей лекции мы рассмотрим как добавить пользователя в Linux, как создать группу для пользователя, добавить пользователя в группу, удалить пользователя, а также как изменять учетные данные пользователя.
В этом разделе мы познакомимся с механизмом управления аккаунтами в Linux и начнем с файла /etc/passwd, в котором определены все пользователи, которые существуют в системе. Вы можете посмотреть свой файл /etc/passwd, набрав команду less /etc/passwd. Каждой строкой в /etc/passwd определяется аккаунт пользователя. Вот пример из моего /etc/passwd:
drobbins:x:1000:1000:Daniel Robbins:/home/drobbins:/bin/bash
Как видите, в одной строке не так уж много информации. Каждая из них содержит несколько полей, разделённых ":". Первое поле отвечает за имя пользователя (drobbins), второе поле содержит «x». На устаревших Linux-системах второе поле содержало зашифрованных пароль для аутентификации, но фактически, сейчас все Linux-системы хранят эту информацию в другом файле. Третье поле отвечает за числовой пользовательский идентификатор, связанный с конкретным пользователем, а четвертое поле ассоциирует этого пользователя с конкретной группой; скоро мы увидим, где определена группа 1000. Пятое поле содержит текстовое описание аккаунта, в нашем случае это имя пользователя. Шестое поле определяет домашний каталог пользователя, седьмое — устанавливает стартовую оболочку пользователя, которая будет автоматически запускаться когда пользователь входит в систему.
Создание домашней директории
Мы почти закончили. Выполните следующие команды для создания домашнего каталога testuser'а:
/etc/group
Теперь взглянем на файл /etc/group, который определяет группы в системе Linux. Вот примерная строка из него:
drobbins:x:1000:
Формат полей файла /etc/group следующий: первое поле определяет имя группы, второе поле — это поле остаточного пароля, которое сейчас просто зарезервировано x, и третье поле определяет числовой идентификатор для конкретной группы. Четвертое поле (которое пусто в примере выше) определяет всех членов группы.
Вспомните, что в нашем образце строки из /etc/passwd есть «ссылка» на группу с идентификатором 1000. Мы сможем поместить пользователя drobbins в группу drobbins, даже несмотря на отсутствие имени drobbins в четвертом поле /etc/group.
Редактирование /etc/shadow
Сейчас нам нужно добавить запись в /etc/shadow для этого пользователя. Для этого наберите vipw -s. Вас как всегда встретит ваш любимый редактор в котором уже открыт файл /etc/shadow. Теперь скопируйте строку существующего пользовательского аккаунта (того, у которого есть пароль и запись которого длиннее стандартных записей системных аккаунтов)
drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0
Замените имя пользователя в скопированной строке на имя вашего пользователя и убедитесь что все поля (особенно старый пароль) установлены как вам надо:
testuser:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0
Теперь сохраните и закройте.
Редактирование /etc/group
Теперь /etc/passwd и /etc/shadow готовы и самое время как следует настроить /etc/group. Для этого, наберите:
testuser:x:3000:
Теперь сохраните и закройте.
Aron Griffis
Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жанглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».
Файлы /etc/passwd и /etc/ group в Solaris имеют такой же формат, как и в других системах UNIX , а файл /etc/ shadow одинаков для всех систем ветви System V. Рассмотрим примеры файлов (для этого потребуется посмотреть содержимое упомянутых файлов командой cat или командой more ):
Учетные записи пользователей
Файл состоит из записей, каждая из которых описывает одного пользователя и занимает одну строку. Поля записей разделяются двоеточиями.
Первое поле – имя пользователя в системе. Это имя пользователь вводит для входа в систему . Имя в Solaris должно иметь длину от 2 до 8 символов и содержать только латинские буквы и цифры. Имя пользователя в Solaris может содержать прописные латинские буквы, однако из соображений совместимости с другими системами UNIX рекомендуется использовать только строчные (маленькие) буквы.
Второе поле – признак наличия пароля. Пустое поле означает отсутствие пароля. Для фактического отсутствия пароля у пользователя необходимо, кроме того, чтобы второе поле в файле /etc/ shadow в описании этого пользователя имело значение NP .
Третье поле – идентификатор пользователя , UID .
Четвертое поле – идентификатор главной группы пользователя , GID .
Пятое поле (иногда его называют GECOS) – описание пользователя. Обычно оно содержит полное имя пользователя (имя и фамилию) и координаты для связи с ним – номер офиса, адрес, телефон или пейджер .
Шестое поле – домашний каталог пользователя . При интерактивном входе в систему пользователь попадает именно в этот каталог сразу после успешного входа. Кроме этого, некоторые сетевые службы (например, ftpd ) требуют, чтобы у каждого пользователя, пытающегося получить доступ к сетевой службе , был "честный", т.е. на самом деле существующий и доступный для пользователя домашний каталог .
Седьмое поле – командный процессор , который будет запущен для пользователя при интерактивном входе в систему . Некоторые сетевые службы (например, ftpd ) требуют, чтобы у каждого пользователя, пытающегося получить доступ к сетевой службе , был существующий в системе на самом деле командный процессор . Файл /etc/shells описывает доступные в системе командные процессоры , которые следует назначать пользователям. Сразу после установки системы файл /etc/shells не существует. Системный администратор должен создать его вручную, если он требуется для каких-то программ в системе, например, для ftpd .
Относительно содержания поля GECOS следует сделать несколько замечаний.
Поле GECOS часто называют полем комментария, и это верно: в нем следует записывать контактную информацию о пользователе. Системному администратору ничего не скажет строка в файле протокола , которая свидетельствуюет о проблеме, вызванной работой пользователя ikonst34. Кто это? Иван Константинович из планового отдела или Илья Константинов из технического? Или это Иконников Станислав из филиала 34? Чтобы не мучаться ассоциациями, навеянными именем пользователя, а точно знать, кто скрывается за лаконичным username , следует заполнять поле комментария.
Каждый элемент этого поля (например, полное имя , номер комнаты в офисе, контактный телефон) принято отделять от других запятой, но это необязательное требование. В настоящее время, к сожалению, не существует строго определенного правила заполнения поля комментария. Хорошим стилем является указание в этом поле следующей информации:
- полные фамилия, имя и (если это необходимо для однозначной идентификации ) отчество пользователя или, если это учетная запись предопределенного псевдопользователя типа bin , полное название приложения, использующего эту запись;
- номер комнаты и ее местоположение, или контактное лицо, ответственное за запуск приложения, использующего запись;
- рабочий телефон;
- другая контактная информация ( пейджер , факс, мобильный телефон и т.п.).
Не всегда требуется указывать всю эту информацию. На деле достаточно иметь ровно столько сведений, сколько требуется системному администратору для однозначной идентификации владельца учетной записи. Пожалуйста, только имейте в виду – не одному-единственному конкретному системному администратору , а любому администратору , которому придется управлять созданной вами системой. Вдруг нынешний системный администратор уволится или уедет в отпуск? Сможет ли его преемник или заместитель быстро разобраться в записях в /etc/passwd ? Делайте записи в поле комментария полезными сведениями, а не отписками.
Например, можно ожидать нечто вроде следующих записей в /etc/passwd :
Последнее, что следует сказать о поле GECOS: почему оно так называется.
В свое время компания General Electric владела компьютером, операционной системой которого была GECOS ( General Electric Comprehensive Operating System ). Компьютеры под управлением UNIX использовались для подготовки задач печати для этого компьютера. Изначальным назначением поля комментария было хранение идентификационной информации для задач, которые были предназначены для системы GECOS.
Этот файл тоже описывает пользователей. В нем хранятся зашифрованные пароли пользователей. Формат файла таков:
- первое поле – имя пользователя ;
- второе поле – зашифрованный пароль, *LK* означает, что учетная запись заблокирована ( locked ), а NP – что пароль отсутствует (no password );
- третье поле – число дней между 1 января 1970 года и датой последнего изменения пароля;
- четвертое поле – минимальное количество дней, которое должно пройти от одной смены пароля до другой;
- пятое поле – максимальное количество дней, которое пароль считается действительным; по истечении этого количества дней система попросит ввести новый пароль, так как старый утратит силу;
- шестое поле – количество дней, за которое система предупредит пользователя о необходимости смены пароля;
- седьмое поле – количество дней, которое пользователь может не работать в системе и считаться активным; по истечении этого количества дней учетная запись автоматически блокируется;
- восьмое поле – дата, до которой учетная запись считается действительной; после этой даты пользователь не сможет войти в систему;
- девятое поле зарезервировано и сейчас не используется.
Данный формат /etc/ shadow характерен как для Solaris , так и для других подобных System V систем UNIX, например, для Linux.
В /etc/ shadow обязательно присутствуют только первые три поля в каждой записи, остальные могут отсутствовать – все или часть из них. Рекомендуется не вносить исправления в /etc/ shadow вручную, а делать это с помощью программ smc , usermod, useradd, passwd . Однако, в одном случае – если вы забыли пароль root – придется исправлять /etc/ shadow в текстовом редакторе .
Пользовательские файлы конфигурации
У каждого пользователя в домашнем каталоге есть несколько файлов конфигурации. Обычно присутствуют файлы конфигурации командного процессора . Если в системе используется несколько командных процессоров , имеет смысл сделать такие файлы конфигурации для каждого из них; о разных файлах конфигурации командных процессоров см. лекцию 11. Кроме них, могут быть файлы конфигурации графической среды (.Xsession и другие), файлы конфигурации почтовой системы (.elm, . forward и другие), файлы с историей команд (. history , .bash_history) и прочие. Их объединяет то, что их имена практически всегда начинаются с символа "." (точка). Можно увидеть их в списке файлов каталога, если дать команду
Пользовательские файлы конфигураций создаются заранее системным администратором . Стандартные пользовательские файлы конфигураций по умолчанию поставляются вместе с операционной системой и в Solaris располагаются в /etc/skel (от слова skeleton – скелет, т.е. основа). При создании нового пользователя они автоматически копируются из каталога /etc/skel в домашний каталог нового пользователя. При создании нового пользователя или модификации существующей учетной записи можно указать другой каталог с файлами конфигурации, чтобы копировать не файлы по умолчанию, а другие файлы. Их предварительно следует создать и модифицировать в соответствии с желаемыми настройками для новых пользователей.
Модификация файлов в каталоге /etc/skel повлияет только на настройки новых пользователей, которые будут созданы после модификации этих файлов.
Мы будем далее называть /etc/skel каталогом базовых пользовательских файлов конфигурации. После того, как пользователь войдет в систему, он может изменить настройки, сделанные для него в файлах конфигурации, или добавить новые, если системный администратор не запретил ему запись в файлы конфигурации.
Группы пользователей
Группы, определенные в системе, перечислены в файле /etc/ group . В системе могут быть определены и другие группы, если для аутентификации и авторизации помимо файлов /etc/passwd и /etc/ group используются и другие источники (например, каталог LDAP – см. лекцию 8 курса "Системное администрирование ОС Solaris 10").
Первое поле – имя группы .
Второе поле – зашифрованный пароль; это устаревшее поле – в настоящее время нет команды, которая бы позволила установить пароль на группу, и обычно нет необходимости это делать. Если все же такая необходимость появится, то можно установить требуемый пароль какому-нибудь пользователю с помощью программы passwd, а затем копировать поле пароля из /etc/ shadow в /etc/ group . Пароль группы используется в Solaris только программой newgrp . Эта программа требуется для изменения эффективного группового идентификатора пользователя в ходе его интерактивной работы. Если группа, которой соответствует новый групповой идентификатор, имеет пароль, то программа newgrp его запросит.
Третье поле – идентификатор группы ( GID ). Этот идентификатор должен быть уникальным в пределах системы, а в случае использования общих файлов групп и паролей – в пределах всей сети организации. Номера от 0 до 99 и от 60001 до 60002 зарезервированы для системных групп. Создавайте свои группы с идентификаторами от 100 до 60000 включительно.
Четвертое поле – список пользователей через запятую; для этих пользователей данная группа будет являться дополнительной. В Solaris принято по умолчанию, что один пользователь может принадлежать не более чем к 15 дополнительным группам .
Аннотация: Понятие учетной записи и аутентификации. Файлы /etc/passwd и /etc/group, /etc/shadow и /etc/gshadow. Учетная запись root. Пароли в Linux. Команды login, su, newgrp, passwd, gpasswd, chage.
Ход занятия
1. Linux, как и любая unix-подобная система, является не только многозадачной, но и многопользовательской, т.е. эта операционная система позволяет одновременно нескольким пользователям работать с ней. Но система должна как-то узнавать, какой или какие из пользователей работают в данный момент. Именно для этих целей в Linux существует два понятия – учетные записи и аутентификация, которые являются частями одного механизма.
Учетная запись пользователя – это необходимая для системы информация о пользователе, хранящаяся в специальных файлах. Информация используется Linux для аутентификации пользователя и назначения ему прав доступа.
Аутентификация – системная процедура, позволяющая Linux определить, какой именно пользователь осуществляет вход.
Вся информация о пользователе обычно хранится в файлах /etc/passwd и /etc/group.
/etc/passwd – этот файл содержит информацию о пользователях. Запись для каждого пользователя занимает одну строку:
имя пользователя – имя, используемое пользователем на все приглашения типа login при аутентификации в системе.
зашифрованный пароль – обычно хешированный по необратимому алгоритму MD5 пароль пользователя или символ '!', в случаях, когда интерактивный вход пользователя в систему запрещен.
UID – числовой идентификатор пользователя. Система использует его для распределения прав файлам и процессам.
GID – числовой идентификатор группы . Имена групп расположены в файле /etc/ group . Система использует его для распределения прав файлам и процессам.
Настоящее имя пользователя – используется в административных целях, а также командами типа finger (получение информации о пользователе через сеть ).
Домашний каталог – полный путь к домашнему каталогу пользователя .
Оболочка – командная оболочка , которую использует пользователь при сеансе. Для нормальной работы она должна быть указана в файле регистрации оболочек /etc/shells .
/etc/group – этот файл содержит информацию о группах, к которым принадлежат пользователи:
Имя группы – имя, применяемое для удобства использования таких программ, как newgrp .
Шифрованный пароль – используется при смене группы командой newgrp . Пароль для групп может отсутствовать.
GID – числовой идентификатор группы . Система использует его для распределения прав файлам и процессам.
Пользователи, включенные в несколько групп – В этом поле через запятую отображаются те пользователи, у которых по умолчанию (в файле /etc/passwd ) назначена другая группа .
На сегодняшний день хранение паролей в файлах passwd и group считается ненадежным. В новых версиях Linux применяются так называемые теневые файлы паролей – shadow и gshаdow. Права на них назначены таким образом, что даже чтение этих файлов без прав суперпользователя невозможно. Нужно учесть, что нормальное функционирование системы при использовании теневых файлов подразумевает одновременно и наличие файлов passwd и group. При использовании теневых паролей в /etc/passwd и /etc/ group вместо самого пароля устанавливается символ 'x', что и является указанием на хранение пароля в /etc/shadow или /etc/gshadow.
Файл shadow хранит защищенную информацию о пользователях, а также обеспечивает механизмы устаревания паролей и учетных записей. Вот структура файла shadow :
- а - имя пользователя ;
- б - шифрованный пароль – применяются алгоритмы хеширования, как правило MD5 или символ '!', в случаях, когда интерактивный вход пользователя в систему запрещен;
- в - число дней с последнего изменения пароля, начиная с 1 января 1970 года;
- г - число дней, перед тем как пароль может быть изменен;
- д - число дней, после которых пароль должен быть изменен;
- е - число дней, за сколько пользователя начнут предупреждать, что пароль устаревает;
- ж - число дней, после устаревания пароля для блокировки учетной записи;
- з -дней, отсчитывая с 1 января 1970 года, когда учетная запись будет заблокирована;
- и - зарезервированное поле;
Файл gshadow так же накладывает дополнительную функциональность, вкупе с защищенным хранением паролей групп . Он имеет следующую структуру:
Имя группы – имя, используемое для удобства использования таких программ, как newgrp.
Шифрованный пароль – используется при смене группы командой newgrp . Пароль для групп может отсутствовать.
Администратор группы – пользователь , имеющий право изменять пароль с помощью gpasswd .
Список пользователей – В этом поле через запятую отображаются те пользователи, у которых по умолчанию (в файле /etc/passwd ) назначена другая группа .
2. В Linux, кроме обычных пользователей, существует один (и только один) пользователь с неограниченными правами. Идентификаторы UID и GID такого пользователя всегда 0 . Его имя, как правило, root , однако оно может быть легко изменено (или создано несколько символьных имен с одинаковым GID и UID ), так как значение для применения неограниченных прав доступа имеет только GID 0 . Для пользователя root права доступа к файлам и процессам не проверяются системой. При работе с использованием учетной записи root необходимо быть предельно осторожным, т.к. всегда существует возможность уничтожить систему.
3. В Linux используется развитая система распределения прав пользователям. Но для точного опознания пользователя одного имени недостаточно с точки зрения безопасности. Именно поэтому используется и пароль – произвольный набор символов произвольной длины, обычно ограниченной лишь используемыми методами шифрования.
Сегодня в большинстве версий Linux пароли шифруются по алгоритмам 3DES и MD5 (устарело, теперь SHA512). Когда алгоритм 3DES является обратимым, то есть такой пароль можно расшифровать, MD5 – это необратимое преобразование. Пароли, зашифрованные по алгоритму 3DES не применяются при использовании теневых файлов для хранения паролей.
При аутентификации, пароль , введенный пользователем, шифруется тем же методом, что и исходный, а потом сравниваются уже зашифрованные копии. Если они одинаковые, то аутентификация считается успешной.
Учитывая ежедневно увеличивающиеся требования к безопасности, в Linux есть возможность использовать скрытые пароли. Файлы /etc/passwd и /etc/group доступны для чтения всем пользователям, что является довольно большой брешью в безопасности системы. Именно поэтому в современных версиях Linux предпочтительнее использовать скрытые пароли. Такие пароли располагаются в файлах /etc/shadow и /etc/gshadow, для паролей пользователей и групп соответственно.
4. Команда login запускает сеанс интерактивной работы в системе. Она проверяет правильность ввода имени и пароля пользователя, меняет каталог на домашний, выстраивает окружение и запускает командный интерпретатор. Команду login как правило не запускают из командной строки — это обычно за пользователя делают менеджеры консоли — например getty или mgetty .
Команда su ( switch user ) позволяет сменить идентификатор пользователя уже в процессе сеанса. Синтаксис ее прост: su username , где username – имя пользователя , которое будет использоваться. После этого программа запросит пароль . При правильно введенном пароле, su запустит новый командный интерпретатор с правами пользователя, указанного su и присвоит сеансу его идентификаторы. Если имя пользователя опущено, то команда su использует имя root .
При использовании команды su пользователем root она, как правило, не запрашивает пароль .
Команда newgrp аналогична по своим возможностям su с той разницей, что происходит смена группы. Пользователь должен быть включен в группу, которая указывается в командной строке newgrp . При использовании команды newgrp пользователем root она никогда не запрашивает пароль . Синтаксис команды аналогичен синтаксису команды su: newgrp groupname , где groupname – имя группы , на которую пользователь меняет текущую.
Команда passwd является инструментом для смены пароля в Linux. Для смены своего пароля достаточно набрать в командной строке passwd :
Для смены пароля группы и управления группой используется команда gpasswd Для смены пароля достаточно набрать в командной строке gpasswd GROUPNAME . Сменить пароль вам удастся только если Вы являетесь администратором группы. Если пароль не пустой,то для членов группы вызов newgrp пароля не требует, а не члены группы должны ввести пароль . Администратор группы может добавлять и удалять пользователей с помощью параметров -a и -d соответственно. Администраторы могут использовать параметр -r для удаления пароля группы. Если пароль не задан, то только члены группы с помощью команды newgrp могут войти в группу. Указав параметр -R можно запретить доступ в группу по паролю с помощью команды newgrp (однако на членов группы это не распространяется). Системный администратор ( root ) может использовать параметр -A, чтобы назначить группе администратора.
Команда chage управляет информацией об устаревании пароля и учетной записи. Обычный пользователь (не root ) может использовать команду только для просмотра своих параметров устаревания пароля:
Суперпользователь же может использовать также иные параметры, такие как:
-d дата (в формате системной даты, например ДД.ММ.ГГГГ) – устанавливает дату последней смены пароля пользователем.
-E дата – установить дату устаревания пароля учетной записи пользователя
-I N – установить количество дней неактивности N с момента устаревания пароля перед тем как учетная запись будет заблокирована
-m N – задает минимальное количество дней (N) между сменами пароля
-M N – задает максимальное количество дней (N) между сменами пароля
-W N – задает количество дней, за которые будет выдаваться предупреждение об устаревании пароля.
Читайте также: