Продолжаю выкладывать перевод цикла статей по использованию 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
Комментариев нет:
Отправить комментарий