Мне нужно уточнить / подтвердить / уточнить различные роли, которые DAC, ACL и MAC играют в безопасности файлов Linux.
После некоторого изучения документации, это мое понимание стека:
- SELinux должен разрешить вам доступ к объекту файла.
- Если списки управления доступом к файлу (например,
setfacl
,getfacl
для монтирования ACL) явно разрешает / запрещает доступ к объекту, то дальнейшая обработка не требуется. - В противном случае это зависит от прав доступа к файлу (модель ЦАП rwxrwxrwx).
Я что-то пропустил? Есть ситуации, когда это не так?
linux
permissions
selinux
acl
Бельмин Фернандес
источник
источник
Ответы:
Когда процесс выполняет операцию с файлом, ядро Linux выполняет проверку в следующем порядке:
Дискреционное управление доступом (DAC) или пользовательское управление доступом. Это включает как классические проверки прав в стиле UNIX, так и списки контроля доступа POSIX (ACL) . Классические проверки UNIX сравнивают текущие UID и GID процесса с UID и GID файла, к которому осуществляется доступ, с учетом того, какие режимы были установлены (Read / Write / eXecute). Список контроля доступа расширяет классические проверки UNIX, чтобы предоставить больше возможностей для контроля разрешений.
Обязательный контроль доступа (MAC) или контроль доступа на основе политик. Это реализовано с помощью Linux Security Modules (LSM), которые больше не являются реальными модулями (раньше они были, но они были отброшены). Они включают дополнительные проверки, основанные на других моделях, кроме классических проверок безопасности в стиле UNIX. Все эти модели основаны на политике, описывающей, какие виды деятельности разрешены для какого процесса и в каком контексте.
Вот пример доступа к inode (который включает в себя доступ к файлам) для подкрепления моего ответа ссылками на онлайновую перекрестную ссылку Linux . «
function_name
(Имя файла: строка)» приведены для версии ядра Linux 3.14.Функция
inode_permission
( fs / namei.c: 449 ) сначала проверяет разрешение на чтение для самой файловой системы (sb_permission
в fs / namei.c: 425 ), затем вызывает__inode_permission
( fs / namei.c: 394 ) для проверки на чтение / запись / выполнение разрешения и POSIX ACL для inode вdo_inode_permission
( fs / namei.c: 368 ) (DAC), а затем связанные с LSM разрешения (MAC) вsecurity_inode_permission
( security / security.c: 550 ).Было только одно исключение из этого порядка (DAC, затем MAC): это было для проверок mmap. Но это было исправлено в версии ядра Linux 3.15 ( соответствующий коммит ).
источник
DAC
==Discretionary Access Control
, http://en.wikipedia.org/wiki/Discretionary_access_controlMAC
==Mandatory Access Control
, http://en.wikipedia.org/wiki/Mandatory_access_controlACL
==Access Control List
, http://en.wikipedia.org/wiki/Access_control_listВ
ACL
определяет элементы управления , которые должны применяться по методу контроля,DAC
илиMAC
.MAC
является явным, централизованно управляемым и не позволяет пользователям предоставлять полномочия объекту, если у них нет явных разрешений на это, тогда какDAC
позволяет пользователям предоставлять другим пользователям доступ к объектам, к которым у них есть доступ.MAC
ACL
Сначала к запросу всегда будут применяться s, и если доступ запрещен, обработка останавливается. Если доступ разрешен, тоDAC
ACL
применяются s, и снова, если доступ запрещен, обработка останавливается. Только если доступ предоставлен обоимиMAC
иDAC
ACL
s, пользователь может получить доступ к объекту, который он запрашивал.SELinux
являетсяMAC
реализацией для Linux (есть и другие), в то время как традиционныеrwx
права доступа к файлам, в сочетании с владельцем и группой, образуют полноеDAC
ACL
.SELinux
«Политика», по существуMAC
ACL
.источник
setfacl
)?setacl
расширяет базовые файловые системы,ACL
позволяя назначать более одного пользователя или группыACL
для файлов и каталогов. Это такжеDAC
реализация, и поэтому применяется послеSELinux
MAC
ACL
s.setfacl
списки ACL переопределяют традиционные разрешения. Это правда в каждом случае?setacl
/setfacl
ACL
s переопределит традиционное «простое»ACL
в файле.setfacl
относится к ответу.Извините, что придумаю, но я думаю, что некоторые ответы здесь могут быть неверными. Непосредственно из http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.html Fedora :
источник