Статья также доступна на украинском (перейти к просмотру).

Содержание:
- Понятие прав на ресурсы файловой системы
- Примеры
- Виды разрешений
- Управление основными правами
- Использование специальных разрешений
- Подготовка к использованию
- Просмотр и изменение настроек для объектов
- Экспорт и импорт ACL прав с помощью файлов
- Техническое решение FREEhost.UA
Linux имеет взвешенную систему прав для управления ресурсами файловой системы. Это обеспечивает достаточно гибкое управление и позволяет обезопасить систему от взлома и непредсказуемых конфликтных ситуаций с доступом к тем или иным объектам файловой системы. Система прав Linux предусматривает наличие не только стандартных разрешений, но и ряд дополнительных – специальные, расширенные, а также включает различные средства управления ими. Их знание позволит избежать многих проблем в области прав и получить эффективный инструмент для оптимизации процесса использования прав. Определим основные понятия прав в Linux и рассмотрим некоторые аспекты их практического применения.
Понятие прав на ресурсы файловой системы
Понятие прав на ресурсы является одним из ключевых в системе Linux, поскольку это позволяет четко определять принадлежность объектов и управлять разрешениями на их использование другими пользователями и группами.
При создании пользователем любого объекта файловой системы он сразу же становится его владельцем, а вместе с ним владельцами становятся все участники первичной или основной группы, которой принадлежит пользователь. В этом случае полученные права на объект считаются установленными по умолчанию или стандартными.
Таким образом, права доступа к объекту могут быть определены для трех субъектов в толковании Linux:
-
Пользователя, создавшего объект;
-
Для всех участников основной группы, к которой принадлежит пользователь;
-
Для всех остальных (Other).
Стандартные права на объект всегда можно изменить и даже можно изменить всех или часть его владельцев, включая и создавшего его пользователя. Например, если пользователь является участником нескольких групп, то он может изменить свою основную группу на другую и тогда владельцем всех пользовательских объектов станет эта выбранная группа и все ее участники. Для смены владельца любого объекта, например файла можно воспользоваться стандартным средством – командой chown, использование которой позже нами будет продемонстрировано.
Примеры
Узнать кто является владельцем файлов текущей директории можно с помощью команды лс с опцией -л:
$ ls -l

total 4 -rw-r--r—1 root root 727 Sep 8 19:24 example_backup.sh
Собственником единственного файла с именем example_backup.sh есть пользователь root.
Получить список всех файлов, владельцем которых является определенный пользователь, можно с помощью следующей команды:
$ find / -user victor

Список достаточно обширный и поэтому представим только файлы домашней пользовательской директории с именем victor:
/home/victor /home/victor/myfile /home/victor/.profile /home/victor/.bashrc /home/victor/.local /home/victor/.local/share /home/victor/.local/share/nano /home/victor/.bash_logout
Сменим владельца файла с именем myfile, принадлежащий пользователю с именем victor. Введем в терминале:
$ chown grisha /home/victor/myfile

Проверим результат:
$ find / -user victor

Можно убедиться, что файл отсутствует среди ресурсов, принадлежащих пользователю victor.
$ find / -user grisha

Выход команды:
/home/victor/myfile /home/grisha /home/grisha/.profile /home/grisha/.bashrc /home/grisha/.bash_logout
Как видим, владелец файла с именем myfile изменился, несмотря на то, что файл находится в домашней директории другого пользователя.
Использование опции -R позволяет рекурсивную установку владельца ресурса, то есть, изменять владельца не только текущей директории, но и всех вложенных файлов и директорий. В этом случае команда смены владельца выглядела бы следующим образом:
$ chown -R grisha /home/victor/dir
Здесь dir – каталог, принадлежащий пользователю victor.
Следует отметить, что с помощью команды chown можно изменить не только пользователя, но и группу. Кроме того, для смены владельца ресурса можно использовать команду chgrp.
Например, установить владельцем каталога testing группа office можно с помощью следующей команды:
$ chgrp .office testing
Основная группа пользователя обычно прописывается в файле /etc/passwd. Вывести ее можно с помощью следующей команды:
$ groups grisha

