Já experimentou a solução policycoreutils-sandbox? Isso é exatamente o que você quer. Por exemplo, se você deseja executar o Firefox em um ambiente restrito do SELinux (infelizmente, mas por uma boa razão, o "sandbox" é suportado apenas nas distribuições Red Hat):
/usr/bin/sandbox -X -t sandbox_web_t firefox
O SELinux é separado de outros sistemas MAC baseados em LSM por sua flexibilidade e personalização.
Isso permite que você faça o que quiser, mesmo que isso não faça sentido. Um pré-requisito é que você esteja ciente, pelo menos, dos princípios e conceitos básicos.
Há algumas coisas que precisam ser resolvidas aqui:
- o identificador de segurança de identidade do SELinux unconfined_u deve ser associado ao identificador de segurança de função user_r SELinux se você deseja que a combinação "unconfined_u: user_r" em um contexto de segurança seja válido.
Isso pode ser feito com:
semanage user -m -L s0 -r s0-s0:c0.c1023 -R "unconfined_r system_r user_r" -P user unconfined_u
- O identificador de segurança da função unconfined_r SELinux deve ter permissão para ser manualmente (via sudo neste caso) alterado para o user_r SELinux identificador de segurança de função.
Isso pode ser feito criando um módulo de política simples:
cat > myuser.te <<EOF
module myuser 1.0;
require { role unconfined_r, user_r; }
allow unconfined_r user_r;
EOF
checkmodule -M -m myuser.te -o myuser.mod
semodule_package -o myuser.pp -m myuser.mod
sudo semodule -i myuser.pp
-
O Sudo precisa ser informado sobre o identificador de segurança do tipo SELinux deve usar em conjunto com a segurança da função do user_r SELinux especificada identificador
sudo -r user_r -t user_t id -Z
Eu acredito que eu toquei em toda a consideração, mas eu poderia ter esquecido alguns e meu exemplo pode ter erro de digitação. Consulte as páginas de manual para os comandos que mencionei.