На компьютере с Fedora 18 у меня есть следующий контекст SELinux как обычный пользователь, созданный во время установки:
$ sestatus
SELinux status: enabled
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
а также
$ id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Я хочу запустить программу с ограниченной ролью selinux user_r
, вместо моего текущего unconfined_r
, поэтому я создаю нового пользователя с ограниченным пользователем SELinux user_r
:
# useradd -MN -Z user_u johndoe
# echo 'fubar' | passwd johndoe --stdin
Теперь я открываю новый tty и захожу как johndoe
используя agetty
. Он жалуется, что /home/johndoe
не существует, но, по сути, он регистрирует меня. Контекст SELinux:
$ id -Z
user_u:user_r:user_t:s0
user_u:user_r:user_t
идеально подходит и то, что я хочу. Но я хотел бы добиться этого в сценарии, который уже запущен как unconfined_u
а не как новый логин. Я пытался с sudo
:
Если я использую sudo -u
, я получаю:
$ sudo -u johndoe id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Это означает, что пользователь SELinux не меняется.
Я также попробовал:
$ sudo -r user_r -u johndoe id -Z
sudo: unconfined_u:user_r:user_t:s0-s0:c0.c1023 is not a valid context
sudo: unable to execute /bin/id: Invalid argument
Так что там тоже не повезло.
Так как я могу перейти от unconfined_r
роли в user_r
используя sudo
или su
(или что - нибудь еще)?