[linux-l] Programme / Dateien / Benutzerr?chte

Ihno Krumreich ihno at lst.de
Sa Jun 14 11:30:01 CEST 2003


On Fri, May 23, 2003 at 09:32:33PM +0200, Olaf Radicke wrote:
> Hi!
> 
> Wenn ich einen Benutzer X habe und der soll
> mit dem Programm Y die Datei Z bearbeiten k?nnen,
> aber nicht direkt auf Datei Z zugreifen k?nnen,
> weil Programm Y genau ?berpr?ft was X machen will.
> Wie stelle ich das an?
> 
> Normalerweise erbt das aufgerufene Programm doch
> die R?chte von dem aufrufenden Benutzer. 
> 

Richtig.

> So kann ich doch z.B. passwd als User aufrufen und
> indirekt auf eine Datei zugreifen auf die sonnst
> nicht zugreifen kann und auch nur auf eine ganz
> bestimme weise.

passwd ist hier eine der Ausnahmen.

Bei passwd ist das setuid-Bit gesetzt. Erkannbar an
dem s statt dem x bei den Ausfuehrungsrechten.

ihno at uttenreuth:~> ls -l /usr/bin/passwd
-rwsr-xr-x    1 root     shadow      68680 2002-09-10 21:13 /usr/bin/passwd
ihno at uttenreuth:~> 

Damit bekommt das aufgerufene Programm nicht die
Rechte des aufrufenden Benutzers, sondern die
Rechte des Eigentuemers von /usr/bin/passwd
(in diesem Falle also root).

Der gleiche Mechanismus funktioniert mit jedem
anderen Benutzer. In deinem Beispiel braucht
man also einen Benutzer (selbst eingerichtet)
dem das Programm Y und die Datei Z gehoeren.
Das Programm Y muss setuid sein (chmod u+s Programm_Y).
Jetzt muss X das Programm noch ausfuehren duerfen
(chmod go+x Programm_Y) und dann geht es los.

Der Benutzer X braucht keinerlei Zugriff auf Z zu
haben (also noch nicht mal lesend).

Ihno




Mehr Informationen über die Mailingliste linux-l