Введение в администрирование UNIX/Безопасность операционной системы UNIX

Материал из Викиучебника — открытых книг для открытого мира
Перейти к навигации Перейти к поиску

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

Введение в безопасность UNIX[править]

Основы информационной безопасности[править]

Презентация 4-01: информационная безопасность

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

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

Важным элементом политики безопасности является управление доступом: ограничение или исключение несканкционированного доступа к информации и программным средствам. При этом используются два основных понятия: объект и субъект системы. Объектом системы мы будем называть любой её идентифицируемый ресурс (например, файл или устройство). Доступом к объекту системы – некоторую заданную в ней операцию над этим объектом (скажем, чтение или запись). Действительным субъектом системы назовем любую сущность, способную выполнять действия над объектами (имеющую к ним доступ). Действительному субъекту системы соответствует некоторая абстракция, на основании которой принимается решение о предоставлении доступа к объекту или об отказе в доступе. Такая абстракция называется номинальным субъектом. Например, студент МГТУ – действительный субъект, его пропуск в МГТУ – номинальный. Другим примером может служить злоумышленник, прокравшийся в секретную лабораторию с украденной картой доступа – он является действительным субъектом, а карта – номинальным (см. Рисунок 3.1, «Объект и субъект безопасности»).

Рисунок 3.1. Объект и субъект безопасности Объект и субъект безопасности

Презентация 4-02: политика безопасности

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

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

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

Презентация 4-03: управление доступом

Существует несколько схем управления доступом, называемых моделями доступа. Рассмотрим самые известные из них:

Мандатная модель доступа
Объектам и субъектам системы ставится в соответствие метка безопасности или мандат (например, гриф секретности). При этом метка безопасности субъекта описывает его благонадёжность, а метка безопасность объекта – степень закрытости информации. Доступ к объекту разрешён только субъектам с соответствующей или более сильной меткой.
Недостатком такой схемы можно считать слишком грубое деление прав, необходимость введения категорий доступа и т.п.. Также для данной модели доступа очень важно разработать механизм понижения секретности теряющих важность документов.
Списки доступа (Accecc Control Lists, ACL)
Все субъекты и объекты системы объединяются в таблицу, в строках которой находятся субъекты (активные сущности), а в столбцах – объекты (пассивные сущности), элементы же такой таблицы содержат перечисление прав, которыми субъект обладает в отношении данного объекта. Такая схема называется субъект-объектная модель.
Недостатками можно считать огромный размер таблицы и сложность администрирования в случае большого числа объектов и субъектов в системе.
Произвольное управление доступом
Каждому объекту сопоставляется один субъект – владелец объекта. Владелец может по своему усмотрению давать другим субъектам или отнимать у них права на доступ к объекту. Если объект имеет несколько хозяев, они могут быть объединены общим субъектом – группой. Такая схема позволяет значительно сократить размер таблицы прав субъектов по отношению к объектам. Эта схема также называется субъект-субъектная модель.
Недостатком этой схемы является значительное облегчение управления доступом, что не позволяет простроить сложные отношения между субъектами и объектами.

Аутентификация и авторизация

Презентация 4-04: аутентификация и авторизация

Авторизация – это процесс определения того, имеет или не имеет некоторый субъект доступ к некоторому объекту. Авторизация может быть:

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

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

Концепции безопасности UNIX[править]

Презентация 4-05: концепции безопасности UNIX

В операционной системе UNIX используется достаточно простая модель доступа, основанная на субъект-субъектной модели. В современных версиях UNIX помимо общей схемы можно использовать списки доступа. При этом реализуется статическая авторизация множественного доступа к объекту. Пользователи и группы

В UNIX роль номинального субъекта безопасности играет пользователь. Каждому пользователю выдается (обычно – одно) входное имя (login). Каждому входному имени соответствует единственное число, идентификатор пользователя (User IDentifier, UID). Это число и есть ярлык субъекта, которым система пользуется для определения прав доступа.

Каждый пользователь входит в одну или более групп. Группа – это образование, которое имеет собственный идентификатор группы (Group IDentifier, GID), объединяет нескольких пользователей системы, а стало быть, соответствует понятию множественный субъект. Значит, GID – это ярлык множественного субъекта, каковых у действительного субъекта может быть более одного. Таким образом, одному UID соответствует список GID.

