SELinux: запуск пользовательского двоичного файла оболочки из /etc/passwd

SELinux: запуск пользовательского двоичного файла оболочки из /etc/passwd

----- Проблема --------

У меня на системе запущен CentOS 7.6. Я хочу вызвать пользовательскую оболочку вместо стандартной в файле /etc/passwd.

У меня включен SELinux, и по какой-то причине домен sshd_t не переносится в новый пользовательский домен, который удерживается моей пользовательской оболочкой.

Что-то вроде этого:

В /etc/passwd:

root:x:0:0:root:/root:/bin/myshell

Переход домена SELinux:

myshell.fc

/bin/myshell                             gen_context(system_u:object_r:myshell_exec_t,s0)

myshell.te

role unconfined_r types myshell_t;
role_transition unconfined_r myshell_t system_r;
domtrans_pattern(unconfined_t, myshell_exec_t, myshell_t)

Пользователь по умолчанию:неконфиденциальный_у:неконфиденциальный_р:неконфиденциальный_т.

У меня также есть переход роли с unconfined_r на system_r.

---- Проблема ------

По какой-то причине sshd_t не переходит в домен myshell_t. Пользователь root.

Вот сообщение журнала изменения роли:

type=USER_ROLE_CHANGE msg=audit(1559079004.637:339116): pid=24478 uid=0 auid=0 ses=823 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='pam: default-context=system_u:unconfined_r:unconfined_t:s0 selected-context=system_u:unconfined_r:unconfined_t:s0 exe="/usr/sbin/sshd" hostname=X.X.X.X addr=X.X.X.X terminal=ssh res=success'

type=AVC msg=audit(1559067681.085:327703): avc:  granted  { execute } for  pid=17593 comm="sshd" name="myshell"  scontext=system_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:myshell_exec_t:s0 tclass=file

Он выполняет двоичный файл, но переход не происходит. Возможно, потому что роль другая, но у меня есть переход ролей -- не уверен, почему он не работает, хотя.

решение1

Здесь есть два аспекта, я остановлюсь на первом аспекте:

  1. метка /bin/myshell тип shell_exec_t: echo '(filecon "/usr/bin/myshell" файл (system_u object_r shell_exec_t ((s0)(s0))))' > myshell.cil && semodule -i myshell.cil
  2. создайте и свяжите пользователя joe с существующим ограниченным доменом оболочки user_t: useradd -Z user_u joe

ssh joe@localhost 'id -Z'

Создание новых ограниченных пользователей немного сложнее, но суть в том, что программы входа, такие как sshd, login и т. д., используют pam_selinux для определения контекста для запуска оболочки входа, и они переходят вручную, а не автоматически. Файлы в /etc/selinux/TYPE/contexts/users/ используются для этого среди других файлов в /etc/selinux/TYPE/contexts

Связанный контент