Информация, ориентированная на Red Hat Enterprise Linux

6.3. Информация, ориентированная на Red Hat Enterprise Linux

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

6.3.1. Пользователи, группы и разрешения

В Red Hat Enterprise Linux пользователь может зарегистрироваться в системе и обращаться к любым приложениям или файлам, к которым ему разрешён доступ, используя обычную учётную запись. Red Hat Enterprise Linux определяет, может ли пользователь или группа обращаться к этим ресурсам, проверяя разрешения, назначенные для этих ресурсов.

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

  • r — Показывает, что данная категория пользователей может читать файл.

  • w — Показывает, что данная категория пользователей может записывать в файл.

  • x — Показывает, что данная категория пользователей может исполнять файл..

Четвёртый символ (-) показывает, что доступ не разрешён.

Каждое из трёх разрешений назначается трём различным категориям пользователей. Это следующие категории:

  • владелец — Владелец файла или приложения.

  • группа — Группа, которой принадлежит файл или приложение.

  • все — Все пользователи, имеющие доступ к системе.

Как было сказано ранее, увидеть разрешения для файла можно в подробном листинге, который выдаёт команда ls -l. Например, если пользователь juan создаст исполняемый файл foo, команда ls -l foo выведет примерно следующие сведения:

-rwxrwxr-x    1 juan     juan            0 Sep 26 12:25 foo

Разрешения для этого файла показаны в самом начале строки, начиная с rwx. Первый набор символов определяет доступ владельца — например, владелец juan имеет полный доступ, ему разрешено чтение, запись и исполнение файла. Следующий набор символов rwx определяет доступ группы (также полный), а последний набор символов — доступ, разрешённый всем остальным пользователям. В данном примере все пользователи могут читать и исполнять файл, но никаким образом не могут его изменить.

Относительно разрешений и учётных записей пользователей важно иметь в виду, что все приложения, работающие в Red Hat Enterprise Linux, работают в контексте определённого пользователя. Обычно это означает, что если пользователь juan запускает приложение, приложение работает в контексте пользователя juan. Однако в некоторых случаях приложению для выполнения какой-то задачи могут понадобиться дополнительные привилегии. В частности это необходимо приложениям, которые изменяют настройки системы или регистрируют пользователей в системе. Поэтому были созданы специальные разрешения.

В Red Hat Enterprise Linux есть три таких специальных разрешения. А именно:

  • setuid — используется только для приложений, и показывает, что приложение запускается не от имени пользователя, его запустившего, а от имени владельца файла. Это разрешение обозначается символом s вместо x в категории владельца. Если при этом владелец файла не имеет разрешения на выполнение, этот факт отражается буквой S (в верхнем регистре).

  • setuid — используется в основном для приложений, и показывает, что приложение запускается не от имени группы пользователя, его запустившего, а от имени группы, владеющей файлом.

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

  • бит привязки (sticky) — используется в основном для каталогов и показывает, что созданный в каталоге файл может быть удалён только пользователем, его создавшим. Это обозначается символом t вместо x в категории всех пользователей. Если при этом категория «все» не имеет разрешения на выполнение, этот факт отражается буквой T (в верхнем регистре).

    Именно поэтому, в Red Hat Enterprise Linux, бит привязки по умолчанию устанавливается для каталога /tmp/.

6.3.1.1. Имена и коды пользователей и групп

В Red Hat Enterprise Linux имена учётных записей пользователей и групп существуют в основном для удобства людей. Внутри системы используются числовые идентификаторы. Идентификатор пользователя называется UID, а идентификатор групп — GID. Программы, которые предоставляют человеку информацию о пользователях и группах, переводят значения UID/GID в более понятные для него соответствующие имена.

ВажноВажно
 

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

Точнее говоря, если файлы /etc/passwd и /etc/group на файловом сервере и рабочей станции содержат разные UID и GID, неправильное применение разрешений может привести к проблемам безопасности.

Например, если пользователь juan на своём компьютере имеет UID 500, у файлов, которые создаёт juan на файловом сервере, UID владельца будет равен 500. Однако, если пользователь bob регистрируется на этом файловом сервере (или каком-то другом компьютере) и учётная запись пользователя bob также имеет UID 500, bob получит полный доступ к файлам juan и наоборот, к его файлам получит полный доступ первый пользователь.

