Поиск по сайту:

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


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

Мы также обсудили, как создавать и монтировать зашифрованные тома с паролем во время загрузки системы. Кроме того, мы предупредили вас, чтобы вы не выполняли критически важные операции по управлению хранилищем в смонтированных файловых системах. Имея это в виду, сейчас мы рассмотрим наиболее часто используемые форматы файловых систем в 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. ACL устанавливаются (и удаляются) с помощью 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

Давайте теперь создадим каталог с именем 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

Давайте предоставим пользователю 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

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

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

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

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