Роль действительного (работающего с объектами) субъекта играет процесс. Каждый процесс снабжен единственным UID: это идентификатор запустившего процесс пользователя. Любой процесс, порожденный некоторым процессом, наследует его UID. Таким образом, все процессы, запускаемые по желанию пользователя, будут иметь его идентификатор. UID учитываются, например, когда один процесс посылает другому сигнал. В общем случае разрешается посылать сигналы «своим» процессам (тем, что имеют такой же UID). Права доступа

Роль объекта в UNIX играют многие реальные объекты, в частности представленные в файловой системе: файлы, каталоги, устройства, каналы и т. п.. Каждый файл снабжён UID – идентификатором пользователя-владельца. Вдобавок у файла есть единственный GID, определяющий группу, которой он принадлежит.

Презентация 4-06: права доступа

На уровне файловой системы в UNIX определяется три вида доступа: чтение (read, r), запись (write, w) и использование (execution, x). Право на чтение из файла дает доступ к содержащейся в нем информации, а право записи – возможность ее изменять. При каждом файле имеется список того, что с ним может делать владелец (если совпадает UID процесса и файла), член группы владельцев (если совпадает GID) и кто угодно (если ничего не совпадает) (см. Рисунок 3.2, «Базовые права доступа в UNIX»). Такой список для каждого объекта системы занимает всего несколько байт.

Рисунок 3.2. Базовые права доступа в UNIX Базовые права доступа в UNIX

Флаг использования трактуется по-разному в зависимости от типа файла. В случае простого файла он задаёт возможность исполнения файла, т.е. запуска программы, содержащейся в этом файле. Для директории – это возможность доступа к файлам в этой директории (точнее говоря, к атрибутам этих файлов – имени, правам доступа и т.п..).

Рассмотрим последовательность проверки прав на примере (см. Рисунок 3.3, «Последовательнось проверки прав доступа в UNIX»). Пусть файл имеет следующие атрибуты:

file.txt alice:users rw- r-- ---

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

Презентация 4-07: последовательность проверки

Пусть файл пытается прочитать пользователь «bob». Он не является владельцем, однако он является членом группы «users». Значит, он имеет права на чтение этого файла.

Рисунок 3.3. Последовательнось проверки прав доступа в UNIX Последовательнось проверки прав доступа в UNIX

Разделяемые каталоги

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

Таким образом, из своего каталога пользователь может удалить любой файл. А если запись в каталог разрешена всем, то любой пользователь сможет удалить в нём любой файл. Для избежания этой проблемы был добавлен ещё один бит в права доступа каталога: бит навязчивости (sticky, t-бит). При его установке пользователь, имеющий доступ на запись в этот каталог, может изменять только собственные файлы. Подмена идентификатора субъекта

Презентация 4-08: подмена идентификатора субъекта

В UNIX существует механизм, позволяющий пользователям запускать процессы от имени других пользователей. Это может быть полезным, если одному пользователю необходимо на время предоставлять права другого (например, суперпользователя).

Для разрешение подмены идентификатора пользователя применяется бит подмены идентификатора пользователя (set user id, suid-бит, s). Этот бит применяется совместно с битом исполнения (x) для обычных файлов. При установке этого бита на исполняемый файл процесс запускается от имени владельца, а не от имени запускаеющего пользователя (см. Рисунок 3.4, «Подмена идентификатора пользователя»).

Рисунок 3.4. Подмена идентификатора пользователя Подмена идентификатора пользователя

Подмена идентификатора пользователя является потенциальной угрозой безопасности сиситемы и должена использоваться осторожно. Недостатки базовой модели доступа и её расширения

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

Со временем в различных версиях UNIX стали появляться расширения прав доступа, позволяющие устанавливать права на отдельные объекты системы. Поначалу это были так называемые флаги – дополнительные атрибуты файла, не позволяющие, например, переименовывать его или удалять из него информацию при записи (можно только дописывать). Флаги не устраняют главного недостатка, зато их легко организовать без изменения файловой системы: каждый флаг занимает ровно один бит.

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

