如何挂载ecryptfs并保留底层文件的单独SELinux标签?

如何挂载ecryptfs并保留底层文件的单独SELinux标签?

我正在尝试在使用 SELinux 的系统(例如 Cent-OS)上挂载 ecryptfs,并且我想保留所有单个底层文件的安全标签。使用mount -o命令我可以设置所有文件的安全标签,例如

mount -t ecryptfs /var/lib/mysql /var/lib/mysql -o context="system_u:object_r:mysqld_db_t:s0" 

这不是我想要的。据我所知,ecryptfs支持扩展属性,并且诸如ecryptfs_setxattr和 等函数都定义在ecryptfs内核模块的ecryptfs_getxattr文件中。inode.c此外,从man mount选项fscontext看来,这正是我想要的:

fscontext= 选项适用于所有文件系统,无论其 xattr 支持如何。 fscontext 选项将总体文件系统标签设置为特定的安全上下文。该文件系统标签与文件上的各个标签是分开的。它代表整个文件系统进行某些类型的权限检查,例如在安装或文件创建期间。单个文件标签仍然从文件本身的 xattr 中获取。除了为各个文件提供相同的标签之外, context 选项实际上还设置 fscontext 提供的聚合上下文。

还是下面的命令

mount -t ecryptfs /var/lib/mysql /var/lib/mysql -o fscontext="system_u:object_r:mysqld_db_t:s0"

将所有文件的 SELinux 标签更改为,即使是具有原始标签的 system_u:object_r:mysqld_db_t:s0文件。/var/lib/mysql/mysql.socksystem_u:object_r:mysqld_var_run_t:so

我的问题:

1) 如何将 ecryptfs 挂载到目录并保留每个文件的安全标签(即 SELinux 标签)?

mount -o fscontext2)为什么ecryptfs不能像它想象的那样工作?

笔记:我使用 mysql 目录作为示例,我能够向 SELinux 添加策略模块,并在 ecryptfs 安装在顶部时使 mysqld 工作。在这里,我要求一个通用的解决方案,使 ecryptfs 对 SELinux 透明。

相关内容