Вывод:
grisha : grisha users
Основная группа для этого пользователя – группа grisha При желании можно временно сменить основную группу, однако при этом необходимо выполнение условия присутствия пользователя в этой группе. Команда при этом должна быть такой:
$ newgrp xxxxx
Здесь ххххх – имя группы, которая станет основным для текущего пользователя до применения команды exit или выхода пользователя из системы. После этого старые настройки вернутся и первичная группа снова станет основной для пользователя.
Если же пользователь не входит в группу, указанную в команде, оболочка потребует пароль этой группы. В случае его ввода пользователем выбранная группа станет для него основной.
Виды разрешений
Система прав Linux поддерживает три основных вида разрешений, которые могут быть установлены для определенного объекта:
-
Разрешение на чтение (Read);
-
Разрешение на запись (Write);
-
Разрешение на исполнение (Execute).
Их действие определяется типом объекта, к которому устанавливается то или иное разрешение.
Для использования в командах, каждое из указанных разрешений имеет свое числовое значение. В Таблице 1 приведена информация о действии каждого разрешения для файлов и каталогов, а также указаны их числовые значения.
Таблица 1. Результаты внедрения главных разрешений к файлам и каталогам
| Разрешение | Числовое значение | Файл | Каталог |
|---|---|---|---|
| Read | 4 | Чтение содержимого | Отображение содержимого |
| Write | 2 | Изменение данных | Создание, удаление или установка прав для файлов |
| Execute | 1 | Запуск на выполнение | Переход в каталог |
Управление основными правами
Управление основными правами в Linux осуществляется путем установления пользователя разрешений на выполнение того или иного действия над определенным объектом. Для этого используется команда chmod, которая может работать в двух режимах – абсолютный и относительный.
Абсолютный режим подразумевает использование в команде числовых значений разрешений в следующей форме:
UGO
Здесь позиция U – отображает права на пользовательский объект, G – для группы, O – для всех остальных.
Например, установим права на файл с именем myfile:
$ chmod 755 /home/victor/myfile
Здесь пользователь получил максимальные права: 4 (чтение) + 2 (запись) + 1 (исполнение) = 7; группа получила права только на чтение и исполнение: 4+1=5; все остальные также только чтение и исполнение.

Относительный режим команды chmod позволяет указать только изменения прав относительно абсолютных значений разрешений, которые уже имеет пользователь для указанного объекта. При этом, если изменения одинаковы для всех пользователей, то указывать их в команде для каждой позиции не обязательно.
К примеру, добавим разрешение на запись для файла myfile для группы, но запретим его выполнение всем остальным пользователям системы:
$ chmod g+w,o-x /home/victor/myfile

Если в команде используется опция -R, то изменения будут касаться не только указанного каталога, но и всех вложенных.
К примеру, добавим разрешения на чтение и исполнение для всех остальных пользователей для каталога testing и всех вложенных каталогов и файлов:
$ chmod -R o+rx testing

Если необходимо установить указанные разрешения только для каталогов, то команду следует изменить следующим образом:
$ chmod -R o+rX testing
Здесь мы указали разрешение на исполнение, записанное в верхнем регистре (+Х). Именно это действует как запрет на исполнение для всех файлов.
Использование специальных разрешений
Специальные разрешения позволяют получить расширенные права на объекты в Linux. Они реализуются с помощью набора специальных разрешений, основная информация по которым приведена в Таблице 2.
Таблица 2.Синтаксис и характеристики специальных разрешений Linux.
| Разрешение | Описание | Числовое значение | Пример использования | Действие по файлам | Действие по каталогам |
|---|---|---|---|---|---|
| SUID | Устанавливает идентификатор пользователя | 4 | chmod u+s myfile | Разрешение на исполнение с полномочиями владельца | Не используется |
| SGID | Установка идентификатора группы | 2 | chmod g+s mydir | Разрешение на исполнение с полномочиями владельца группы | Владельцем всех файлов каталога (как существующих, так и новых) становится владелец группы |
| Sticky bit | Блокирует удаление файлов | 1 | chmod +t mydir | Не используется | Запрет на удаление файлов другими пользователями |
Указанные разрешения могут применяться в абсолютном режиме. Продемонстрируем это на примере.
Введем в терминале:
$ ls -ld testing
Здесь, в первой позиции указывается число (2), для которого обозначаются специальные разрешения; другие числа определяют разрешения пользователя (rwx), группы (rwx) и других пользователей (rx).

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

Выход команды: drwxrwsr-x 2 root root 4096 Sep 20 19:22 testing
Признаком того, что для каталога действуют специальные разрешения, наличие символа «s» в позиции разрешения на исполнение.
Для файлов для определения применения специальных разрешений следует использовать команду ls опцией -l. Наличие символа «s» в позиции разрешения на исполнение будет свидетельствовать о действии специальных разрешений для выбранного файла.
Списки контроля доступа
Рассмотренные выше возможности системы управления правами Linux имеют один недостаток – они не позволяют в одном файле предоставлять разрешения более чем одному пользователю или группе. Списки контроля доступа (ACL) решают этот вопрос, хотя не каждая утилита поддерживает работу с ними и поэтому при копировании или перемещении файлов можно потерять настройки ACL. Например, архиватор tar их не поддерживает и поэтому вместо нее для создания резервных копий файлов можно применять утилиту star или getfacl.
Кроме того, механизм ACL позволяет устанавливать стандартные разрешения, которые могут быть отличными для разных каталогов.
Подготовка к использованию
Не каждый дистрибутив Linux имеет установленный пакет ACL и потому его сначала нужно установить. Сделаем это. Введем в терминале:
$ apt-get install acl

