Продолжаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в блоге Доминика Грифта (Dominick Grift).
До выхода Fedora версии 9 пользователям, имеющим доступ к ролям, для смены домена (Domain Transition) нужно было использовать команду
newrole
. Команду можно установить с пакетом policycoreutils-newrole. Например, пользователь запускал: newrole -r
, и получал приглашение на ввод его пароля. После чего команда newrole
проверяла, что у пользователя имеются все необходимые права доступа для осуществления запрашиваемого доменного перехода, и разрешала или запрещала его.При переходе в привилегированный пользовательский домен и желании выполнить какое-то привилегированное задание пользователь выполнял команду
su
, чтобы выполнить требования дискреционного контроля доступа (Discretionary Access Control). Команда su
запрашивает пароль пользователя root.В строгом окружении, чтобы получить права привилегированного пользователя, придется запустить две программы и ввести два разных пароля. При таком подходе для запуска любого привилегированного задания пользователю потребуется доступ к паролю пользователя root.
Такому пользователю для запуска системной службы имеется другая команда. Команда
run_init
осуществляет переход к домену сценариев инициализации (Init Script), в котором, в свою очередь, в соответствующем ей домене запускается системная служба. Эта программа также запрашивает пароль.Таким образом получается много команд и паролей всего лишь, например, для перезапуска Apache.
В Fedora версии 9 для поддержки доменных переходов модифицировали команду
sudo
. Рекомендуется вместо команд su
и newrole
использовать sudo
.Два основных преимущества команды
sudo
заключаются в том, что данная команда позволяет за одно действие сменить идентификатор (uid) пользователя Linux и сменить домен SElinux, а также не требуется вводить пароль пользователя root при условии, что ваш пользователь добавлен в конфигурационный файл /etc/sudoers
.Целевой домен может быть указан опцией
-t
, целевая роль может быт указана опцией -r
. Также в файле конфигурации /etc/sudoers
можно настроить автоматическое переключение на определенные роль и домен по умолчанию.Пример:
Linux пользователь joe входит в систему как SELinux пользователь joe_u. SELinux пользователь joe_u имеет доступ к роли joe_r, а также к ролям webadm_r и system_r. Роль joe_r сопоставлена домену joe_t, который обладает всеми необходимыми полномочиями для входа в систему ограниченного пользователя. Пользовательский домен joe_t в соответствии с политикой имеет доступ к ролям system_r и webadm_r. В файле
/etc/sudoers
о пользователе joe имеется следующая запись:joe ALL=(ALL) TYPE=webadm_t ROLE=webadm_r ALL
Эта запись разрешает при запуске команды
sudo
пользователем joe осуществлять автоматическую смену значений параметров его контекста SELinux, соответственно роли на webadm_r и типа на webadm_t.При входе пользователя joe в систему он оказывается в домене joe_t. Когда у Джо появляется необходимость запустить службу Apache он просто запускает команду:
sudo service httpd start
Команда
sudo
изменяет идентификатор (uid) Джо на 0 и автоматически осуществляет смену домена и роли Джо на определенные роль и домен - webadm_r и webadm_t.Джо также имеет доступ к роли system_r, необходимой для смены пользовательского домена на домен сценария инициализации (Init Script), который запускает httpd в правильном домене. Команда
run_init
больше не требуется.Если Джо доступно несколько ролей, он может переопределить роль и домен, указанные в конфигурационном файле
sudo
, указав опции -r
и -t
с требуемыми значениями роли и домена в качестве параметров.Вывод:
Отдавайте предпочтение использованию команды
sudo
вместо команд su
и newrole
.Отдавайте предпочтение предоставлению доступа к роли system_r вместо использования команды
run_init
.Справка: man su, man sudo, man newrole, man run_init
Комментариев нет:
Отправить комментарий