chroot

Robert Richard George 'reptile' Wal reptile w reptile.eu.org
Śro, 25 Lis 1998, 19:30:14 CET


On 98.11.25 Krzysztof G. Baranowski pressed the following keys:

> Raczej nie, ale to jeszcze nie koniec. Sposobow ucieczki z chroot jest
> wiele, np. ptrace(), iopl(), przez /proc, albo wykorzystujac fakt, ze 
> chroot() nie wywoluje cwd().

OK. ptrace() i cwd() rozumiem, iopl() wyjaśniłeś poniżej, a jak działa to z
/proc i jak chcesz go wykorzystać jak go nie ma?

> > Znaczy, czy programy w wykonywane jako root na Intelu to już jest
> > pełen supervisor-mode, 
> Nope. 
> 
> W Linuxie procesy w user-space chodza z CPL=3, a w kernel-space z
> CPL=0. Z poziomu userspace mozesz dobierac sie tylko do portow I/O i
> blokowac/wlaczac przerwania. Jednakze procesor x86 zezwala na dostep
> do portow I/O i blokowanie przerwan tylko i wylacznie procesowi,
> ktorego IOPL >= CPL. IOPL moze zmianiac tylko root poprzez syscalla
> iopl() -> 'man 2 iopl'.

W skrócie znaczy to tyle, że teoretycznie można napisać program, który jest
driverem do kontrolera IDE w userspace i jednocześnie ma zaimplementowaną
obsługę ext2fs i uzywać go sobie do woli w chroocie?

Zaczyna mnie ogarniać paranoja... Nie, nie tak. Moja paranoja zaczyna
znajdować potwierdzenie w rzeczywistości ;)

Ale idźmy dalej... Jak jest zrealizowane programowanie MMU? Czy to są
specjalne rozkazy niedostępne dla programów w userspace, czy też dostęp
do nich jest możliwy po wywołaniu odpowiedniego syscalla?

Cholera... Zaczyna mi się marzyć taki system, w którym root nie może zrobić
absolutnie wszystkiego. Na przykład jakiś proces ma sobie (będąc rootem,
czy luserem) prawa do otwierania niskich portów, dostępu do hardware. A
demon chodzący w chroocie traci prawo do create_module(), ptrace(), mount()
itp. I tak samo nie mają go już jego dzieci.  Init startując ma komplet
praw, a następnie dowolny proces może sobie te prawa odebrać i na tym
koniec. Żeby je odzyskać trzeba wystartować z powrotem z procesu, który ma
te prawa. Albo proces roota może nadawać innym procesom prawa tylko wtedy,
kiedy dysponuje prawem do zmiany praw innym.

Czy jest coś takiego gdzieś zaimplementowane, to znaczy, czy jest system, w
którym procesowi roota można dożywotnio odebrać jakieś prawa?

Gad

-- 
------------------<Gadzinka>--<http://reptile.eu.org/>--<Cyber Service>--
--[Pomysł ,,Europy bez granic'' nie jest nowy, już Stalin na to wpadł.]--



Więcej informacji o liście dyskusyjnej pld-devel-pl