[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