Списки контроля доступа (также известные как списки управления доступом) - это функция ядра Linux, которая позволяет определять более детализированные права доступа для файлов и каталогов, чем те, которые указаны обычным ugo / rwx разрешения.
Например, стандартный ugo / rwx permissions не позволяет устанавливать разные разрешения для разных пользователей или групп. С ACL это относительно легко сделать, как мы увидим в этой статье.
Чтобы убедиться, что ваши файловые системы в настоящее время поддерживают списки ACL, вы должны убедиться, что они были смонтированы с помощью параметра acl. Для этого мы будем использовать tune2fs для файловых систем ext2 / 3/4, как указано ниже. Заменять /dev/sda1 с устройством или файловой системой, которую вы хотите проверить:
# tune2fs -l / dev / sda1 | grep "Параметры монтирования по умолчанию:"
Примечание: С XFS, Списки контроля доступа поддерживаются из коробки.
В следующих ext4 файловой системы, мы видим, что списки управления доступом были включены для /dev/xvda2:
# tune2fs -l / dev / xvda2 | grep "Параметры монтирования по умолчанию:"
Если приведенная выше команда не указывает, что файловая система была смонтирована с поддержкой списков контроля доступа, это, скорее всего, связано с noacl возможность присутствовать в /etc/fstab.
В этом случае удалите его, размонтируйте файловую систему, а затем снова смонтируйте или просто перезагрузите систему после сохранения изменений в /etc/fstab.
Чтобы проиллюстрировать, как работают ACL, мы будем использовать группу с именем Разработчики и добавить пользователей Уолтер Уайт и Солгудмен (да, я фанат "Во все тяжкие!") на него:
# groupadd разработчиков. # useradd walterwhite. # useradd saulgoodman. # usermod -a -G разработчики walterwhite. # usermod -a -G разработчики saulgoodman.
Прежде чем продолжить, давайте проверим, что оба пользователя добавлены в группу разработчиков:
# id walterwhite. # id saulgoodman.
Давайте теперь создадим каталог под названием контрольная работа в /mntи файл с именем acl.txt внутри (/mnt/test/acl.txt).
Затем мы установим владельца группы на Разработчики и изменить его по умолчанию ugo / rwx разрешения рекурсивно для 770 (таким образом предоставляя разрешения на чтение, запись и выполнение, предоставленные как владельцу, так и владельцу группы файла):
# mkdir / mnt / test. # коснитесь /mnt/test/acl.txt. # chgrp -R developers / mnt / test. # chmod -R 770 / mnt / test.
Как и ожидалось, вы можете написать на /mnt/test/acl.txt в виде Уолтер Уайт или Солгудмен:
# су - вальтервайт. # echo "Меня зовут Уолтер Уайт"> /mnt/test/acl.txt. # выход. # су - солгудман. # echo "Меня зовут Сол Гудман" >> /mnt/test/acl.txt. # выход.
Все идет нормально. Однако вскоре мы столкнемся с проблемой, когда нам потребуется предоставить доступ на запись для /mnt/test/acl.txt для другого пользователя, не входящего в группу разработчиков.
Стандарт ugo / rwx разрешения потребуют, чтобы новый пользователь был добавлен в группу разработчиков, но это даст ему / ей одинаковые разрешения для всех объектов, принадлежащих группе. Именно здесь могут пригодиться ACL.
Есть два типа ACL: доступ к ACL являются (которые применяются к файлу или каталогу), и по умолчанию (необязательно) ACL, который можно применить только к каталогу.
Если файлы внутри каталога, в котором ACL по умолчанию не имеют собственного ACL, они наследуют ACL по умолчанию своего родительского каталога.
Давайте дадим пользователю гаканепа доступ для чтения и записи к /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.
Затем нам нужно будет предоставить другим разрешения на выполнение в /mnt/test каталог:
# chmod + x / mnt / test.
Имейте в виду, что для доступа к содержимому каталога обычному пользователю необходимы разрешения на выполнение в этом каталоге.
Пользователь гаканепа теперь должна иметь возможность писать в файл. Переключитесь на эту учетную запись пользователя и выполните следующую команду для подтверждения:
# echo "Меня зовут Габриэль Канепа" >> /mnt/test/acl.txt.
Чтобы установить ACL по умолчанию для каталога (который будет унаследован его содержимым, если иное не будет перезаписано), добавьте d:
перед правилом и укажите каталог вместо имени файла:
# setfacl -m d: o: r / mnt / test. # getfacl / mnt / test /
Приведенный выше ACL позволит пользователям, не входящим в группу владельцев, иметь доступ для чтения к будущему содержимому /mnt/test каталог. Обратите внимание на разницу в выводе getfacl / mnt / test до и после изменения:
Чтобы удалить определенный ACL, замените -м
в приведенных выше командах с -Икс
. Например,
# setfacl -x d: o / mnt / test.
В качестве альтернативы вы также можете использовать -b
возможность удалить ВСЕ ACL за один шаг:
# setfacl -b / mnt / test.
Для получения дополнительной информации и примеров использования ACL, пожалуйста, обратитесь к Глава 10, Раздел 2, из Руководство по безопасности openSUSE (также доступно для бесплатной загрузки в формате PDF).
Пространство для хранения - еще один ресурс, который необходимо тщательно использовать и контролировать. Для этого квоты могут быть установлены на основе файловой системы либо для отдельных пользователей, либо для групп.
Таким образом, устанавливается ограничение на использование диска, разрешенное для данного пользователя или определенной группы, и вы можете быть уверены, что ваши диски не будут заполнены до отказа неосторожным (или злонамеренным) пользователем.
Первое, что вы должны сделать, чтобы включить квоты в файловой системе, - это смонтировать ее с помощью параметров usrquota или grpquota (для пользовательских и групповых квот соответственно) в /etc/fstab.
Например, давайте включим пользовательские квоты для /dev/vg00/vol_backups и групповые квоты на /dev/vg00/vol_projects.
Обратите внимание, что UUID используется для идентификации каждой файловой системы.
UUID = f6d1eba2-9aed-40ea-99ac-75f4be05c05a / home / projects ext4 по умолчанию, grpquota 0 0. UUID = e1929239-5087-44b1-9396-53e09db6eb9e / home / backups ext4 по умолчанию, usrquota 0 0.
Отключите и перемонтируйте обе файловые системы:
# umount / home / projects. # umount / home / backups. # монтировать -o remount / home / projects. # монтировать -o remount / home / backups
Затем убедитесь, что параметры usrquota и grpquota присутствуют в выходных данных mount (см. Выделено ниже):
# mount | grep vg00.
Наконец, выполните следующие команды для инициализации и включения квот:
# quotacheck -avugc. # quotaon -vu / home / backups. # quotaon -vg / home / projects.
Тем не менее, давайте теперь назначим квоты для имени пользователя и группы, о которых мы упоминали ранее. Позже вы можете отключить квоты с помощью квота.
Начнем с настройки ACL на /home/backups для пользователя гаканепа, что даст ему права на чтение, запись и выполнение в этом каталоге:
# setfacl -m u: gacanepa: rwx / home / backups /
Затем с
# edquota -u gacanepa.
Мы сделаем мягкое limit = 900 и жесткий limit = 1000 блоки (1024 байта / блок * 1000 блоков = 1024000 байтов = 1 МБ) использования дискового пространства.
Мы также можем установить лимит 20 и 25 как мягкие и жесткие ограничения на количество файлов, которые может создать этот пользователь.
Приведенная выше команда запустит текстовый редактор. ($ РЕДАКТОР) с временным файлом, в котором мы можем установить ограничения, упомянутые ранее:
Эти настройки приведут к отображению предупреждения пользователю. гаканепа когда он достигнет 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.
Как видите, операция записи в файл завершается неудачно из-за превышения дисковой квоты. Поскольку только первый 1000 КБ записываются на диск, результатом в этом случае, скорее всего, будет поврежденный файл.
Точно так же вы можете создать ACL для групп разработчиков, чтобы предоставить членам этой группы доступ rwx к /home/projects:
# setfacl -m g: developers: rwx / home / projects /
И установите пределы квоты с помощью:
# edquota -g разработчики.
Так же, как мы сделали с пользователем гаканепа ранее.
Льготный период можно указать на любое количество секунд, минут, часов, дней, недель или месяцев путем выполнения.
# edquota -t.
и обновляя значения в Период отсрочки блокировки и период отсрочки индексирования дескрипторов.
В отличие от использования блока или inode (которые устанавливаются для пользователя или группы), льготный период устанавливается для всей системы.
Чтобы сообщить о квотах, вы можете использовать квоту -u [пользователь]
или квота -g [группа]
для быстрого списка или repquota -v [/ путь / к / файловой системе]
для получения более подробного (подробного) и красиво оформленного отчета.
Конечно, вы захотите заменить [Пользователь]
, [группа]
, и [/ путь / к / файловой системе]
с конкретными именами пользователей / групп и файловой системой, которую вы хотите проверить.
В этой статье мы объяснили, как установить Списки контроля доступа и дисковые квоты для пользователей и групп. Используя оба варианта, вы сможете более эффективно управлять разрешениями и использованием диска.
Если вы хотите узнать больше о квотах, вы можете обратиться к Мини-инструкция по квоте в проекте документации Linux.
Излишне говорить, что вы также можете рассчитывать на то, что мы ответим на ваши вопросы. Просто отправьте их, используя форму комментариев ниже, и мы будем более чем рады посмотреть.