На практике флаги или управление доступом использовать приходится нечасто. В большинстве случаев такая необходимость возникает в виде исключения – например, для временного уменьшения прав или для временного предоставления доступа (легко сделать с помощью ACL), а также при работе с очень важными файлами. Суперпользователь

Презентация 4-09: суперпользователь

Пользователь root (он же суперпользователь) имеет нулевые UID и GID и играет роль доверенного субъекта UNIX. Это значит, что он не подчиняется законам, которые управляют правами доступа, и может по своему усмотрению эти права изменять. Большинство настроек системы доступны для записи только суперпользователю.

Как было сказано ранее (см. раздел «Беглый взгляд на архитектуру UNIX»), в UNIX существует уровень доступа ядра и уровень доступа системы. Суперпользователь работает на уровне доступа ядра, так что является по сути продолжением самой системы.

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

Системное администрирование в UNIX производится от имени пользователя root. При работе от этого имени следует быть очень осторожным: выполнение неверной команды может привести к краху системы и уничтожению информации. Поэтому даже администраторы никогда не работают в сеансе суперпользователя всё время, а переходят в режим суперпользователя только тогда, когда это действительно необходимо (например, с помощью команды su). Аутентификация пользователей

Презентация 4-10: вход пользователя в систему

В UNIX сеанс работы пользователя начинается с его аутентификации и заканчивается его выходом из системы. При входе в систему выполняется следующая последовательность действий (см. Рисунок 3.5, «Процесс входа в систему»):

  1. процесс getty ожидает реакции пользователя на одной из терминальных линий, в случае активности пользователя выводит приглашение;
  2. после ввода имени пользователя запускается программа login, которая проверяет подлинность пользователя. Стандартным механизмом является проверка пароля, заданного для данного пользователя;
  3. убедившись, что пароль введён правильно, login запускает командный интерпретатор с установленными UID и GID данного пользователя. Таким образом, права доступа любой программы (действительного субъекта), запущенной пользователем в этом сеансе работы, будут определяться правами номинального субъекта UID+GID.

Рисунок 3.5. Процесс входа в систему Процесс входа в систему

При работе по сети роль getty исполняет сетевой демон, например ssh.

В некоторых современных UNIX-системах существуют расширения систем авторизации и аутентификации. Например, в Linux-системах этот механизм называется подключаемые модули аутентификации (Pluggable Authentication Modules, PAM). Эти средства выходят за рамки данных лекций.

Настройка системы безопасности[править]

База данных пользователей системы

Презентация 4-11: база данных пользователей

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

входное имя:x:UID:GID:полное имя:домашний каталог:стартовый shell

Пример 3.1. Пример файла /etc/passwd

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
adm:x:3:4:adm:/var/adm:/bin/false
...

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

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

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

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

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

Для добавления и удаления пользователей и групп существует набор команд: useradd, userdel, groupadd, groupdel. Эти команды доступны только суперпользователю и имеют единственный обязательный параметр: имя пользователя или группы.

С помощью команд usermod и groupmod можно изменять информацию в базах данных пользователей и групп. Эти команды также может выполнять только администратор системы.

Команда passwd позволяет простым пользователям изменять свой системный пароль, а суперпользователю – изменять пароль любого из пользователей системы. Изменение прав доступа

Для изменения владельца файла или группы владельцев используются команды chown и chgrp. Из соображений безопасности спользовать эти команды может только суперпользователь.

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

Презентация 4-12: ограничения сеанса пользователя

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

ограничения входа в систему
Вход пользователя в систему может быть ограничен видом терминала, удалённым адресом (в случае сетевого входа в систему), временем работы. Для задания этих ограничений в некоторых UNIX-системах используется файл /etc/login.access
ограничения запускаемых процессов
Процессы пользователей могут быть ограничены по одному из следующих параметром: объём используемой памяти, число одновременно открытых файлов, число запускаемых процессов и т.п.. Для задания этих ограничений в некоторых UNIX-системах используется файл /etc/limits.
ограничения использования диска
Дисковые квоты позволяют ограничить объём используемого пространства жёсткого диска для каждого из пользователей системы. Для настройки данного ограничения необходима утилита quote, а также поддержка в выбранной файловой системе.