Таким образом, конфликтов UID и GID следует избегать любой ценой.

В Red Hat Enterprise Linux есть два числовых значения UID и GID, которые имеют особый смысл. Нулевые значения (0) UID и GID выделены для пользователя root, и обрабатываются в Red Hat Enterprise Linux особенным образом — весь доступ автоматически разрешается.

Второе значение — 500, задаёт верхнюю границу кодов UID и GID, зарезервированных для использования системой. В отличие от нулевых UID/GID (0), коды UID и GID, меньшие 500, в Red Hat Enterprise Linux не имеют каких-то особенностей. Однако, такие коды UID/GID никогда не назначаются пользователям, так как есть вероятность, что они используется или будут использоваться в будущем какими-то системными компонентами. За дополнительной информацией об этих стандартных пользователях и группах обратитесь к главе Пользователи и группы в Справочном руководстве по Red Hat Enterprise Linux.

При создании нового пользователя с помощью стандартных средств создания пользователя в Red Hat Enterprise Linux, новым учётным записям автоматически назначается первый свободный UID и GID, начиная с 500. Следующему новому пользователю будет назначен UID/GID 501, ещё одному — UID/GID 502 и т.д.

Краткое описание различных имеющихся в Red Hat Enterprise Linux средств создания пользователей приводится в этой главе ниже. Но перед тем, как вы познакомитесь с этими средствами, следующая глава расскажет о файлах, используемые в Red Hat Enterprise Linux для определения учётных записей и групп.

6.3.2. Файлы, управляющие учётными записями и группами

В Red Hat Enterprise Linux информация об учётных записях пользователей и группах хранится в нескольких текстовых файлах в каталоге /etc/. Чтобы создать новые учётные записи, системный администратор должен либо отредактировать эти файлы вручную, либо использовать специальные приложения, которые вносят необходимые изменения.

В этом разделе описываются файлы в каталоге /etc/, в которых система Red Hat Enterprise Linux хранит информацию о пользователях и группах.

6.3.2.1. /etc/passwd

Файл /etc/passwd доступен на чтение всем и содержит список пользователей, по одному в строке. Каждая строка содержит следующие сведения, разделённые двоеточиями:

  • Имя пользователя — Имя, которое вводит пользователь при входе в систему.

  • Пароль — Содержит зашифрованный пароль (или x, если используются скрытые пароли — более подробно об этом позже).

  • Код пользователя (UID) — Числовой эквивалент имени пользователя, по которому система и приложения определяют права доступа.

  • Код группы (GID) — Числовой аналог имени основной группы пользователя, по которому система и приложения определяют права доступа.

  • GECOS — Поле GECOS, название которого сложилось исторически [1], является необязательным и используется для хранения дополнительной информации (например, полного имени пользователя). Оно может содержать несколько значений, разделённых запятыми. Некоторые утилиты, например finger, обращаются к этому полю за дополнительной информацией о пользователе.

  • Домашний каталог — Абсолютный путь к домашнему каталогу пользователя, например /home/juan/.

  • Оболочка — Программа, запускаемая автоматически при входе пользователя в систему. Обычно это интерпретатор команд (часто называемый оболочкой (shell)). В Red Hat Enterprise Linux по умолчанию это поле содержит /bin/bash. Если это поле не заполнено, используется /bin/sh. Если в этом поле указан несуществующий файл, пользователь не сможет войти в систему.

Ниже приведён пример записи /etc/passwd:

root:x:0:0:root:/root:/bin/bash

Эта строка показывает, что пользователь root имеет скрытый пароль, а также, что его коды UID и GID равны 0. В качестве домашнего каталога root использует каталог /root/, а в качестве оболочки — /bin/bash.

За дополнительными сведениями о /etc/passwd, обратитесь к странице man passwd(5).

6.3.2.2. /etc/shadow

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

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

  • Программа для взлома паролей формирует потенциальные пароли

  • Каждый потенциальный пароль шифруется по алгоритму, используемому системой

  • Затем зашифрованный потенциальный пароль сравнивается с зашифрованными паролями в /etc/passwd.

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

