selinux - sysadm_r을 사용하여 stuff_u가 postsuper를 실행할 수 없는 이유는 무엇입니까?

selinux - sysadm_r을 사용하여 stuff_u가 postsuper를 실행할 수 없는 이유는 무엇입니까?

나는 selinux에 제한된 사용자가 실제로 어떻게 작동하는지 이해하려고 노력하고 있지만 여전히 이해할 수 없는 몇 가지 동작이 있습니다. 에 따르면빨간 모자

SELinux 사용자 기능

stuff_u 사용자는 sudo를 실행할 수 있어야 하지만 su는 실행할 수 없습니다. 그래서 사용자를 만들었습니다.어떤 사용자그리고 이를 Staff_u에 매핑했습니다.

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

이제 sudo를 사용하여 전체 권한을 추가했지만 sudoers에 역할/유형을 설정하지 않으면 예상대로 많은 작업을 수행할 수 없습니다.

[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 ~]$ 

sysadm_r 및 sysadm_t로 전환하기 위해 sudoer를 변경하면 기본적으로 무엇이든 할 수 있는 권한을 얻을 것으로 기대했지만 정확히 내가 얻는 권한은 아닙니다.

나는 많은 일을 할 수 있습니다:

[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 ~]$ 


그러나 일부 명령(예: postfix 패키지의 postsuper)은 여전히 ​​차단됩니다.

[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 ~]$ 

누구든지 그 이유를 나에게 설명해 주시겠습니까? 가장 이상한 점은 /var/log/audit/audit.log에서 postsuper 명령에 대한 거부가 표시되지 않는다는 것입니다. 하지만 사용자를 다시 unconfined_u로 변경하면 모든 것이 작동하기 때문에 SELINUX와 관련이 있어야 합니다.

관련 정보