Я немного поэкспериментировал и заметил кое-что странное: установка бита setuid для копии bash, расположенной в, /usr/bin/bash-test
казалось, не имела никакого эффекта. Когда я запускал экземпляр bash-test
, мой домашний каталог не был установлен, /root
и когда я запускал whoami
команду bash-test
, мое имя пользователя не сообщалось как существующее root
, что свидетельствует о том, что bash-test
он не был запущен от имени пользователя root. Однако, если я установил бит setuid whoami
, я, как и ожидалось, был зарегистрирован как пользователь root в любой оболочке.
Я также попытался установить бит setuid /usr/bin/bash
и наблюдал то же самое.
Почему bash не работает как root, когда я установил на него бит setuid? Может ли selinux иметь к этому какое-то отношение?
Ответы:
Объяснение немного раздражает: причина в bash.
strace
наш друг (должен быть сам SUID root, чтобы это работало):bash обнаруживает, что был запущен корневой SUID (UID! = EUID), и использует свое корневое питание, чтобы сбросить его, сбрасывая EUID в UID. А потом даже FSUID, просто чтобы быть уверенным ...
В конце концов, нет шансов. Вы должны начать bash с UID root (т.е. sudo).
Редактировать 1
Страница руководства говорит это:
Но это не работает для меня.
-p
даже не упоминается среди вариантов запуска. Я также пытался--posix
; тоже не работалисточник
В любом случае, корневая программа SUID не запускается со средой root (
$HOME
конфигурация для оболочки и т. Д.), Она запускается с полномочиями root (т. Е. Она может удалить любой файл, изменить любые разрешения и т. Д.).источник