На компьютере с 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 (или что - нибудь еще)?
