Как установить списки контроля доступа (ACL) и дисковые квоты для пользователей и групп -- LFCS часть 16

Как установить списки контроля доступа (ACL) и дисковые квоты для пользователей и групп — LFCS часть 16

LFCS

Списки контроля доступа (также известные как ACL) — это функция ядра Linux, которая позволяет определять более мелкие права доступа к файлам и каталогам, чем те, которые указаны с помощью регулярных разрешений ugo/rwx.

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

 

 

Проверка совместимости файловой системы с ACL

Чтобы ваши файловые системы поддерживали ACL, вы должны убедиться, что они были установлены с использованием опции acl. Для этого мы будем использовать tune2fs для файловых систем ext2/3/4, как указано ниже. Замените /dev/sda1 на устройство или файловую систему, которую вы хотите проверить:

# tune2fs -l /dev/sda1 | grep "Default mount options:"

 

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

В следующей файловой системе ext4 мы видим, что ACL был включены для /dev/xvda2:

# tune2fs -l /dev/xvda2 | grep "Default mount options:"

 

Check-ACL-Enabled-on-Linux-Filesystem

 

 

Если приведенная выше команда не показывает, что файловая система смонтирована с поддержкой ACL, это, скорее всего, связано с параметром noacl, присутствующим в /etc/fstab.

В этом случае удалите его, отмонтируйте файловую систему, затем смонтируйте её или просто перезагрузите свою систему после сохранения изменений в /etc/fstab.

 

 

Знакомство с ACL в Linux

Чтобы проиллюстрировать, как работают ACL, мы будем использовать группу, которая называется developers, и добавим пользователей walterwhite и saulgoodman (да, я поклонник Breaking Bad!):

# groupadd developers
# useradd walterwhite
# useradd saulgoodman
# usermod -a -G developers walterwhite
# usermod -a -G developers saulgoodman

 

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

# id walterwhite
# id saulgoodman

 

Find-User-ID-in-Linux

 

 

Теперь создадим каталог с именем test в /mnt и файл acl.txt внутри /mnt/test/acl.txt.

Затем мы установим владельца группы developers и рекурсивно изменим его разрешения ugo/rwx по умолчанию на 770 (таким образом, предоставляя разрешения на чтение, запись и выполнение, предоставленные как обычному пользователю, так и владельцу группы файла):

# mkdir /mnt/test
# touch /mnt/test/acl.txt
# chgrp -R developers /mnt/test
# chmod -R 770 /mnt/test

 

Как и ожидалось, вы можете получить доступ в /mnt/test/acl.txt как walterwhite или saulgoodman:

# su - walterwhite
# echo "My name is Walter White" > /mnt/test/acl.txt
# exit
# su - saulgoodman
# echo "My name is Saul Goodman" >> /mnt/test/acl.txt
# exit

 

Verify-ACL-Rules-on-Users

 

 

Пока все идет нормально. Однако вскоре мы встретимся с проблемой, когда нам нужно предоставить доступ на запись /mnt/test/acl.txt для другого пользователя, которого нет в группе developers.

Стандартные разрешения ugo/rwx требуют, чтобы новый пользователь был добавлен в группу developers, но это дало бы им одинаковые права доступа ко всем объектам, принадлежащим группе. Именно тут и понадобиться ACL.

 

 

Настройка ACL в Linux

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

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

Дадим пользователю gacanepa разрешение на чтение и запись в /mnt/test/acl.txt. Прежде чем это сделать, давайте посмотрим на текущие настройки ACL в этом каталоге:

# getfacl /mnt/test/acl.txt

 

Затем измените ACL в файле, используйте u:<имя пользователя>:rw, чтобы указать разрешения на чтение/запись:

# setfacl -m u:gacanepa:rw /mnt/test/acl.txt

 

И снова запустите getfacl в файле, чтобы провести сравнения. На следующем скриншоте показаны «До» и «После»:

# getfacl /mnt/test/acl.txt

 

Set-ACL-on-Linux-Users

 

 

Затем нам нужно будет предоставить другим пользователям разрешения на работу в каталоге /mnt/test:

# chmod +x /mnt/test

 

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

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

# echo "My name is Yehor Myroshnychenko" >> /mnt/test/acl.txt

 

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

# setfacl -m d:o:r /mnt/test
# getfacl /mnt/test/

 

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

Set-Default-ACL-to-Linux-Directory

 

 

