Списки контроля доступа (также известные как ACL) — это функция ядра Linux, которая позволяет определять более мелкие права доступа к файлам и каталогам, чем те, которые указаны с помощью регулярных разрешений ugo/rwx.
Например, стандартные разрешения ugo/rwx не позволяют устанавливать разные разрешения для разных пользователей или групп. С ACL это относительно легко сделать, что вы и увидите в этой статье.
Проверка совместимости файловой системы с ACL
Чтобы ваши файловые системы поддерживали ACL, вы должны убедиться, что они были установлены с использованием опции acl. Для этого мы будем использовать tune2fs для файловых систем ext2/3/4, как указано ниже. Замените /dev/sda1 на устройство или файловую систему, которую вы хотите проверить:
Примечание. С XFS списки контроля доступа поддерживаются из базовой настройки.
В следующей файловой системе ext4 мы видим, что ACL был включены для /dev/xvda2:
Если приведенная выше команда не показывает, что файловая система смонтирована с поддержкой ACL, это, скорее всего, связано с параметром noacl, присутствующим в /etc/fstab.
В этом случае удалите его, отмонтируйте файловую систему, затем смонтируйте её или просто перезагрузите свою систему после сохранения изменений в /etc/fstab.
Знакомство с ACL в Linux
Чтобы проиллюстрировать, как работают ACL, мы будем использовать группу, которая называется developers, и добавим пользователей walterwhite и saulgoodman (да, я поклонник Breaking Bad!):
Прежде чем продолжить, давайте проверим, что оба пользователя добавлены в группу разработчиков:
Теперь создадим каталог с именем test в /mnt и файл acl.txt внутри /mnt/test/acl.txt.
Затем мы установим владельца группы developers и рекурсивно изменим его разрешения ugo/rwx по умолчанию на 770 (таким образом, предоставляя разрешения на чтение, запись и выполнение, предоставленные как обычному пользователю, так и владельцу группы файла):
Как и ожидалось, вы можете получить доступ в /mnt/test/acl.txt как walterwhite или saulgoodman:
Пока все идет нормально. Однако вскоре мы встретимся с проблемой, когда нам нужно предоставить доступ на запись /mnt/test/acl.txt для другого пользователя, которого нет в группе developers.
Стандартные разрешения ugo/rwx требуют, чтобы новый пользователь был добавлен в группу developers, но это дало бы им одинаковые права доступа ко всем объектам, принадлежащим группе. Именно тут и понадобиться ACL.
Настройка ACL в Linux
Существует два типа ACL: ACL доступа (которые применяются к файлу или каталогу) и ACL по умолчанию, которые могут быть применены только к каталогу.
Если файлы внутри каталога, в котором установлен ACL по умолчанию, не имеют собственного списка ACL, они наследуют ACL по умолчанию своего родительского каталога.
Дадим пользователю gacanepa разрешение на чтение и запись в /mnt/test/acl.txt. Прежде чем это сделать, давайте посмотрим на текущие настройки ACL в этом каталоге:
Затем измените ACL в файле, используйте u:<имя пользователя>:rw, чтобы указать разрешения на чтение/запись:
И снова запустите getfacl в файле, чтобы провести сравнения. На следующем скриншоте показаны «До» и «После»:
Затем нам нужно будет предоставить другим пользователям разрешения на работу в каталоге /mnt/test:
Имейте в виду, что для доступа к содержимому каталога обычным пользователям нужны разрешения на выполнение в этом каталоге.
Теперь пользователь gacanepa сможет производить запись файлов. Перейдите к этой учетной записи и выполните следующую команду для подтверждения:
Чтобы установить ACL по умолчанию в каталог (который его содержимое наследует), добавьте d: перед правилом и укажите каталог вместо имени файла:
Правило ACL описанное выше позволит пользователям, не входящим в группу developers, получить доступ для чтения к будущему содержимому каталога /mnt/test. Обратите внимание на разницу в выводе getfacl /mnt/test до и после изменений:
Чтобы удалить определенный ACL, замените -m в приведенных выше командах на -x. Например:
Кроме того, вы также можете использовать опцию -b, чтобы удалить ВСЕ ACL за одну итерацию:
Дополнительные сведения и примеры использования списков ACL смотрите в главе 10, пункт 2, руководства по безопасности openSUSE.
Установка квот Linux-диска для пользователей и файловых систем
Место хранения — еще один ресурс, который необходимо тщательно использовать и контролировать. Для этого могут быть установлены квоты на основе файловой системы, как для отдельных пользователей, так и для групп пользователей.
Таким образом, вы можете ввести ограничение на использование диска для данного пользователя или конкретной группы. Вы можете быть уверены, что ваши диски не будут заполнены до отказа небрежным (или безымянным) пользователем.
Первое, что вы должны сделать, чтобы включить квоты в файловой системе, — это установить её с помощью usrquota или grpquota (для пользовательских и групповых квот, соответственно) в /etc/fstab.
Например, давайте включим пользовательские квоты для /dev/vg00/vol_backups и групповые квоты для /dev/vg00/vol_projects.
Обратите внимание, что UUID используется для идентификации каждой файловой системы.
Отключите и перемонтируйте обе файловые системы:
Затем проверьте, что параметры usrquota и grpquota присутствуют на выводе mount:
Наконец, запустите следующие команды для инициализации и включения квот:
Давайте теперь присвоим квоты для имени пользователя и группы, о которых мы упоминали ранее. Позднее вы сможете отключить эти квоты.
Настройка квот для диска в Linux
Начнем с установки ACL в /home/backups для пользователя gacanepa, что даст ему права на чтение, запись и выполнение в этом каталоге:
Затем,
Мы сделаем нижний предел = 900 и верхний предел = 1000 блоков (1024 байта/блок * 1000 блоков = 1024000 байтов = 1 МБ) на использование дискового пространства.
Мы также можем установить ограничение от 20 до 25 в качестве нижней и верхней границы на количество файлов, которые этот пользователь может создать.
Вышеупомянутая команда запустит текстовый редактор ($EDITOR) с временным файлом, где мы можем установить указанные выше ограничения:
Эти настройки вызовут предупреждение для пользователя gacanepa, когда он достигнет уровня 900-блока или 20-файла для периода 7 дней (по умолчанию).
Если к тому времени ситуация с превышением квоты не была устранена (например, путем удаления файлов), нижний предел станет верхним пределом, и этому пользователю будет запрещено использовать больше места для хранения или создания большого количества файлов.
Чтобы проверить, давайте попробуем пользователю gacanepa создать пустой файл размером 2 МБ с именем test1 внутри /home/backups:
Как вы можете увидеть, файл операции записи завершился неудачно из-за превышения квоты диска. Так как только первые 1000 КБ записываются на диск, результат в этом случае скорее всего будет поврежденным файлом.
Аналогичным образом, вы можете создать ACL для групп developers, чтобы предоставить членам этой группы rwx доступ к /home/projects:
И установите ограничения квоты:
Так же, как раньше мы делали для пользователя gacanepa.
Срок отсрочки может быть указан как любое количество секунд, минут, часов, дней, недель или месяцев.
В отличие от использования блоков или количества файлов (которые устанавливаются на основе пользователя или группы), льготный период устанавливается в масштабе всей системы.
Чтобы сообщить о квотах, вы можете использовать квоту -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, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.