selinux - por que stuff_u com sysadm_r não pode executar o postsuper?

selinux - por que stuff_u com sysadm_r não pode executar o postsuper?

Estou tentando entender como realmente funcionam os usuários confinados do Selinux, mas existem alguns comportamentos que ainda não consigo entender. De acordo comchapéu vermelho

Capacidades do usuário SELinux

Os usuários do stuff_u devem ser capazes de executar o sudo, mas não o su. Então eu criei o usuárioalgum usuárioe mapeei para staff_u

[someuser@testserver ~]$ id -Z
staff_u:staff_r:staff_t:s0-s0:c0.c1023

Agora, se eu adicionar permissões completas usando o sudo, mas não definir a função/tipo nos sudoers, não poderei fazer muita coisa (conforme esperado).

[someuser@testserver ~]$ sudo -l
Matching Defaults entries for someuser on testserver:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User someuser may run the following commands on testserver:
    (ALL) NOPASSWD: ALL

[someuser@testserver ~]$ sudo ls -la /var/log/audit/audit.log 
ls: cannot access '/var/log/audit/audit.log': Permission denied

[someuser@testserver ~]$ sudo ausearch -m avc -ts recent
Error opening config file (Permission denied)
NOTE - using built-in logs: /var/log/audit/audit.log
Error opening /var/log/audit/audit.log (Permission denied)
[someuser@testserver ~]$ 

Se eu alterar os sudoers para fazer a transição para sysadm_r e sysadm_t, esperava obter basicamente permissão para fazer qualquer coisa, mas não é exatamente o que estou conseguindo.

Posso fazer muitas coisas:

[someuser@testserver ~]$ sudo -l
Matching Defaults entries for someuser on testserver:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User someuser may run the following commands on testserver:
    (ALL) ROLE=sysadm_r TYPE=sysadm_t NOPASSWD: ALL
[someuser@testserver ~]$ sudo ausearch -m avc -ts recent | wc -l
66
[someuser@testserver ~]$ sudo ls -la /var/log/audit/audit.log 
-rw-------. 1 root root 1996980 Jul 30 12:55 /var/log/audit/audit.log
[someuser@testserver ~]$ sudo cat /var/log/audit/audit.log  | wc -l
8172
[someuser@testserver ~]$ 


Mas alguns comandos ainda estão bloqueados, por exemplo postsuper do pacote postfix.

[someuser@testserver ~]$ sudo postsuper
sesh: unable to execute /sbin/postsuper: Permission denied
[someuser@testserver ~]$ file /sbin/postsuper
/sbin/postsuper: cannot open `/sbin/postsuper' (Permission denied)
[someuser@testserver ~]$ sudo file /sbin/postsuper
/sbin/postsuper: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=aa0157870508c475195fe5fb1dafe5a9b3898a61, stripped
[someuser@testserver ~]$ 

Alguém pode me explicar o motivo disso? o mais estranho é que não vejo nenhuma negação em /var/log/audit/audit.log para o comando postsuper. Mas deve estar relacionado ao SELINUX porque se eu mudar o usuário de volta para unconfined_u tudo funciona.

informação relacionada