Чтобы удалить определенный ACL, замените -m в приведенных выше командах на -x. Например:

# setfacl -x d:o /mnt/test

 

Кроме того, вы также можете использовать опцию -b, чтобы удалить ВСЕ ACL за одну итерацию:

# setfacl -b /mnt/test

 

Дополнительные сведения и примеры использования списков ACL смотрите в главе 10, пункт 2, руководства по безопасности openSUSE.

 

 

Установка квот Linux-диска для пользователей и файловых систем

Место хранения — еще один ресурс, который необходимо тщательно использовать и контролировать. Для этого могут быть установлены квоты на основе файловой системы, как для отдельных пользователей, так и для групп пользователей.

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

Первое, что вы должны сделать, чтобы включить квоты в файловой системе, — это установить её с помощью usrquota или grpquota (для пользовательских и групповых квот, соответственно) в /etc/fstab.

Например, давайте включим пользовательские квоты для /dev/vg00/vol_backups и групповые квоты для /dev/vg00/vol_projects.

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

UUID=f6d1eba2-9aed-40ea-99ac-75f4be05c05a /home/projects ext4 defaults,grpquota 0 0
UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4 defaults,usrquota 0 0

 

Отключите и перемонтируйте обе файловые системы:

# umount /home/projects
# umount /home/backups
# mount -o remount /home/projects
# mount -o remount /home/backups 

 

Затем проверьте, что параметры usrquota и grpquota присутствуют на выводе mount:

# mount | grep vg00

 

Check-Linux-User-Quota-and-Group-Quota

 

 

Наконец, запустите следующие команды для инициализации и включения квот:

# quotacheck -avugc
# quotaon -vu /home/backups
# quotaon -vg /home/projects

 

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

 

 

Настройка квот для диска в Linux

Начнем с установки ACL в /home/backups для пользователя gacanepa, что даст ему права на чтение, запись и выполнение в этом каталоге:

# setfacl -m u:gacanepa:rwx /home/backups/

 

Затем,

# edquota -u gacanepa

 

Мы сделаем нижний предел = 900 и верхний предел = 1000 блоков (1024 байта/блок * 1000 блоков = 1024000 байтов = 1 МБ) на использование дискового пространства.

Мы также можем установить ограничение от 20 до 25 в качестве нижней и верхней границы на количество файлов, которые этот пользователь может создать.

Вышеупомянутая команда запустит текстовый редактор ($EDITOR) с временным файлом, где мы можем установить указанные выше ограничения:

Linux-Disk-Quota-For-User

 

 

Эти настройки вызовут предупреждение для пользователя gacanepa, когда он достигнет уровня 900-блока или 20-файла для периода 7 дней (по умолчанию).

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

Чтобы проверить, давайте попробуем пользователю gacanepa создать пустой файл размером 2 МБ с именем test1 внутри /home/backups:

# dd if=/dev/zero of=/home/backups/test1 bs=2M count=1
# ls -lh /home/backups/test1

 

Verify-Linux-User-Quota-on-Disk

 

 

Как вы можете увидеть, файл операции записи завершился неудачно из-за превышения квоты диска. Так как только первые 1000 КБ записываются на диск, результат в этом случае скорее всего будет поврежденным файлом.

Аналогичным образом, вы можете создать ACL для групп developers, чтобы предоставить членам этой группы rwx доступ к /home/projects:

# setfacl -m g:developers:rwx /home/projects/

 

И установите ограничения квоты:

# edquota -g developers

 

Так же, как раньше мы делали для пользователя gacanepa.

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

# edquota -t

 

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

Чтобы сообщить о квотах, вы можете использовать квоту -u [user] или quota -g [group] для быстрого просмотра или repquota -v [/path/to/filesystem] для более подробного и удобно отформатированного отчета.

Конечно, вы можете заменить [user], [group] и [/path/to/filesystem] на определенные имена пользователей и групп и имя конкретной файловой системы, которую вы хотите проверить.

 

Итоги

В этой статье мы объяснили, как установить списки контроля доступа и дисковые квоты для пользователей и групп. Используя оба варианта, вы сможете более эффективно управлять разрешениями и дисками.

Если вы хотите узнать больше о квотах, вы можете обратиться к Quota Mini-HowTo в документации по проектам Linux.

 

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасностиполный курс по кибербезопасности от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
LFCS

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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

Самое читаемое
Меню