Серия RHCSA: Использование ACL (списков управления доступом) и монтирование общих каталогов Samba / NFS – Часть 7

В последней статье (Серия RHCSA Часть 6) мы начали объяснять, как настроить и сконфигурировать локальное хранилище системы с использованием parted и ssm.

RHCSA Series:: Configure ACL’s and Mounting NFS / Samba Shares – Part 7

Мы также обсудили, как создавать и монтировать зашифрованные тома с паролем при загрузке системы. Кроме того, мы предупредили вас об избегании выполнения критических операций управления хранилищем на смонтированных файловых системах. Учитывая это, мы теперь рассмотрим наиболее используемые форматы файловой системы в Red Hat Enterprise Linux 7, а затем перейдем к темам монтирования, использования и размонтирования как вручную, так и автоматически сетевых файловых систем (CIFS и NFS), а также к реализации списков управления доступом для вашей системы.

Предварительные требования

Перед продолжением убедитесь, что у вас есть сервер Samba и сервер NFS (обратите внимание, что NFSv2 больше не поддерживается в RHEL 7).

В этом руководстве мы будем использовать машину с IP 192.168.0.10, на которой оба сервиса работают как серверы, и устройство с RHEL 7 в качестве клиента с IP-адресом 192.168.0.18. Позже в статье мы расскажем вам, какие пакеты нужно установить на клиенте.

Форматы файловой системы в RHEL 7

Начиная с RHEL 7, XFS была введена в качестве основной файловой системы для всех архитектур из-за ее высокой производительности и масштабируемости. В настоящее время она поддерживает максимальный размер файловой системы 500 ТБ согласно последним тестам, проведенным Red Hat и его партнерами на основных оборудованиях.

Кроме того, XFS включает user_xattr (расширенные пользовательские атрибуты) и acl (списки контроля доступа POSIX) в качестве параметров монтирования по умолчанию, в отличие от ext3 или ext4 (ext2 считается устаревшим с момента выпуска RHEL 7), что означает, что вам не нужно явно указывать эти параметры ни в командной строке, ни в /etc/fstab при монтировании файловой системы XFS (если вы хотите отключить эти параметры в этом последнем случае, вам нужно явно использовать no_acl и no_user_xattr).

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

Списки контроля доступа

Как и каждый системный администратор, будь то начинающий или эксперт, хорошо знаком с обычными разрешениями на доступ к файлам и каталогам, которые определяют определенные привилегии (чтение, запись и выполнение) для владельца, группы и “мира” (всех остальных). Однако не стесняйтесь обратиться к Части 3 серии RHCSA, если вам нужно освежить память немного.

Однако, поскольку стандартный набор ugo/rwx не позволяет настраивать разные разрешения для разных пользователей, были введены ACL для определения более детальных прав доступа к файлам и каталогам, чем те, которые указаны в обычных разрешениях.

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

1. Существуют два типа ACL: ACL доступа, которые могут быть применены к конкретному файлу или каталогу, и ACL по умолчанию, которые могут быть применены только к каталогу. Если файлы, содержащиеся в нем, не имеют установленного ACL, они наследуют ACL по умолчанию своего родительского каталога.

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

3. ACLs устанавливаются (и удаляются) с помощью setfacl, используя соответственно опции -m или -x.

Например, давайте создадим группу с именем tecmint и добавим пользователей johndoe и davenull в нее:

# groupadd tecmint
# useradd johndoe
# useradd davenull
# usermod -a -G tecmint johndoe
# usermod -a -G tecmint davenull

И давайте проверим, принадлежат ли оба пользователя дополнительной группе tecmint:

# id johndoe
# id davenull
Verify Users

Теперь создадим каталог с именем playground в /mnt, и файл с именем testfile.txt внутри. Мы установим владельца группы на tecmint и измените его стандартные разрешения ugo/rwx на 770 (разрешения на чтение, запись и выполнение предоставляются как владельцу файла, так и владельцу группы файла):

# mkdir /mnt/playground
# touch /mnt/playground/testfile.txt
# chmod 770 /mnt/playground/testfile.txt

Затем смените пользователя на johndoe и davenull, в таком порядке, и запишите в файл:

echo "My name is John Doe" > /mnt/playground/testfile.txt
echo "My name is Dave Null" >> /mnt/playground/testfile.txt

Пока все хорошо. Теперь позвольте пользователю gacanepa записать в файл – и операция записи завершится неудачно, что и следовало ожидать.

Но что если нам действительно нужно, чтобы пользователь gacanepa (который не является членом группы tecmint) имел разрешения на запись в /mnt/playground/testfile.txt? Первое, что может прийти вам в голову, это добавить эту учетную запись пользователя в группу tecmint. Но это даст ему разрешения на запись для ВСЕХ файлов, где установлен бит записи для группы, и мы этого не хотим. Мы хотим, чтобы он мог писать только в /mnt/playground/testfile.txt.

# touch /mnt/playground/testfile.txt
# chown :tecmint /mnt/playground/testfile.txt
# chmod 777 /mnt/playground/testfile.txt
# su johndoe
$ echo "My name is John Doe" > /mnt/playground/testfile.txt
$ su davenull
$ echo "My name is Dave Null" >> /mnt/playground/testfile.txt
$ su gacanepa
$ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt
Manage User Permissions

Дадим пользователю gacanepa права на чтение и запись в файл /mnt/playground/testfile.txt.

Выполните как root,

# setfacl -R -m u:gacanepa:rwx /mnt/playground

и вы успешно добавите ACL, позволяющий gacanepa записывать в тестовый файл. Затем переключитесь на пользователя gacanepa и попробуйте снова записать в файл:

$ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

Чтобы просмотреть ACL для определенного файла или каталога, используйте getfacl:

# getfacl /mnt/playground/testfile.txt
Check ACLs of Files

Чтобы установить ACL по умолчанию для каталога (который будет наследоваться его содержимым, если не перезаписано иначе), добавьте d: перед правилом и укажите каталог вместо имени файла:

# setfacl -m d:o:r /mnt/playground

ACL выше позволит пользователям, не состоящим в группе владельца, иметь доступ на чтение к будущему содержимому каталога /mnt/playground. Обратите внимание на разницу в выводе getfacl /mnt/playground до и после изменения:

Set Default ACL in Linux

Глава 20 в официальном руководстве администратора хранилищ RHEL 7 предоставляет больше примеров использования ACL, и я настоятельно рекомендую вам взглянуть на него и иметь под рукой в качестве справочного материала.

Source:
https://www.tecmint.com/rhcsa-exam-configure-acls-and-mount-nfs-samba-shares/