Результат: Setting up acl (2.3.1-3). Пакет версії 2.3.1 успешно установлено.
В большинстве случаев стандартная поддержка ACL обычно отсутствует, признаком чего может быть появление системного сообщения operation not supported при настройке списков. Для этого перед использованием пакета необходимо подготовить файловую систему. Это можно сделать путем редактирования файла /etc/fstab, в котором следует установить для файловой системы монтирования из ACL в качестве стандартной функции.
Введем в терминале:
$ nano /etc/fstab

После внесения соответствующих изменений мы достигли того, что стандартный процесс монтирования теперь будет происходить с опцией acl. Это означает, что поддержка ACL в нашей системе включена по умолчанию, то есть стала стандартной. Теперь мы сможем определять разрешения всех новых элементов каталога. Однако, для уже существующих объектов механизм ACL разрешений не изменяет. Выйдем из редактора.
Просмотр и изменение настроек для объектов
Перед внесением каких-либо изменений необходимо владеть текущей информацией. Просмотреть текущие настройки для каталога testing можно с помощью следующей команды:
$ getfacl testing

Выход команды:
# file: testing # owner: root # group: root # flags: -s- user::rwx group::rwx other::r-x
Команда вывела текущие значения разрешений по отдельности для пользователя, группы и других. Эта же информация может быть выведена с помощью команды ls -ld, что мы уже демонстрировали раньше.
Теперь мы попробуем с помощью ACL предоставить права на чтение и исполнение для каталога testing группе office, которая была создана нами раньше. Для этого введем в терминале:
$ setfacl -m g:office:rwx testing
Тут параметр -м указывает на необходимость изменения текущих настроек ACL.

Снова воспользуемся командой getfacl для проверки новых настроек. Введем в терминале:
$ getfacl testing

Выход команды:
# file: testing # owner: root # group: root # flags: -s- user::rwx group::rwx group:office:rwx mask::rwx other::r-x
Можно убедиться, что для группы с именем office теперь установлены те же разрешения, что и для основной группы пользователя (rwx), и они отличны от разрешений для всех других групп.
Итак, теперь с помощью механизма ACL, установленном в качестве стандартной функции, мы легко можем предоставлять различные разрешения нескольким пользователям или группам для каталога, а также всем его вложенным объектам при применении опции наследования -R в команде setfacl.
Экспорт и импорт ACL прав с помощью файлов
Технология предполагает возможность сохранения в текстовом файле текущих ACL-настройки для объектов файловой системы для дальнейшего их восстановления в случае необходимости. Продемонстрируем это на примере.
Сохраним текущие настройки для каталога testing в файле acl_backup.txt:
$ getfacl -p testing > acl_backup.txt
Здесь опция -p обеспечивает сохранение пути в каталог/файл на выходе команды. Это удобно в случае массового обновления данных.

Сменим права группы office для каталогу testing:
$ setfacl -m g:office:rw testing
![]()
Просмотрим текущие настройки каталога:
$ getfacl testing

Выход:
user::rwx group::rwx group:office:rw- mask::rwx other::r-x
Права группы изменились с rwx на rw-.
Восстановим предварительные настройки из ранее сохраненного файла acl_backup.txt. Для этого введем в терминале:
$ setfacl --restore=acl_backup.txt
Опция --restore обеспечивает восстановление данных в формате getfacl с опцией -p.

Снова просмотрим текущие настройки для каталога testing:
$ getfacl testing

Выход:
user::rwx group::rwx group:office:rwx mask::rwx other::r-x
Можно убедиться, что права группы office возобновились, то есть операция импорта ранее сохраненных настроек сработала.
Команда экспорта дополнительно может иметь опцию -R, что позволяет сохранить настройки не только первоначального каталога, но и для всех вложенных объектов.
Техническое решение FREEhost.UA
Понимание системы прав в Linux помогает администрировать серверы. Но если вы хотите получить уже готовый к работе VPS или выделенный сервер с поддержкой специалистов FREEhost.UA — наши специалисты помогут настроить доступы, безопасность и резервные копии.
Подписывайтесь на наш телеграм-канал https://t.me/freehostua, чтобы быть в курсе новых полезных материалов
Смотрите наш канал Youtube на https://www.youtube.com/freehostua.
Мы в чем-то ошиблись, или что-то пропустили?
Напишите об этом в комментариях, мы с удовольствием ответим и обсудим Ваши замечания и предложения.
|
Дата: 25.09.2025 Автор: Александр Ровник
|
|

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:
comments powered by Disqus