Глава 5. Практическое занятие по безопасности UNIX

Содержание

Методические указания по командам управления безопасностью в UNIX
Команды по управлению правами
Команды по управлению пользователями
Резюме
Дополнительные материалы
Практическое занятие. Управление доступом. Управление пользователями
Сценарий: Вход в систему и завершение сеанса
Сценарий: Изучение базовых прав доступа
Сценарий: Переход в режим суперпользователя
Сценарий: Изучение базы данных пользователей
Сценарий: Добавление и удаление пользователей
Задания для самоподготовки
Сценарии практического занятия на тему: Управление доступом. Управление пользователями

Методические указания по командам управления безопасностью в 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.txtchmod a=,u=rw test.txtchmod 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 с.: ил.