Я пытаюсь понять, как на самом деле работают ограниченные пользователи 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 ~]$
Если я изменю sudoers, чтобы выполнить переход на sysadm_r и sysadm_t, я ожидал получить разрешение на выполнение любых действий, но это не совсем то, что я получаю.
Я умею делать многое:
[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 ~]$
Но некоторые команды по-прежнему заблокированы, например postsuper из пакета 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 ~]$
Может кто-нибудь объяснить мне причину этого? Самое странное, что я не вижу никаких отклонений в /var/log/audit/audit.log для команды postsuper. Но это должно быть связано с SELINUX, потому что если я изменю пользователя обратно на unconfined_u, все будет работать.