Я пытаюсь понять, как на самом деле работают пользователи, ограниченные 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
Соответствие записей по умолчанию для некоторого пользователя на тестовом сервере:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="ЦВЕТА ОТОБРАЖЕНИЯ ИМЯ ХОСТА HISTSIZE KDEDIR LS_COLORS", env_keep+="ПОЧТА PS1 PS2 QTDIR ИМЯ ПОЛЬЗОВАТЕЛЯ ЯЗЫК 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
Пользователь someuser может запускать на тестовом сервере следующие команды:
(ВСЕ) НЕПАРОЛЬ: ВСЕ
[someuser@testserver ~]$ sudo ls -la /var/log/audit/audit.log
ls: невозможно получить доступ к '/var/log/audit/audit.log': разрешение отклонено
[someuser@testserver ~]$ sudo ausearch -m avc -ts последние
Ошибка при открытии файла конфигурации (отказано в доступе)
ПРИМЕЧАНИЕ. Использование встроенных журналов: /var/log/audit/audit.log
Ошибка при открытии /var/log/audit/audit.log (отказано в доступе)
[someuser@testserver ~]$
Если я изменю sudoers, чтобы выполнить переход к sysadm_r и sysadm_t, я ожидал получить разрешение делать что угодно, но это не совсем то, что я получаю.
Я могу многое:
[someuser@testserver ~]$ sudo -l
Соответствие записей по умолчанию для некоторого пользователя на тестовом сервере:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="ЦВЕТА ОТОБРАЖЕНИЯ ИМЯ ХОСТА HISTSIZE KDEDIR LS_COLORS", env_keep+="ПОЧТА PS1 PS2 QTDIR ИМЯ ПОЛЬЗОВАТЕЛЯ ЯЗЫК 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
Пользователь someuser может запускать на тестовом сервере следующие команды:
(ВСЕ) ROLE=sysadm_r TYPE=sysadm_t NOPASSWD: ВСЕ
[someuser@testserver ~]$ sudo ausearch -m avc -ts последние | туалет -л
66
[someuser@testserver ~]$ sudo ls -la /var/log/audit/audit.log
-rw-------. 1 корень root 1996980 30 июля 12:55 /var/log/audit/audit.log
[someuser@testserver ~]$ sudo cat /var/log/audit/audit.log | туалет -л
8172
[someuser@testserver ~]$
Но некоторые команды все равно блокируются, например postsuper из пакета postfix.
[someuser@testserver ~]$ sudo postsuper
sesh: невозможно выполнить /sbin/postsuper: разрешение отклонено
[someuser@testserver ~]$ файл /sbin/postsuper
/sbin/postsuper: невозможно открыть `/sbin/postsuper' (отказано в доступе)
[someuser@testserver ~]$ файл sudo /sbin/postsuper
/sbin/postsuper: общий объект ELF 64-бит LSB, x86-64, версия 1 (SYSV), динамически связанный, интерпретатор /lib64/ld-linux-x86-64.so.2, для GNU/Linux 3.2.0, BuildID[sha1]=aa0157870508c475195fe5fb1dafe5a9b3898a61, лишен
[someuser@testserver ~]$
Кто-нибудь может объяснить мне причину этого? самое странное, что я не вижу никакого отказа в /var/log/audit/audit.log для команды postsuper. Но это должно быть связано с SELINUX, потому что, если я верну пользователя на unconfined_u, все будет работать.