Поэтому пароли (и необязательная информация о сроке их действия) всех пользователей хранятся в файле /etc/shadow, доступном на чтение только пользователю root. Как и в файле /etc/passwd, информация о каждом пользователе размещается на отдельной строке. В каждой строке файла содержатся следующие сведения, разделённые двоеточиями:

  • Имя пользователя — Имя, которое вводит пользователь при входе в систему. Это позволяет программе login получить пароль пользователя (и связанную информацию).

  • Зашифрованный пароль — Пароль, содержащий от 13 до 24 символов. Пароль шифруется с помощью функции crypt(3) или алгоритма хеширования md5. Это поле также может содержать значения, отличные от правильно оформленного зашифрованного или хешированного пароля, в таком случае они используются для управления учётными записями и отражения состояния пароля. Например, если поле содержит ! или *, это означает, что учётная запись заблокирована и этот пользователь не сможет войти в систему. Если поле содержит !!, у пользователя до этого никогда не было пароля (и, не назначив пароль, он не сможет войти в систему).

  • Дата последней смены пароля — Количество дней, прошедших с 1 января 1970 г. (это дата также называется эпохой), до даты, когда пользователь сменил пароль в последний раз. Эта информация используется вместе со следующими полями, управляющими сроком действия пароля:

  • Число дней, которое должно пройти до смены пароля — Минимальный срок (в днях), который должен пройти, прежде чем пользователь сможет сменить пароль.

  • Число дней, после которого необходимо сменить пароль — Максимальный срок (в днях), по истечении которого необходимо сменить пароль.

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

  • Число дней до отключения учётной записи — Число дней после окончания срока действия пароля до отключения учётной записи.

  • Дата, когда учётная запись была отключена — Дата (в днях, прошедших с начала эпохи) , когда учётная запись пользователя была отключена.

  • Зарезервированное поле — Это поле в Red Hat Enterprise Linux игнорируется.

Ниже приведён пример строки файла /etc/shadow:

juan:$1$.QKDPc5E$SWlkjRWexrXYgc98F.:12825:0:90:5:30:13096:

Эта строка содержит следующие сведения о пользователе juan:

  • Его пароль был в последний раз изменён 11 февраля 2005 г.

  • Срок, в течение которого нельзя изменить пароль, не определён

  • Пароль должен меняться каждые 90 дней

  • Пользователь будет получать предупреждение о необходимости его сменить в течение 5 дней

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

  • Срок учётной записи истекает 9 ноября 2005 г.

За дополнительной информацией о файле /etc/shadow обратитесь к странице man shadow(5).

6.3.2.3. /etc/group

Файл /etc/group доступен на чтение всем и содержит список групп, по одной в строке. Каждая строка содержит четыре разделённых запятыми поля, которые содержат следующие сведения:

  • Имя группы — Имя данной группы. Используется различными вспомогательными программами как понятный человеку идентификатор группы.

  • Пароль группы — Если установлен, позволяет пользователям, не являющимся её членами, войти в данную группу, выполнив команду newgrp и указав хранящийся здесь пароль. Если в этом поле стоит x (в нижнем регистре), это означает, что пароль группы скрыт.

  • Код ID (GID) — Числовой эквивалент имени группы. Он используется операционной системой и приложениями при определении прав доступа.

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

Ниже приведён пример строки файла /etc/group:

general:x:502:juan,shelley,bob

Эта строка показывает, что у группы general есть скрытый пароль, её код GID равен 502, а её членами являются juan, shelley и bob.

За дополнительными сведениями о /etc/group обратитесь к странице man group(5).

6.3.2.4. /etc/gshadow

Файл /etc/gshadow доступен на чтение только пользователю root и содержит зашифрованные пароли всех групп, а также информацию о членстве в группах и администраторах. Как и в файле /etc/group, информация о каждой группе размещается на отдельной строке. В каждой строке файла содержатся следующие сведения, разделённые двоеточиями:

  • Имя группы — Имя данной группы. Используется различными вспомогательными программами как понятный человеку идентификатор группы.

  • Зашифрованный пароль — Зашифрованный пароль группы. Если он установлен, не члены группы могут войти в группу, выполнив команду newgrp и указав этот пароль. Если это поле содержит !, ни один пользователь не сможет войти в неё с помощью команды newgrp. Значение !! имеет тот же смысл, что и !, однако, оно также показывает, что раньше пароль никогда не задавался. Если это значение пустое, войти в группу могут только её члены.

  • Администраторы группы — Перечисленные здесь (через запятую) члены группы могут добавлять или удалять членов группы с помощью команды gpasswd.

  • Члены группы — Здесь перечисляются (через запятую) обычные члены группы, не администраторы.

