26.6.5 Расширенные атрибуты файлов

В некоторых операционных системах к каждому файлу могут быть привязаны произвольные расширенные атрибуты файлов. В настоящее время Emacs поддерживает запрос и установку двух конкретных наборов расширенных атрибутов файлов: списков контроля доступа (ACL) и контекстов SELinux. Эти расширенные атрибуты файлов используются в некоторых системах для применения более сложных средств контроля доступа к файлам, чем базовые права доступа в стиле Unix, обсуждаемые в предыдущих разделах.

Подробное объяснение ACL и SELinux выходит за рамки данного руководства. Для наших целей каждый файл может быть связан с ACL, который определяет его свойства в системе контроля файлов на основе ACL, и/или с контекстом SELinux, который определяет его свойства в системе SELinux.

Функция: file-acl filename

Эта функция возвращает ACL для файла filename. Точное представление ACL на Lisp не указано (и может измениться в будущих версиях Emacs), но оно совпадает с тем, что принимает set-file-acl для своего аргумента acl (см. Изменение имен и атрибутов файлов).

Базовая реализация ACL зависит от платформы; на GNU/Linux и BSD Emacs использует интерфейс POSIX ACL, в то время как в MS-Windows Emacs эмулирует интерфейс POSIX ACL с использованием нативных API безопасности файлов.

Если ACL не поддерживаются или файл не существует, возвращаемое значение равно nil.

Функция: file-selinux-context filename

Эта функция возвращает контекст SELinux файла filename в виде списка вида (user role type range). Элементы списка — это пользователь, роль, тип и диапазон контекста соответственно, в виде строк Lisp; см. документацию SELinux для получения подробной информации о том, что они на самом деле означают. Возвращаемое значение имеет ту же форму, что и то, что принимает set-file-selinux-context для своего аргумента context (см. Изменение имен и атрибутов файлов).

Если SELinux не поддерживается или файл не существует, возвращаемое значение равно (nil nil nil nil).

Функция: file-extended-attributes filename

Эта функция возвращает alist расширенных атрибутов файла filename, распознаваемых Emacs. В настоящее время она служит удобным способом получения как ACL, так и контекста SELinux; затем вы можете вызвать функцию set-file-extended-attributes, используя возвращенный alist в качестве второго аргумента, чтобы применить те же атрибуты доступа к файлу к другому файлу (см. Изменение имен и атрибутов файлов).

Одним из элементов является (acl . acl), где acl имеет ту же форму, что и возвращает file-acl.

Другой элемент — (selinux-context . context), где context — это контекст SELinux, в той же форме, что и возвращает file-selinux-context.