Вот мое полное решение:
Сначала я визуально проверил Audit.log. Чтобы поймать правильные и только правильные вещи, я использовал audit2allow
для создания политики и правила принудительного использования типов.
grep mount /var/log/audit/audit.log | audit2allow -R -M mounts3fs
Я говорю о горе, поэтому я получаю только правильные вещи.
Это создало файл mounts3fs.pp и mounts3fs.te . Mounts3fs.te выглядит следующим образом :
policy_module(mounts3fs, 1.0) require { type file_t; type var_t; type mount_t; type cert_t; class dir { write remove_name add_name }; class file { create unlink link setattr }; } #============= mount_t ============== #!!!! The source type 'mount_t' can write to a 'dir' of the following types: # user_home_t, etc_runtime_t, var_run_t, mount_var_run_t, mount_tmp_t, user_home_dir_t, etc_t, nfs_t, tmpfs_t, tmp_t, var_t allow mount_t cert_t:dir { write remove_name add_name }; allow mount_t cert_t:file { create unlink }; allow mount_t file_t:dir { remove_name add_name }; allow mount_t file_t:file { unlink link setattr }; allow mount_t var_t:file link;
Чтобы установить политику, я запускаю это:
semodule -i mounts3fs.pp
Я обнаружил, что этого недостаточно для определенных операций, поэтому я создал дополнительную политику, например:
module s3fs 1.0; require { type file_t; type mount_t; class dir create; class file create; } #============= mount_t ============== #!!!! This avc is allowed in the current policy allow mount_t file_t:dir create; allow mount_t file_t:file create;
selinux
все еще может пойти прямо в ад.