Ограничения действуют на протяжении всего сеанса работы пользователя.

Резюме[править]

Презентация 4-13: резюме

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

Основными элементами политики безопасности являются субъект, объект и отношения между ними. Выделяют ряд моделей доступа, среди которых маркерный доступ, списки пользователя (субъект-объектный доступ) и произвольное управление доступом (субъект-субъектный доступ).

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

Аутентификация пользователя при входе в систему состоит в проверке пароля, соответствующего имени пользователя.

Информация о пользователях системы хранится в специальном файле /etc/passwd. Существует набор системных команд по изменению базы данных пользователей и групп.

В UNIX можно устанавливать динамические ограничения на сеанс пользователя.

Ключевые термины: информационная безопасность, политика безопасности, объект, доступ, действительный субъект, номинальный субъект, модель доступа, мандатная модель, модель списков доступа, произвольное управление доступом, авторизация, аутентификация, пользователь, группа, права доступа в UNIX, sticky-бит, suid-бит, суперпользователь, сеанс работы, база данных пользователей, основная группа, дисковые квоты.

Дополнительные материалы[править]

  1. Скотт Манн, Эленн Митчелл, Митчелл Крелл Безопасность Linux. – М.: Вильямс, 2003. – 624 с.: ил.
  2. Курячий Г.В. Операционная система UNIX. – М.: Интуит.Ру, 2004. – 292 с.: ил.

Вопросы[править]

  1. Чем отличаются номинальный и действительный субъект? Как они соотносятся с объектом безопасности? Что представляют собой субъект и объект безопасности в UNIX?
  2. Что такое политика безопасности? Какие требования выдвигаются по отношению к ней?
  3. Какие существуют наиболее распространённые схемы доступа? В чём заключаются основные отличия между ними? Какая схема доступа используется в UNIX?
  4. Какие существуют права доступа в UNIX? Какие из них являются специфичными для простых файлов, а какие для директорий?
  5. Что такое подмена идентификатора субъекта? Как такое право устанавливается и где применяется?
  6. Из чего состоит процесс аутентификации пользователя в UNIX?
  7. Каким образом хранится информация обо всех пользователях системы?

Презентация[править]

Рисунок 3.6. Презентация 4-01: информационная безопасность Презентация 4-01: информационная безопасность

Рисунок 3.7. Презентация 4-02: политика безопасности Презентация 4-02: политика безопасности

Рисунок 3.8. Презентация 4-03: управление доступом Презентация 4-03: управление доступом

Рисунок 3.9. Презентация 4-04: аутентификация и авторизация Презентация 4-04: аутентификация и авторизация

Рисунок 3.10. Презентация 4-05: концепции безопасности UNIX Презентация 4-05: концепции безопасности UNIX

Рисунок 3.11. Презентация 4-06: права доступа Презентация 4-06: права доступа

Рисунок 3.12. Презентация 4-07: последовательность проверки Презентация 4-07: последовательность проверки

Рисунок 3.13. Презентация 4-08: подмена идентификатора субъекта Презентация 4-08: подмена идентификатора субъекта

Рисунок 3.14. Презентация 4-09: суперпользователь Презентация 4-09: суперпользователь

Рисунок 3.15. Презентация 4-10: вход пользователя в систему Презентация 4-10: вход пользователя в систему

Рисунок 3.16. Презентация 4-11: база данных пользователей Презентация 4-11: база данных пользователей

Рисунок 3.17. Презентация 4-12: ограничения сеанса пользователя Презентация 4-12: ограничения сеанса пользователя

Рисунок 3.18. Презентация 4-13: резюме Презентация 4-13: резюме

Методические указания по командам управления безопасностью в UNIX[править]

Команды по управлению правами[править]

chmod
Команда используется для изменения прав доступа к файлам.
Команда chmod имеет следующий синтаксис:
chmod [-fhv] [-R [-H | -L | -P]] права_доступа файл ...
Права доступа к файлу могут изменить только владелец файла и суперпользователь. Параметр права_доступа задается в числовой форме, либо в символьной.
Права доступа в числовой форме задаются в виде восьмеричного числа – битовой маски, являющегося суммой одного или нескольких следующих значений:

4000 – установка бита SUID
2000 – установка бита SUID
1000 – установка sticky-бита
0400 – право на чтение для владельца
0200 – право на запись для владельца
0100 – право на выполнение для владельца
0040 – право на чтение для группы владельца
0020 – право на запись для группы владельца
0010 – право на выполнение для группы владельца
0004 – право на чтение для остальных пользователей
0002 – право на запись для остальных пользователей
0001 – право на выполнение для остальных пользователей

Права доступа в символьном виде задаются с помощью следующей грамматики:
права_доступа ::=выражение [, выражение ...]
выражение ::=[субъект ...] [действие ...] действие
действие ::=операция [права ...]
субъект ::=a | u | g | o
операция ::=+ | - | =
права ::=r | s | t | w | x | X | u | g | o

Пример использования. Для того, чтобы для файла test.txt сбросить все права для группы владельца и остальных пользователей, а для владельца установить права на чтение и запись, можно использовать следующие команды (они эквивалентны): chmod u=rw,go= test.txt, chmod a=,u=rw test.txt, chmod 600 test.txt. Результат:
    user@desktop$ ls -l test.txt
    -rw-r--r--  1 pp  ppgroup  0  7 дек 00:34 test.txt
    user@desktop$ chmod a=,u=rw test.txt
    user@desktop$ ls -l test.txt
    -rw-------  1 pp  ppgroup  0  7 дек 00:34 test.txt
Для добавления группе владельца права на запись и отмена для остальных пользователей права на чтение можно использовать следующую команду: chmod g+w,o-r test.txt. Результат:
    user@desktop$ ls -l test.txt
    -rw-r--r--  1 pp  ppgroup  0  7 дек 00:34 test.txt
    user@desktop$ chmod g+w,o-r test.txt
    user@desktop$ ls -l test.txt
    -rw-rw----  1 pp  ppgroup  0  7 дек 00:34 test.txt
chown
Команда используется для смены владельца/группы файлов.
Команда имеет следующий синтаксис:

chown [-fhv] [-R [-H | -L | -P]] владелец[:группа] файл ...
chown [-fhv] [-R [-H | -L | -P]] :группа файл ...

Владельца файла может изменить только суперпользователь. Группу может изменить владелец и суперпользователь. В качестве имени владельца/группы берется первый аргумент, не являющийся опцией. Если задано только имя пользователя (или числовой идентификатор пользователя), то данный пользователь становится владельцем каждого из указанных файлов, а группа этих файлов не изменяется. Если за именем пользователя через двоеточие следует имя группы (или числовой идентификатор группы), без пробелов между ними, то изменяется также и группа файла.
Для изменения группы-владельца файла test.txtна guest необходимо ввести следующую команду: chown :guest test.txt. Результат:
    user@desktop$ ls -l test.txt
    -rw-------  1 pp  ppgroup  0  7 дек 00:34 test.txt
    user@desktop$ chown :wheel test.txt
    user@desktop$ ls -l test.txt
    -rw-------  1 pp  wheel  0  7 дек 00:34 test.txt

Команды по управлению пользователями[править]

su
Команда используется для временной подмены идентификатора пользователя.
Команда имеет следующий синтаксис:
su [-] [-flms] [-c класс] [пользователь [аргументы]]
Команда su позволяет пользователю временно стать другим пользователем. Если не указан параметр пользователь, то используется значение по умолчанию - суперпользователь. Если указанному пользователю назначен пароль, то потребуется его ввести, прежде чем стать другим пользователем.
Для того, чтобы стать суперпользователем, нужно ввести команду su без параметров:
    user@desktop$ su
    Password:
    desktop#
