Aqui está minha solução completa:
Primeiro, auditei visualmente o audit.log. Para capturar as coisas certas e apenas as coisas certas, usei audit2allow
para criar uma regra de imposição de política e tipo.
grep mount /var/log/audit/audit.log | audit2allow -R -M mounts3fs
Eu peço para montar, então eu só entendi as coisas certas.
Isso criou um arquivo mounts3fs.pp e mounts3fs.te . O mounts3fs.te se parece com isso:
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;
Para instalar a política, eu corro isto:
semodule -i mounts3fs.pp
Descobri que não era suficiente para determinadas operações, por isso criei uma política adicional como esta:
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
ainda pode ir direto para o inferno.