在部分操作系统中,每个文件可以关联任意的文件扩展属性(extended file attributes)。目前 Emacs 支持查询和设置两类特定的文件扩展属性:访问控制列表(ACL)和 SELinux 上下文。在部分系统上,这些扩展属性用于实现比前几节所述的基础 Unix 风格权限更精细的文件访问控制。
关于 ACL 和 SELinux 的详细说明超出了本手册范围。就本节用途而言,每个文件可以关联一个ACL(在基于 ACL 的文件控制系统中描述其权限属性)和/或一个SELinux 上下文(在 SELinux 系统中描述其安全属性)。
该函数返回文件 filename 的 ACL。ACL 在 Lisp 中的具体表示形式未明确指定(未来 Emacs 版本可能发生变化),但其格式与 set-file-acl 接收的 acl 参数一致(see 修改文件名与属性)。
底层 ACL 实现与平台相关:在 GNU/Linux 和 BSD 系统上,Emacs 使用 POSIX ACL 接口;在 MS-Windows 上,Emacs 通过原生文件安全 API 模拟 POSIX ACL 接口。
若系统不支持 ACL 或文件不存在,返回值为 nil。
该函数返回文件 filename 的 SELinux 上下文,格式为列表 (user role type range)。列表元素依次为上下文的用户、角色、类型和范围,均为 Lisp 字符串;具体含义可参考 SELinux 文档。返回值格式与 set-file-selinux-context 接收的 context 参数一致(see 修改文件名与属性)。
若系统不支持 SELinux 或文件不存在,返回值为 (nil nil nil nil)。
该函数返回文件 filename 中 Emacs 可识别的扩展属性关联列表(alist)。目前该函数可一次性获取 ACL 和 SELinux 上下文;之后可调用 set-file-extended-attributes,将返回的关联列表作为第二个参数,把相同的文件访问属性应用到另一个文件(see 修改文件名与属性)。
其中一个元素为 (acl . acl),acl 格式与 file-acl 返回值一致。
另一个元素为 (selinux-context . context),context 为 SELinux 上下文,格式与 file-selinux-context 返回值一致。