sudo
Программа sudo является логическим развитием программы su и позволяет как переходить в сеанс суперпользователя, так и запускать отдельные программы от имени суперпользователя.
Программа sudo имеет синтаксис:
sudo [-HSb] [-u пользователь] {-s | команда}
Можно использовать следующие опции:
-H
переменная окружения HOME изменяется в соответствии с выбранным пользователем;
-b
команда исполняется на заднем фоне;
-s
вместо команды запускается командная оболочка данного пользователя.
Главным достоинством команды sudo является возможность гибкого конфигурирования – на какие программы каким пользователям разрешено повышение превилений. Конфигурация хранится в файле /etc/sudoers, рассмотрение формата которого выходит за рамки этих лекций.
passwd
Команда используется для изменения пароля.
Команда имеет следующий синтаксис:
passwd [-l] [пользователь]
Обычные пользователи могут сменить только собственные пароли. Суперпользователь может менять пароли любых пользователей. При вызове команды сначала необходимо ввести старый пароль, если он был установлен. Затем предлагается дважды ввести новый пароль. Если указанные операции были сделаны без ошибок, то пароль пользователя будет изменен.
useradd
Команда предназначена для добавления нового регистрационного имени пользователя в системе.
Команда имеет следующий синтаксис:
useradd [-u идентификатор [-o] [-i]] [-g группа] [-G группа[[,группа] . . .]] [-d каталог] [-s shell] [-c комментарий] [-m [-k skel_dir]] [-f inactive] [-e expire] [-p passgen] [-a событие[, . . .]] регистрационное_имя
userdel
Команда предназначена для удаления регистрационных имен пользователей из системы.
Команда имеет следующий синтаксис:
userdel [-r] [-n месяцев] регистрационное_имя
Команда userdel удаляет определение регистрационного имени пользователя из системы. Она удаляет определение указанного регистрационного имени и выполняет соответствующие изменения в регистрационных файлах и файловой системе. Команда также запоминает идентификационный номер удаляемого пользователя (UID) в файле /etc/security/ia/ageduid, так что этот идентификатор не будет повторно использован на протяжении определенного периода времени. Эта практика не использования идентификатора пользователя называется устареванием идентификатора (UID aging). Для удаления домашней директории пользователя необходимо указать флаг -r. Параметр месяцев задает, сколько месяцев будет запрещено использовать удаляемый идентификатор.
usermod
Команда предназначена для изменения регистрационной информации о пользователе в системе.
Команда имеет следующий синтаксис:
usermod [-u идентификатор [-U] [-o]] [-g группа] [-G группа[[,группа] . . .]] [-d каталог [-m]] [-s shell] [-c комментарий] [-l новое_рег_имя] [-f inactive] [-e expire] [-p passgen] [-a [оператор]событие[, . . .]] регистрационное_имя
groupadd
Команда используется для создания новой группы в системе.
Команда имеет следующий синтаксис:
groupadd [-g идентификатор [-o]] группа
Новую группу может добавить только администратор. Команда groupadd создает новое определение группы в системе путем добавления соответствующей записи в файл /etc/group.
groupdel
Команда используется для удаления определения группы из системы.
Команда имеет следующий синтаксис:
groupdel группа
Команда groupdel удаляет определение группы из системы путем удаления записи о соответствующей группе из файла /etc/group. Она, однако, не удаляет идентификаторо группы (GID) из файла паролей; удаленный GID действует для всех файлов и каталогов, которые его имели.
groupmod
Команда предназначена для изменения определения группы в системе.
Команда имеет следующий синтаксис:
groupmod [-g идентификатор [-o]] [-n имя] группа
Команда groupmod изменяет определение указанной группы путем изменения соответствующей записи в файле /etc/group. Новое имя группы задается в параметре группа, новый идентификатор группы задается в параметре идентификатор. Опция -o позволяет задать дублирующийся идентификатор группы. Если перед группой стоит символ «+», (например, +student), определение группы администрируется сетевой информационной службой (Network Information Service - NIS). В этом случае, значение идентификатора группы берется из базы данных NIS. Для таких групп использование опций -g или -o вызовет выдачу сообщения о синтаксической ошибке.

Резюме[править]

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

Ключевые термины:chmod, chown, su, sudo, passwd, useradd, userdel, usermod, groupadd, groupdel, groupmod

