5 Управление доступом

5.1 Введение

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

5.2 Установка и изменение прав доступа к файлам и директориям

Утилита chmod позволяет устанавливать и изменять права доступа к файлам и директориям. Она принимает описания прав доступа в двух нотациях: численной и буквенной, описываемой ниже.

В соответствии с буквенной нотацией пользователи, которые могут потенциально работать с файлом, разделяются на владельца (u), группу владельцев (g) и всех остальных пользователей (o), а файл может быть читаемым (r), записываемым (w) и исполняемым (х).

Описание прав доступа начинается с символа, соответствующего типу пользователей. Затем идет символ + для установки или символ - для снятия прав доступа, после чего описание заканчивается последовательностью символов, соответствующей правам доступа.

Например, для определения прав доступа, позволяющих читать и модифицировать файл file, может использоваться нотация:

chmod g+rw file

Для удаления всех прав доступа на директорию /directory для группы и остальных пользователей может использоваться нотация:

chmod go-rwx /directory.

Утилита поддерживает также следующие опции, перечисленные в таблице:

Опции утилиты chmod и их значения

Опция

Значение

-R, --recursive

Рекурсивное изменение прав доступа для директорий и их содержимого.

-c, --changes

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

-f, --silent, --quiet

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

-v, --verbose

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

--version

Сообщить информацию о версии.

--help

Выводит справку по этой утилите и завершает работу.

Пример: сменим права для файла file1 так, чтобы владелец файла имел права на чтение и запись, а группа и остальные пользователи — только на чтение:

[user@msvsphere ~]$ chmod u+rw g-wx o-wx file1

5.3 Назначение и изменение владельца файла и директории

Утилита chown позволяет назначить или изменить владельца файла или директории.

Утилита поддерживает следующие опции, перечисленные в таблице:

Опции утилиты chown и их значения

Опция

Значение

-R, --recursive

Рекурсивное изменение прав доступа для директорий и их содержимого.

-c, --changes

Подробно описывать все изменения.

-f, --silent, --quiet

Не выдавать сообщения об ошибке.

-v, --verbose

Вывести подробное описание действия.

--version

Сообщить информацию о версии.

--help

Выводит справку по этой утилите и завершает работу.

Пример: назначим пользователя user владельцем файла file:

chown user file

Пример: выполним рекурсивный обход директории directory и назначим пользователя user владельцем всех вложенных файлов:

chown -R user directory

5.4 Изменение группы-владельца файла или директории

Утилита chgrp позволяет изменить группу-владельца файла или директории.

Утилита поддерживает следующие опции, перечисленные в таблице:

Опции утилиты chgrp и их значения

Опция

Значение

-R, --recursive

Рекурсивное изменение группы для каталогов и всего их содержимого.

-c, --changes

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

-f, --silent, --quiet

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

-v, --verbose

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

--version

Сообщить информацию о версии.

--help

Вывести справку по этой утилите и завершить работу.

Пример: изменим группу-владельца файла file на новую группу new_group:

chgrp new_group file

5.5 Просмотр и изменение списков правил контроля доступа для файлов и директорий

Утилита setfacl позволяет просматривать и изменять списки правил контроля доступа для файлов и директорий.

Утилита поддерживает следующие опции, перечисленные в таблице:

Опции утилиты setfacl и их значения

Опция

Значение

-d

Установить правила контроля доступа по умолчанию.

-k

Удалить правила контроля доступа по умолчанию.

-s

Заменить правила контроля доступа заданными.

-m

Модифицировать правила контроля доступа.

-x

Удалить указанное правило контроля доступа.

-b

Удалить все правила контроля доступа.

-v

Вывести версию и выйти.

-h

Вывести справку об использовании утилиты и выйти.

Пример: удалим все правила контроля доступа к файлу file:

setfacl -b file

5.6 Просмотр списков контроля доступа

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

Утилита поддерживает следующие опции, перечисленные в таблице:

Опции утилиты getfacl и их значения

Опция

Значение

-a, --access

Выводить список контроля доступа к файлам.

-d, --default

Выводить список контроля доступа по умолчанию.

-c, --omit-header

Не выводить заголовок с комментариями.

e, --all-effective

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

-E, --no-effective

Не выводить комментарии с действующими правами доступа ни для одного пользователя.

-R, --recursive

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

-v, --version

Вывести версию и выйти.

-h, --help

Вывести справку об использовании утилиты и выйти.

Пример: просмотрим список контроля доступа для файла cg.conf:

[user@msvsphere ~]$ getfacl cg.conf
# file: cg.conf
# owner: user
# group: user
user::rwx
group::r-x
other::r-x