Ниже приведён пример строки файла /etc/gshadow:

general:!!:shelley:juan,bob

Эта строка показывает, что для группы general не задан пароль, и не её члены не могут войти в эту группу с помощью команды newgrp. Кроме этого, администратором группы является shelley, а juan и bob — обычные, непривилегированные пользователи.

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

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

В системе Red Hat Enterprise Linux для управления учётными записями пользователей и группами можно использовать два основных типа приложений:

  • Графическое приложение Менеджер пользователей (User Manager)

  • Набор инструментов для командной строки

За подробными указаниями по использованию Менеджера пользователя (User Manager) обратитесь к главе Управление пользователями и группами в Руководстве по системному администрированию Red Hat Enterprise Linux.

Хотя и Менеджер пользователей (User Manager), и утилиты командной строки, по сути, делают одну задачу, средства командной строки имеют одно преимущество — их можно использовать в сценариях, а следовательно, работу с ними легче автоматизировать.

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

ПриложениеФункция
/usr/sbin/useraddДобавляет учётные записи пользователей. Это средство также используется для определения основной группы и членства в других группах.
/usr/sbin/userdelУдаляет учётные записи пользователей.
/usr/sbin/usermodРедактирует атрибуты учётных записей, в том числе связанные со сроком действия пароля. Для управления на более низком уровне воспользуйтесь командой passwd. Команда usermod также используется для определения основной группы и членства в других группах.
passwdНазначает пароли. Хотя в основном эта команда используется для смены пароля пользователя, она также управляет всеми параметрами срока действия пароля.
/usr/sbin/chpasswdЧитает файл, включающий соответствия имени пользователя и пароля, и обновляет пароли всех перечисленных пользователей.
chageИзменяет политику срока действия пароля пользователя. Для этой цели также может использоваться команда passwd.
chfnИзменяет сведения GECOS.
chshИзменяет оболочку пользователя по умолчанию.

Таблица 6-2. Инструменты командной строки для управления пользователями

В следующей таблице перечислены некоторые наиболее распространённые средства командной строки, предназначенные для создания групп и управления ими:

ПриложениеФункция
/usr/sbin/groupaddДобавляет группы, но не включает в них пользователей. Чтобы затем включить пользователей в данную группу, следует использовать программы useradd и usermod.
/usr/sbin/groupdelУдаляет группы.
/usr/sbin/groupmodИзменяет имена групп или их коды GID, но не меняет членство в группе. Чтобы затем включить пользователей в данную группу, следует использовать программы useradd и usermod.
gpasswdИзменяет членство в группе и назначает пароли, позволяющие войти в эту группу пользователям, которые не являются членами группы, но знают её пароль. Это приложение также используется для указания администраторов группы.
/usr/sbin/grpckПроверяет целостность файлов /etc/group и /etc/gshadow.

Таблица 6-3. Инструменты командной строки для управления группами

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

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

6.3.3.1. Приложения, управляющие разрешениями для файлов

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

ПриложениеФункция
chgrpМеняет группу, владеющую данным файлом.
chmodМеняет разрешения доступа для заданного файла. Также может назначать специальные разрешения.
chownМеняет владение файлом (и также может поменять группу).

Таблица 6-4. Инструменты командной строки для управления разрешениями

Эти атрибуты также можно изменить в графическом окружении GNOME или KDE. Для этого щёлкните значок файла правой кнопкой мыши (это может быть значок в графическом файловом менеджере или на рабочем столе) и выберите Свойства (Properties).

Замечания

[1]

GECOS расшифровывается как General Electric Comprehensive Operating Supervisor, так называлась операционная система для мэйнфреймов. Это поле использовалось в компании Bell Labs, в первой реализации UNIX. В компании было много разных компьютеров, и один из них работал под управлением GECOS. Это поле использовалось, когда система UNIX отправляла пакетные задания и задания печати системе GECOS.