Дополнительные материалы[править]

  1. Скотт Манн, Эленн Митчелл, Митчелл Крелл Безопасность Linux. – М.: Вильямс, 2003. – 624 с.: ил.
  2. Курячий Г.В. Операционная система UNIX. – М.:Интуит.Ру, 2004. – 292 с.: ил.

Практическое занятие. Управление доступом. Управление пользователями[править]

Сценарий: Вход в систему и завершение сеанса[править]

Сценарий посвящен изучению процесса аутентификации в UNIX.

Начальные условия: Приглашение входа в систему.

1. Для входа в систему необходимо ввести логин и пароль пользователя. При этом символы вводимого пароля не отображаются.

      Welcome to desktop / tty1
      desktop login: user
      Password:
      Last login: Wed Dec 07 00:20:09 2006 from tty1
      user@desktop ~ $

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

2. Для завершения сеанса работы в командной строке необходимо ввести команду exit:

user@desktop ~ $ exit

Сценарий: Изучение базовых прав доступа[править]

Сценарий рассматривает базовые права доступа в UNIX, их просмотр и изменения.

Начальные условия: Командная строка после входа в систему.

1. Для просмотра прав доступа можно использовать команду ls с ключом вывода расширенной информации: ls -l.

      user@desktop ~ $ ls -l
      drwxr-xr-x   1 user users   22 Дек 19 11:18 test/
      -rw-r--r--   1 user users   90 Сен 19 00:20 test.txt

Особый интерес представляют: первая колонка (права доступа), третья и четвётрая – владелец и группа владельцев соответственно.

2. Рассмотрим исполняемый файл ls -l /bin/bash.

      user@desktop ~ $ ls -l /bin/bash
      -rwxr-xr-x  1 root root 746544 Дек 21 13:40 /bin/bash*

Исполняемые файлы в UNIX определяются наличием специального бита прав доступа.

3. Для директории права на исполнения трактуются по-другому. Рассмотрим права директории /tmp ls -ld /tmp:

      user@desktop ~ $ ls -ld /tmp
      drwxrwxrwt  26 root root 5168 Дек 22 20:04 /tmp/

Директория имеет дополнительный sticky-bit, определающий права на создание и удаление файлов в директории.

4. Изменение файла с недостатком прав приводит к ошибке доступа. Например, команда: rm /bin/bash.

      user@desktop ~ $ rm /bin/bash
      rm: удалить защищенный от записи обычный файл `/bin/bash'? y
      rm: невозможно удалить `/bin/bash': Permission denied

Для всех файлов, на которые данный пользователь не имеет прав записи команда rm может выводить предупреждение об удалении.

5. Изменение прав доступа производится с помощью команды chmod. Для задания файлу прав только для чтения воспользуемся командой: chmod a=r test.txt.

user@desktop ~ $ chmod a=r test.txt

6. Для лишения всех прав группы владельцев и остальных пользователей воспользуемся командой: chmod go-rwx test.txt.

user@desktop ~ $ chmod go-rwx test.txt

Сценарий: Переход в режим суперпользователя[править]

Сценарий рассмартривает процесс повышения превилегий пользователя и переход в режим суперпользователя.

Начальные условия: Командная строка после входа в систему простого пользователя.

1. Некоторые исполняемые программы обладают специальным suid-битом, например, программа passwd, рассмотрим права доступа к этому исполняемому файлу: ls -l /bin/passwd.

      user@desktop ~ $ ls -l /bin/passwd
      -rws--x--x  1 root root 28660 Янв  8 13:05 /bin/passwd*

2. Запускаются suid-программы от имени владельца файла. В этом можно убедиться, если запустить команду passwd, а затем на другом терминале сделать ps aux | grep passwd:

      user@desktop ~ $ passwd
      Changing password for user
      (current) UNIX password:                
      ...
      user@desktop ~ $ ps aux | grep passwd
      root     12937  0.0  0.1   3228  1012 pts/2    S+   23:28   0:00 passwd
      user     12989  0.0  0.1   2740   748 pts/3    R+   23:28   0:00 grep passwd

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

      user@desktop ~ $ su -
      Password:
      desktop ~ #

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

4. Для завершения сеанса суперпользователя необходимо воспользоваться командой exit:

      desktop ~ # exit
      logout
      user@desktop ~ $

