[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: sudo mit falschem suid ? (newbie)



Hallo!

On 12 Oct 2003 at 21:56 +0000, Stefan Hassenstein wrote:

> In article <FVNi.4Li.19@gated-at.bofh.it>, Elmar W. Tischhauser wrote:
> > On 12 Oct 2003 at 19:59 +0000, Stefan Hassenstein wrote:
> > 
[setuid-root-Probleme mit sudo]
> > 
> > Mountest du vielleicht / (oder /usr) mit der Option nosuid? 'user'
> > impliziert =FCbrigens nosuid, nodev und noexec.
> 
> Meine Güte !!! Herzlichen Dank !

Es freut mich, dass ich helfen konnte. 

Ein OT-Hinweis noch: Dein slrn scheint irgendwie Quoted-printable nicht
zu dekodieren, alle über 7-bit-ASCII hinausgehende Zeichen sehen dann
leicht seltsam aus.

> >>    003-10-12 21:57:04 unable to set uid=3D8 or gid=3D8 for removing setuid
> >>    privilege +(3) (euid=3D1001)
> > 
> > Diese Meldung sieht eher wie eine deines MTAs aus: UID und GID 8
> > entsprechen dem User bzw. der Gruppe 'mail'.
> 
> hmmm....versuche gerade exim zum laufen zu bekommen...
> vielleicht hat der auch ein Problem mit nosuid.

Ziemlich sicher. Exim ist normalerweise ebenfalls setuid-root, versucht
aber, diese Privilegien so oft als möglich abzulegen. Das gelingt nicht,
weil er im Benutzerkontext (EUID=1001=deine Benutzer-UID) aufgerufen
wird und das setuid-root-Bit nicht greift.

> Ich gebe frank und frei zu, als Mac-user mit der 
> ganzen uid-Geschichte noch reichlich Verständnis Probleme zu haben.

Ist eigentlich ganz einfach. Benutzer- und Gruppennamen sind nichts
anderes als "menschenverträgliche" Zeichenketten für Benutzer- und
Gruppenkennziffern (UIDs und GIDs).
Normalerweise geschieht diese Zuordnung über /etc/passwd bzw /etc/group,
dokumentiert ist das Format in passwd(5) und group(5).
Du kannst diese Einstellungen in kanonischer Weise mit getent abfragen.
Jeder Benutzer kann Mitglied in verschiedenen Gruppen sein, eine davon
ist seine primäre. Abfragen lässt sich das zum Beispiel mit id. 

Wenn du nun als Benutzer mit der UID 1001 und der GID 1001 ein Programm
startest, wird der Prozess unter dieser "realen UID" und deiner "realen
GID" ausgeführt. Dabei gehört die dem Prozess zu Grunde liegende
ausführbare Datei meist nicht dir, sondern root. Beispiel:

-rwxr-xr-x    1 root     root      1102088 14. Apr 2002  /usr/bin/vim

Wenn du nun als Benutzer vim startest, läuft der neue vim-Prozess mit
deinen Rechten, also mit UID=1001 und GID=1001. Du darfst aber natürlich
/usr/bin/vim weder löschen noch beschreiben.

Nun gibt es aber Programme, denen bei Aufruf im Kontext eines normalen
Benutzers dessen beschränkte Rechte nicht ausreichen würden.
/usr/bin/sudo ist ein Beispiel, weil es ja die nur für root lesbare
Datei /etc/sudoers auslesen muss.

Für solche Fälle gibt es das Set-User-ID- und das Set-Group-ID-Bit. Hier
kommt ins Spiel, dass bei den Rechten eines Prozesses zusätzlich zur
realen UID/GID auch die effektive UID/GID verwaltet wird und bei
gesetzten s-Bits auf die IDs des Dateieigentümers gesetzt werden. Zum
Beispiel:

-rwsr-xr-x    1 root     root        80584 27. Apr 2002  /usr/bin/sudo

Wenn du nun mit UID=GID=1001 sudo aufrufst, haben wir für diesen Prozess
folgende Situation:

reale UID=1001                effektive UID=0 (root)
reale GID=1001                effektive GID=1001

, was bedeutet, dass sudo, obwohl von dir gestartet, "effektiv" mit
Root-Rechten läuft.

Da von einem normalen Benutzer gestartete Prozesse im Fall von
suid-root/sgid-root mit höchsten Rechten laufen, ist es sinnvoll, die
Anzahl solcher Programme auf ein absolut notwendiges Minimum zu
reduzieren.

> Vielen Dank und eine gute Woche !
> 
> Stefan

Wünsche ich dir gleichfalls!
Elmar

-- 
[ GnuPG: D8A88C0D / 2407 063C 1C92 90E9 4766 B170 5E95 0D7F D8A8 8C0D ]
·······································································
  A mouse is a device used to point at the xterm you want to type in.

Attachment: pgpjRPULEb78x.pgp
Description: PGP signature


Reply to: