Acl linux что это

Защита файлов/каталогов с помощью списков контроля доступа (ACL) в Linux

Как системный администратор, нашим главным приоритетом будет защита данных от несанкционированного доступа. Все мы знаем о разрешениях, которые мы устанавливаем с помощью некоторых полезных команд Linux, таких как chmod, chown, chgrp… и т. Д. Однако эти наборы разрешений по умолчанию имеют некоторые ограничения и иногда могут не работать в соответствии с нашими потребностями. Например, мы не можем настроить разные наборы разрешений для разных пользователей в одном каталоге или файле. Таким образом, были реализованы списки контроля доступа (ACL).

Допустим, у вас есть три пользователя: «tecmint1», «tecmint2» и «tecmint3». Каждая группа, имеющая общую группу, говорит «acl». Пользователь tecmint1 хочет, чтобы только пользователь tecmint2 мог читать и получать доступ к файлам, принадлежащим tecmint1, и никто другой не должен иметь к ним доступа.

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

Примечание. Согласно документации по продукту Redhat, он обеспечивает поддержку ACL для файловой системы ext3 и файловых систем, экспортированных по NFS.

Как проверить поддержку ACL в системах Linux

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

Выполните следующую команду, чтобы проверить поддержку ACL для файловой системы и параметр POSIX_ACL u003d Y (если вместо Y указано N, это означает, что ядро u200bu200bне поддерживает ACL и его необходимо перекомпилировать).

Перед тем, как начать играть с ACL, убедитесь, что у вас установлены необходимые пакеты. Ниже приведены необходимые пакеты, которые необходимо установить с помощью yum или apt-get.

Теперь проверьте смонтированную файловую систему, смонтирована ли она с опцией ACL или нет. Мы можем использовать команду «mount» для проверки того же, что показано ниже.

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

В приведенных выше выходных данных вы можете видеть, что параметр монтирования по умолчанию уже поддерживает acl. Другой вариант — перемонтировать раздел, как показано ниже.

Затем добавьте следующую запись в файл «/ etc/fstab», чтобы сделать его постоянным.

Снова перемонтируйте раздел.

На сервере NFS, если файловая система, которая экспортируется сервером NSF, поддерживает ACL и ACL могут быть прочитаны клиентами NFS, тогда ACL используются клиентской системой.

Для отключения ACL на общем ресурсе NFS вам необходимо добавить опцию «no_acl» в файл «/ etc/exportfs» на сервере NFS. Чтобы отключить его на стороне клиента NSF, снова используйте параметр «no_acl» во время монтирования.

Как реализовать поддержку ACL в системах Linux

Есть два типа ACL:

  1. ACL доступа: ACL доступа используются для предоставления разрешений на любой файл или каталог.
  2. Списки контроля доступа по умолчанию: Списки контроля доступа по умолчанию используются для предоставления/настройки списка управления доступом только для определенного каталога.

Разница между ACL доступа и ACL по умолчанию:

  1. ACL по умолчанию можно использовать только на уровне каталогов.
  2. Любой подкаталог или файл, созданный в этом каталоге, унаследует ACL от своего родительского каталога. С другой стороны, файл наследует списки ACL по умолчанию в качестве списков ACL для доступа.
  3. Мы используем «–d» для настройки списков управления доступом по умолчанию, а списки управления доступом по умолчанию являются дополнительными.

Чтобы определить списки ACL по умолчанию для определенного файла или каталога, используйте команду «getfacl». В приведенном ниже примере getfacl используется для получения списков ACL по умолчанию для папки «Музыка».

Чтобы установить списки ACL по умолчанию для определенного файла или каталога, используйте команду «setfacl». В приведенном ниже примере команда setfacl установит новые списки управления доступом (чтение и выполнение) для папки «Музыка».

Читайте также:  Сканер вредоносного по windows

Используйте команду «setfacl» для установки или изменения любого файла или каталога. Например, чтобы предоставить пользователю «tecmint1» права на чтение и запись.

Используйте команду «getfacl» для просмотра ACL любого файла или каталога. Например, чтобы просмотреть ACL в «/ tecmint1/example», используйте команду ниже.

Для удаления ACL из любого файла/каталога мы используем параметры x и b, как показано ниже.

Давайте реализуем ACL по следующему сценарию.

Два пользователя (tecmint1 и tecmint2), у обоих общая вторичная группа с именем «acl». Мы создадим один каталог, принадлежащий tecmint1, и предоставим пользователю tecmint2 права на чтение и выполнение в этом каталоге.

Шаг 1. Создайте двух пользователей и удалите пароль с обоих.

Шаг 2: Создайте группу и пользователей для дополнительной группы.

Шаг 3: Создайте каталог/tecmint и смените владельца на tecmint1.

Шаг 4: Войдите в систему с помощью tecmint1 и создайте каталог в папке/tecmint.

Шаг 5: Теперь установите ACL с помощью «setfacl», так что «tecmint1» будет иметь все разрешения rwx, «tecmint2» будет иметь разрешение только на чтение в папке «example», а остальные не будут иметь разрешений.

Шаг 6: Теперь войдите в систему с другим пользователем, например, «tecmint2», на другом терминале и смените каталог на «/ tecmint1». Теперь попробуйте просмотреть содержимое с помощью команды «ls», а затем попробуйте сменить каталог и увидеть разницу, как показано ниже.

Шаг 7: Теперь дайте разрешение «выполнить» для «tecmint2» в папке «example», а затем используйте команду «cd», чтобы увидеть эффект. Теперь «tecmint2» имеет разрешения на просмотр и изменение каталога, но не на запись чего-либо.

Примечание. После внедрения ACL вы увидите дополнительный знак «+» для вывода «ls –l», как показано ниже.

Источник

Access Control Lists (Русский)

Списки управления доступом (Access Control Lists, ACL) — расширенный, более гибкий механизм прав доступа для файловых систем, разработанный как дополнение к стандартным правам доступа UNIX. ACL позволяет задавать права доступа к объектам на диске для пользователей и групп.

Contents

Установка

Пакет acl уже установлен, так как является зависимостью systemd.

Включение ACL

Для использования ACL файловая система должна быть смонтирована с опцией acl . Файл fstab позволяет настроить постоянное монтирование с данной опцией.

В некоторых файловых системах параметр монтирования acl включён по умолчанию. К таким файловым системам относятся Btrfs и Ext2/3/4. Следующая команда позволяет проверить раздел с файловой системой ext* на наличие параметра acl :

Убедитесь, что используемая по умолчанию опция не была переопределена. Об этом будет свидетельствовать параметр noacl в соответствующей строке файла /proc/mounts .

Задать параметры монтирования файловой системы по умолчанию можно командой tune2fs -o параметр раздел , например:

Это очень удобно при работе с внешними дисками, поскольку такой диск будет монтироваться с опцией acl и на других Linux-машинах. В противном случае придётся редактировать файл /etc/fstab на каждой системе.

Использование

Изменение ACL

Для изменения прав ACL используется команда setfacl.

Задать права пользователя (в качестве пользователь можно использовать имя пользователя или его ID):

Задать права группы (в качестве группа можно использовать имя группы или её ID):

Задать права для остальных:

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

Удалить определённую запись ACL:

Удалить записи по умолчанию:

Удалить все записи ACL:

The factual accuracy of this article or section is disputed.

Просмотр ACL

Вывести права доступа ACL:

Примеры

Установить все права доступа к файлу abc для пользователя johnny :

Измененить права для пользователя johnny :

Удалить все записи ACL:

Вывод команды ls

Символ + (плюс) после прав доступа Unix в выводе команды ls -l указывает на использование ACL:

Права на выполнение личных файлов

Ниже описано, как процесс вроде веб-сервера может получить доступ к файлам в домашнем каталоге пользователя без ущерба для безопасности.

Будем считать что веб-сервер работает от пользователя http и получает доступ к домашнему каталогу /home/geoffrey пользователя geoffrey .

Санчала предоставим права на выполнение для пользователя http :

Поскольку пользователь http теперь имеет доступ к файлам в /home/geoffrey то безопаснее будет удалить доступ для остальных пользователей:

Проверим изменения с помощью getfacl :

Как видно из вывода, other больше не имеют никаких прав, но пользователь http всё ещё может обращаться к файлам.

Если необходимо будет выдать пользователю http права доступа на запись в определённые файлы/каталоги, выполните:

Источник

Acl linux что это

Рисунок 9.1, «Минимальный ACL: Сравнение записей ACL с битами доступа» и Рисунок 9.2, «Расширенный ACL: Сравнение записей ACL с битами доступа» соответствуют минимальному и расширенному ACL. На рисунках изображены три блока: левый показывает тип спецификации записей ACL, центральный отображает пример ACL, и правый блок соответствует битам доступа традиционной концепции привилегий (отображаемым, например, командой ls -l ). В обоих случаях привилегии класса владелец отображаются на запись ACL « владелец » . Привилегии класса другие отображаются на соответствующую запись ACL. Однако отображение прав доступа класса группа отличается для каждого из случаев.

Читайте также:  Opening windows in car wash

Рисунок 9.1. Минимальный ACL: Сравнение записей ACL с битами доступа

В случае минимального ACL — без маски — права доступа группы отражаются на запись ACL группа-владелец, как показывает Рисунок 9.1, «Минимальный ACL: Сравнение записей ACL с битами доступа». В случае расширенного ACL— с маской — права доступа группы отображаются на маску, Рисунок 9.2, «Расширенный ACL: Сравнение записей ACL с битами доступа».

Рисунок 9.2. Расширенный ACL: Сравнение записей ACL с битами доступа

Это отображение используется для упрощения взаимодействия с приложениями, избавляя от небходимости поддержки ACL приложением. Привилегии доступа, назначенные посредством битов доступа, задают верхний предел для всех « тонких настроек » , сделанных при помощи ACL. Изменение битов доступа отражается на ACL и наоборот.

9.4.2. Директория с ACL ¶

Вы можете получить доступ к ACL с помощью команд getfacl и setfacl . Использование этих команд показано в следующем примере.

Перед созданием директории используйте команду umask , чтобы задать биты доступа маскируемые при создании файлового объекта. Команда umask 027 устанавливает привилегии по умолчанию следующим образом: владелец получает полный доступ ( 0 ), группе запрещен доступ на запись ( 2 ), доступ остальным пользователям закрыт ( 7 ). В действительности umask маскирует соответствующие биты доступа или сбрасывает их. Подробности можно узнать на man странице umask .

mkdir mydir создает директорию mydir с привилегиями, установленными командой umask . С помощью ls -dl mydir можно определить правильность установки привилегий. Для данного примера вывод будет следующим:

Используя getfacl mydir , проверьте исходное состояние ACL. Будет отображена следующая информация:

Первые три строки вывода отображают имя, владельца и группу-владельца директории. Следующие три строки содержат три записи ACL: « владелец » , « группа-владелец » и « другие » . Фактически мы имеет дело с минимальным ACL и команда getfacl не дает дополнительной информации по сравнению с командой ls .

Измените ACL, разрешив доступ на чтение, запись и выполнение пользователю geeko и группе mascots командой:

Опция -m указывает setfacl изменить существующий ACL. Следующий за ней аргумент определяет записи ACL, которые будут изменены (можно указать несколько записей, разделяя из запятыми). Последняя часть определяет имя директории, к которой будут применены эти изменения. Используйте команду getfacl , чтобы узнать полученные ACL.

В дополнение к записям, созданным для пользователя geeko и группы mascots , была добавлена запись с маской. Эта запись была создана автоматически, таким образом, что все заданные права доступа будут применены. setfacl автоматически адаптирует существующие записи с масками к изменяемым битам. Это поведение можно изменить используя опцию -n . Маска определяет максимальные эффективные привилегии для класса « группа » , включая именованного пользователя, именованную группу и группу-владельца. Биты доступа класса « группа » , отображаемые командой ls , -dl mydir теперь соответствуют записи маска .

Первый столбец вывода теперь содержит дополнительно знак + , указывая на существование расширенных ACL для этого элемента.

Согласно выводу команды ls , маска включает в себя доступ на запись. Традиционно эти биты означали бы, что группа-владелец ( project3 ) также имеет право на запись в директорию mydir . Однако эффективные права доступа соответствуют сочетанию прав заданных для группы-владельца и маски — r-x в нашем примере (Таблица 9.2, «Маскировка привилегий доступа»). Поэтому в отношении эффективных привилегий группы-владельца, даже после добавления дополнительных записей ACL, ничего не изменилось.

Измените значение маски с помощью команд setfacl или chmod . Например используйте chmod g-w mydir . ls -dl mydir покажет:

getfacl mydir даст следующий вывод:

После сброса бита доступа на запись для группы командой chmod , вывода команды ls достаточно, чтобы увидеть, что биты маски изменились: доступ на запись снова есть только у владельца mydir . Вывод getfacl подтверждает это. Он включает в себя комментарий для всех записей, в которых биты доступа не соответствуют реальным привилегиям из-за применения маски. Оригинальные права могут быть восстановлены в любое время командой chmod g+w mydir .

9.4.3. Директория с ACL по умолчанию ¶

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

Читайте также:  Последняя прошивка mac os

9.4.3.1. Действия ACL по умолчанию ¶

Существует два пути передачи ACL по умолчанию файлам и поддиректориям:

Поддиректория наследует ACL родительской директории как свои ACL по умолчанию и обычные ACL.

Файл наследует ACL по умолчанию как свои ACL.

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

9.4.3.2. Применение ACL по умолчанию ¶

Следующие три примера показывают основные операции для директорий и ACL по умолчанию:

Добавить ACL по умолчанию существующей директории mydir :

Опция -d команды setfacl указывает setfacl выполнить изменения (опция -m ) для ACL по умолчанию.

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

getfacl возвращает как ACL, так и ACL по умолчанию. ACL по умолчанию соответствуют строкам, начинающимся с default . Несмотря на то, что Вы передали команде setfacl только запись ACL по умолчанию для группы mascots , setfacl автоматически скопировала все остальные записи из ACL, чтобы создать валидный ACL по умолчанию. ACL по умолчанию не оказывают моментального влияния на доступ к объекту. Они вступают в игру при создании новых объектов. Эти новые объекты наследуют привилегии только от ACL по умолчанию своей родительской директории.

В следующем примере используйте команду mkdir , чтобы создать в mydir поддиректорию, которая унаследует ACL по умолчанию.

Как и ожидалось, вновь созданная директория mysubdir получила права доступа из ACL по умолчанию родительской директории. ACL директории mysubdir является точным отражением ACL по умолчанию директории mydir . Поддиректория передаст эти права вложенным в нее объектам и т.д.

Используйте touch для создания файла в директории mydir , например, touch mydir/myfile . ls -l mydir/myfile покажет:

Вывод getfacl mydir/myfile :

Если ACL по умолчанию и umask не накладывают никаких ограничений, touch при создании новых файлов использует режим со значением 0666 , создавая файлы с доступом на чтение и запись для всех (Раздел 9.4.3.1, «Действия ACL по умолчанию»). Также это означает, что все права доступа, которые не содержит значение режим будут удалены из соответствующих записей ACL. Несмотря на то, что записи для группы не были удалены из ACL, значение маски было модифицировано для маскировки прав не заданных значением режим .

Эта модель необходима для правильного взаимодействия приложений (например, компиляторов) с ACL. Вы можете создавать файлы с ограниченным доступом и затем помечать их как исполняемые. Механизм mask гарантирует, что только корректные пользователи и группы смогут запускать их как им заблагорассудится.

9.4.4. Алгоритм проверки ACL ¶

Алгоритм проверки применяется перед тем, как любому процессу или приложению будет предоставлен доступ к защищенному ACL объекту файловой системы. Основное правило проверки заключается в том, что записи ACL проверяются в следующем порядке: владелец, именованный пользователь, группа-владелец или именованная группа, другие пользователи. Доступ предоставляется в соответствии с записью, которая более подходит процессу. Привилегии не накапливаются.

Все усложняется, если процесс принадлежит более чем к одной группе и потенциально соответствует нескольким групповым записям. В этом случае из множества выбирается произвольная запись с требуемыми привилегиями. Неважно, какая из записей приведет к результату « доступ разрешен » . Аналогично, если ни одна из групповых записей не содержит требуемых привилегий, случайно выбранная запись приведет к конечному результату « доступ запрещен » .

9.5. Поддержка ACL приложениями ¶

ACL могут быть использованы для реализации очень сложных моделей привилегий, которые соответствуют требованиям современных приложений. Традиционная система привилегий и ACL могут эффективно сочетаться. Основные файловые команды ( cp , mv , ls , и т.д.) поддерживают ACL, равно как Samba и Konqueror.

К сожалению множество редакторов и файловых менеджеров до сих пор не поддерживает ACL. Например, копирование файлов с помощью Emacs приводит к потере ACL. При изменении файлов в редакторе ACL иногда сохраняются, а иногда нет, в зависимости от того способа, которым редактор создает резервные копии. Если редактор записывает изменения в оригинальный файл, ACL сохраняются. Если измененное содержание сохраняется в новый файл, который впоследствии получает имя оригинального файла, и сам редактор не поддерживает ACL, они могут быть потеряны. За исключением архиватора star в настоящее время не существует программ резервного копирования, сохраняющих ACL.

9.6. Дополнительная информация ¶

За подробной информацией об ACL обращайтесь в справку по командам getfacl(1) , acl(5) и setfacl(1) .

Источник

Оцените статью