Trochę eksperymentowałem i zauważyłem coś dziwnego: ustawienie setuidu na kopii basha znajdującego się w miejscu /usr/bin/bash-test
wydawało się nie mieć żadnego efektu. Kiedy uruchomiłem instancję bash-test
, mój katalog domowy nie był ustawiony na, /root
a kiedy uruchomiłem whoami
polecenie z bash-test
, moja nazwa użytkownika nie została zgłoszona jako root
, co sugeruje, że bash-test
nie działała jako root. Jednak jeśli włączę bit setuid whoami
, zgłoszono mnie jako root w dowolnej powłoce, zgodnie z oczekiwaniami.
Próbowałem również ustawić bit setuida /usr/bin/bash
i obserwowałem to samo zachowanie.
Dlaczego bash nie działa jako root, kiedy ustawiam na nim bit setuid? Czy selinux może mieć z tym coś wspólnego?
Odpowiedzi:
Wyjaśnienie jest trochę denerwujące: sam bash jest tego powodem.
strace
jest naszym przyjacielem (musi to być sam root SUID, aby to działało):bash wykrywa, że został uruchomiony root root SUID (UID! = EUID) i wykorzystuje swoją moc root do odrzucenia tej mocy, resetując EUID do UID. A później nawet FSUID, dla pewności ...:
W końcu: bez szans. Musisz rozpocząć bash z rootem UID (tj. Sudo).
Edytuj 1
Strona podręcznika mówi:
Ale to mi nie działa.
-p
nie jest nawet wymieniany wśród opcji uruchamiania. Próbowałem też--posix
; też nie działał.źródło
W każdym razie program główny SUID nie działa w środowisku roota (
$HOME
konfiguracja powłoki, cokolwiek), działa z uprawnieniami roota (tzn. Może usunąć dowolny plik, zmienić dowolne uprawnienia itp.).źródło