Сценарий: Изучение базы данных пользователей[править]

В сценарии показано, где и каким образом хранится информация о пользователях системы.

Начальные условия: Командная строка после входа в систему.

1. Данные о зарегистрированных в системе пользователях хранятся в файле /etc/passwd. Рассмотрим его содержимое cat /etc/passwd:

      user@desktop ~ $ cat /etc/passwd
      root:x:0:0:root:/root:/bin/bash
      bin:x:1:1:bin:/bin:/bin/false
      daemon:x:2:2:daemon:/sbin:/bin/false
      adm:x:3:4:adm:/var/adm:/bin/false
      ...

Подробную информацию о формате этого файла можно получить на соответствующей странице руководств: man 5 passwd.

2. Аналогичным образом данные о группах хранятся в файле /etc/group. Рассмотрим его содержимое cat /etc/group:

      user@desktop ~ $ cat /etc/group
      root:x:0:root
      bin:x:1:root,bin,daemon
      daemon:x:2:root,bin,daemon
      sys:x:3:root,bin,adm
      ...

Сценарий: Добавление и удаление пользователей[править]

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

Начальные условия: Командная строка после входа в систему суперпользователя.

1. Для добавления новых пользователей используется команда useradd. При этом в качестве параметров можно указать домашнюю директорию и командную оболочку пользователя: useradd testuser -d /home/users/testuser -s /bin/sh, результат можно увидеть следующим образом: cat /etc/passwd | grep testuser.

      desktop ~ # cat /etc/passwd
      testuser:x:1003:1003::/home/users/testuser:/bin/sh

2. С помощью команды passwd можно задать пароль для нового пользователя: passwd testuser.

      desktop ~ # passwd testuser
      New UNIX password:
      Retype new UNIX password:
      passwd: пароль успешно обновлён

3. Для изменения параметров учётной записи можно отредактировать файл /etc/passwd, однако более корректным способом является использование команды usermod. Например, для изменение командной оболочки пользователя на /bin/false приведёт к невозможности его входа в систему: usermod -s /bin/false testuser.

desktop ~ # usermod -s /bin/false testuser

4. Удаление пользователя производится с помощью команды userdel: userdel testuser.

desktop ~ # userdel testuser

Задания для самоподготовки[править]

  1. Выясните, чем отличается реакция операционной системы (выводимое сообщение) на различные ошибки аутентификации (например, неправильный пользователь, неверный пароль и т.д.).
  2. Сравните права доступа к директориям /bin и /tmp. Какие операции сможет совершать в них простой пользователь?
  3. Создайте текстовый файл и задайте права на него таким образом, чтобы он мог просматриваться только владельцем и никем не мог редактироваться.
  4. Что смогут делать другие пользователями с файлами в домашней директории пользователя, если он задаст всем остальным пользователям право на запись в директорию, но удалит право исполнения на неё?
  5. Найдите все исполняемые файлы с установленным suid-битом.
  6. Получите имена всех пользователей системы, у которых в качестве командной оболочки используется программа /bin/false.

Сценарии практического занятия на тему: Управление доступом. Управление пользователями[править]

«Сценарий: Вход в систему и завершение сеанса»

  1. exit
    

«Сценарий: Изучение базовых прав доступа»

  1. ls -l
    
  2. ls -l /bin/bash
    
  3. ls -ld /tmp
    
  4. rm /bin/bash
    
  5. chmod a=r test.txt
    
  6. chmod go-rwx test.txt
    

«Сценарий: Переход в режим суперпользователя»

  1. ls -l /bin/passwd
    
  2. passwd
    
  3. ps aux | grep passwd
    
  4. su -
    
  5. exit
    

«Сценарий: Изучение базы данных пользователей»

  1. cat /etc/passwd
    
  2. man 5 passwd
    
  3. cat /etc/group
    

«Сценарий: Добавление и удаление пользователей»

  1. useradd testuser -d /home/users/testuser -s /bin/sh
    
  2. cat /etc/passwd | grep testuser
    
  3. passwd testuser
    
  4. usermod -s /bin/false testuser
    
  5. userdel testuser