[linux-l] Re: /proc & Co.

olafBuddenhagen at gmx.net olafBuddenhagen at gmx.net
Mo Okt 23 19:00:40 CEST 2006


Hallo,

On Mon, Oct 23, 2006 at 11:56:19AM +1000, Peter Ross wrote:
> On Sun, 22 Oct 2006, olafBuddenhagen at gmx.net wrote:

> Was unter FreeBSD mit jails, Securelevels und chflags etc. passiert,
> setzt sauber auf die grundlegenden Zugriffsmechanismen auf, erweitert
> sie mit wenigen Eintrittspunkten (Die Einfuehrung von jail z.B.
> bedurfte nur einiger hundert Zeilen Quellcode-Aenderungen)
> 
> Dagegen basteln Linuxianer mit SELinux und App Armor rum, dabei
> muessen Unmengen von Policies und Rules immer wieder an Applikationen
> und Beduerfnisse angepasst werden. Es erinnert mich immer wieder an
> die Flickschusterei unter Windows, ein System abzudichten.

Ansichtssache. SELinux & Co. hat den Vorteil, dass es mit vorgegebenen
Regeln des Distributors weitgehend unbemerkt im Hintergrund werkelt,
während Jails ein völlig neues (und ziemlich umständliches) Konzept
sind. Hat alles seine Vor- und Nachteile.

Flickschusterei ist beides -- der Versuch, durch nachträglich
eingeflickte Zusatzmechanismen die grundlegenden Probleme zu umgehen.

> > > sysctl ist ein Eintrittspunkt fuer _alle_ Zugriffe auf das, was Du
> > > nun unter /proc hast. Hier kannst Du erstmal sagen, "wenn Prozess
> > > im Jail, dann Zugriff verweigert", und schon hast Du erst einmal
> > > ein sehr sicheres System, mit nur einer Zeile Programmcode im
> > > Kernel.. und davon ausgehend, kannst Du nach hinreichender
> > > Ueberlegung vielleicht das Tuerchen hier und da ein Stueckchen
> > > oeffnen. 
> > 
> > Sehe nicht wieso das bei Dateisystem-basierten Schnittstellen anders
> > sein sollte. Die Zeile steht nur eben wo anders.
> 
> In welchem Modul an welcher Stelle kannst Du sie dann plazieren?

Ich kenne den internen Aufbau von Linux nicht. aber irgendwo wird es
wohl eine Stelle geben, wo open()-Aufrufe die sich auf /proc bzw. /sys
eziehen, an den entsprechenden Handler weitergegeben werden. Dort kann
man dann genauso gut ein "if jail then ätsch" einbauen.

> > Zum einen sind solche Schnittstellen generell meist ziemlich
> > intuitiv und leicht erlernbar. Sie bauen halt auf
> > Dateisystem-Konzepten auf, die jedem UNIX-Nutzer hinlänglich
> > vertraut sind. Man muss nur noch wissen, wie die Daten in der
> > Hierarchie abgelgt sind; man muss sich nicht um Spezifika von
> > Funktionsaufrufen kümmern.
> 
> echo 1 > /proc/dies/ist/der/pfad oder sysctl dies.ist.der.pfad=1

Implementiert also neben dem Dateisystem eine zweite equivalente
Baumstruktur... Sehe da keinen wesentlichen Vorteil drin. Dafür braucht
man spezielle Tools, statt einfach alle Programme nutzen zu können, die
mit Dateisystemen umgehen können. (z.b. Nautilus, wenn man's grafisch
will.)

Mit FUSE könnte man natürlich jetzt ein sysctlfs schreiben...

-Olaf-



Mehr Informationen über die Mailingliste linux-l