Пример: зададим дополнительные компоненты списка контроля доступа для пользователя user и группы user по отношению к файлу cg.conf:

[user@msvsphere ~]$ setfacl -m g:user:rxw cg.conf
[user@msvsphere ~]$ setfacl -m u:user:rxw cg.conf
[user@msvsphere ~]$ getfacl cg.conf
# file: cg.conf
# owner: user
# group: user
user::rwx
user:user:rwx
group::r-x
group:user:rwx
mask::rwx
other::r-x

Пример: от имени администратора модифицируем списки контроля доступа для файлов, владельцем которых он является:

[root@msvsphere ~]# setfacl -m u:user:rxw ~/file2
[root@msvsphere ~]#
[root@msvsphere ~]# getfacl ~/file2
getfacl: Removing leading `/` from absolute path names
# file: root/file2
# owner: root
# group: root
user::rw-
user:user:rwx
group::r--
mask::rwx
other::r--

Пример: от имени администратора модифицируем списки контроля доступа для файлов, владельцем которых он не является:

[root@msvsphere ~]# setfacl -m u:user:rxw /home/user3/file2
[root@msvsphere ~]# setfacl -m u:user:rxw /home/user3/dir2
[root@msvsphere ~]#
[root@msvsphere ~]# getfacl /home/user3/file2
getfacl: Removing leading `/` from absolute path names
# file: home/user3/file2
# owner: user3
# group: user3
user::rwx
user:user:rwx
group::---
mask::rwx
other::---

[root@msvsphere ~]# getfacl /home/user3/dir2
getfacl: Removing leading `/` from absolute path names
# file: home/user3/dir2/
# owner: user3
# group: user3
user::rwx
user:user:rwx
group::---
mask::rwx
other::---

Пример: от имени администратора удалим списки контроля доступа для объектов, владельцем которых он является:

[root@msvsphere ~]# setfacl -b ~/file2
[root@msvsphere ~]# getfacl ~/file2
getfacl: Removing leading `/` from absolute path names
# file: root/file2
# owner: root
# group: root
user::rw-
group::r--
other::r--

Пример: от имени администратора удалим списки контроля доступа для объектов, владельцем которых он не является:

[root@msvsphere ~]# setfacl -b /home/user3/file2
[root@msvsphere ~]# getfacl /home/user3/file2
getfacl: Removing leading `/` from absolute path names
# file: home/user3/file2
# owner: user3
# group: user3
user::rwx
group::---
other::---

Важно

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

5.7 Редактирование пользовательских квот для файловой системы

Утилита edquota позволяет редактировать пользовательские квоты для файловой системы.

Утилита поддерживает следующие опции, перечисленные в таблице:

Опции утилиты edquota и их значения

Опция

Значение

-u, --user

Изменить пользовательскую квоту.

-g, --group

Изменить групповую квоту.

-p, --prototype = protoname

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

-F, --format = имя-формата

Изменить квоту для указанного формата.

-f, --filesystem

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

-t, --edit-period

Редактировать мягкие ограничения по времени для каждой файловой системы.

-T, --edit-times

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

5.8 Конфигурационный файл /etc/profile

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

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

  • USER — имя пользователя при входе в ОС;

  • LOGNAME — то же, что и USER. Некоторые программы считывают значение этой глобальной переменной вместо USER;

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

  • HOSTNAME — имя хоста;

  • HISTSIZE — количество исполненных команд, сохраняемых в истории;

  • HISTCONTROL — политики в отношении команд, сохраняемых в истории. По умолчанию задано значение ignoredups, то есть команда, полностью совпадающая с одной из уже записанных в историю, не сохраняется. Если задать политику ignorespace, то будут игнорироваться как дублирующиеся команды, так и те, что начинаются с символа пробела.

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

Конфигурационный файл /etc/profile

Фрагмент конфигурационного файла /etc/profile

Пример: определим время бездействия при локальной терминальной сессии равным двум минутам (120 с). Для этого в файле /etc/profile после строк

HOSTNAME= '/usr/bin/hostname 2>/dev/null'
HISTSIZE=1000

Добавим строку TMOUT=120. Там же, в строке

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

Необходимо добавить параметр TMOUT:

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE TMOUT HISTCONTROL

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

[user@msvsphere ~]$ su
Пароль
[root@msvsphere user]# timed out waiting for input: auto-logout
[user@msvsphere ~]$

5.9 Конфигурационный файл /etc/security/limits.conf

Конфигурационный файл /etc/security/limits.conf может использоваться для задания модулю pam_limits.so дополнительных ограничений. Для этого каждая его строка включает четыре группы параметров, которые перечислены и описаны ниже:

Важно

По умолчанию все ограничения отключены — все строки закомментированы.

  • <domain>:

    имя пользователя, имя группы с синтаксисом @group, подстановочный знак * для записи по умолчанию, подстановочный знак %, который также может использоваться с синтаксисом %group для ограничения maxlogin;

  • <type>:
    • soft для установки мягких ограничений;

    • hard для установки жестких ограничений.

  • <item>:
    • core: ограничивает размер файла ядра в Кб;

    • data: максимальный размер данных в Кб;

    • fsize: максимальный размер файла в Кб;

    • memlock: максимальное адресное пространство, предустановленное в памяти, в Кб;

    • nofile: максимальное количество открытых файлов;

    • rss: максимальный размер резидентного набора в Кб;

    • stack: максимальный размер стека в Кб;

    • cpu: максимальное время процессора в MIN;

    • nproc: максимальное количество процессов;

    • as: ограничение адресного пространства в Кб;

    • maxlogins: максимальное количество логинов для этого пользователя;

    • maxsyslogins: максимальное количество входов в систему;

    • priority: приоритет процессов пользователя;

    • locks: максимальное количество блокировок файлов, которое может быть обеспечено пользователем;

    • sigpending: максимальное количество ожидающих сигналов;

    • msgqueue: максимальный объем памяти, используемый очередями сообщений POSIX, в байтах;

    • nice: приоритет для запуска процессов утилитой nice;

    • rtprio: максимальный приоритет в реальном времени.

Конфигурационный файл /etc/security/limits.conf

Фрагмент конфигурационного файла /etc/security/limits.conf

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

username hard maxlogins 2

Тогда, при условии, что пользователь username открыл локальную сессию (учитывая, что при входе в графический сеанс открываются сразу две сессии пользователя) и попытался зайти в систему через ssh-соединение (потенциально ещё один активный сеанс), ему будет выведено сообщение Too many logins for 'username' и это соединение будет заблокировано.

5.10 Конфигурационный файл /etc/fstab

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

fs_spec fs_file fs_vfstype fs_mntops fs_freq fs_passno

Поля предназначены для задания следующих параметров:

  • fs_spec

    Физическое размещение файловой системы, по которому определяется конкретный раздел или устройство хранения для монтирования. Вместо указания размещения файловой системы явным образом можно воспользоваться её уникальным идентификатором UUID.

  • fs_file

    Точка монтирования, куда монтируется корень файловой системы.

  • fs_vfstype

    Тип файловой системы. Поддерживаются следующие типы: adfs, affs, autofs, coda, coherent, cramfs, devpts, efs, ext2, ext3, ext4, hfs, hpfs, iso9660, jfs, minix, msdos, nvpfs, nfs, ntfs, proc, qnx4, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xenix, xfs.

  • fs_mntops

    Опции монтирования файловой системы. Основные опции: defaults, noauto, user, owner, comment, nofail.

  • fs_freq

    Предназначено для использования утилитой создания резервных копий в файловой системе. Возможные значения: 0 и 1. Если указано 1, то утилита создаст резервную копию.

  • fs_passno

    Предназначено для использования программой fsck при необходимости проверки целостности файловой системы; возможные значения: 0, 1 и 2. Значение 1 указывается только для корневой файловой системы (то есть файловой системы с точкой монтирования /). Для остальных файловых систем для проверки утилитой fsck задаётся значение 2. При значении 0 — проверка выполняться не будет.

По умолчанию конфигурационный файл включает:

/dev/mapper/MSVSphere-root / xfs defaults 0 0

Файловая система /dev/mapper/MSVSphere-root примонтирована в каталог /, тип файловой системы — xfs, используемые опции — defaults, резервная копия данных не создаётся (fs_freq=0), проверка целостности файловой системы не выполняется (fs_passno=0).

UUID=b1bfe9b0-96ea-4876-883c-a9f1b6c74b /boot ext4 defaults 1 2

Файловая система с идентификатором b1bfe9b0-96ea-4876-883c-a9f1b6c74b смонтирована в /boot, тип файловой системы — ext4, используемые опции — defaults, резервная копия данных создаётся (fs_freq=1), проверка целостности файловой системы выполняется (fs_passno=2).

/dev/mapper/MSVSphere-swap swap defaults 0 0

Файловая система /dev/mapper/MSVSphere-swap является разделом подкачки swap, используемые опции — defaults, резервная копия данных не создаётся (fs_freq=0), проверка целостности файловой системы не выполняется (fs_passno=0).

Конфигурационный файл /etc/fstab

Фрагмент конфигурационного файла /etc/fstab