linux-l: su

Jens Dreger jens.dreger at physik.fu-berlin.de
Fr Mär 17 10:44:11 CET 2000


On Fri, Mar 17, 2000 at 09:18:14AM +0100, Matthias Kranz wrote:
> On Thu, Mar 16, 2000 at 06:24:24PM +0100, Ulrich Wiederhold wrote:
> > Problem leider noch nicht gelöst...
> 
> Du meinst, mit nochmaligem Posten nerven zu koennen, wie? Wenn keiner
> antwortet, dann entweder, weil keiner eine Antwort ad hoc weiss oder keiner
> Lust dazu hat.

Ich war von Anfang an versucht, "su >/dev/null" vorzuschlagen... Aber
das hat auch Nachteile, gebe ich zu.
 
> > >> >Ausgabe auf der Konsole nach "su":
> > >> >"setgid: Operation not permitted"
> > >> >Wie kann ich das abstellen?
> > 
> > Zur weiteren Information...
> > sudo ist nicht installiert.
> 
> Tut ja auch nix zur Sache, wie schon bemerkt.
> 
> > eine Gruppe meines users existiert
> 
> Das wollen wir doch hoffen.
> 
> Also, was sagt denn ein
> 
> ls -l `which su`
> 
> ?
> 
> Das naechste musst Du als root ausfuehren (also auf einer Console direkt als
> root einloggen und loslegen):
> 
> strace -u <DEIN NUTZERNAME MIT DEM 'SU' NICHT KLAPPT> -o strace_dump.txt su
> 
> Das legt eine Datei strace_dump.txt an, in der man vielleicht mehr sehen kann.

Guter Plan. Aber wer den output von strace versteht, wuerde mit dem
"Problem" sicherlich auch alleine fertig, meinst Du nicht ?
Immerhin kann man daran sehen, dass der setgid-Aufruf _nicht_ von
su kommt, sondern von der shell, die von su gestartet wird. su setzt
vorher die uid auf 0. Man muss auch noch die child-Prozesse tracen
(strace -f ...), wodurch das Ganze nicht unbedingt uebersichtlicher
wird.

Die Frage lautet also, wie kann es passieren, dass ein uid=0 Prozess
nicht in der Lage ist, setgid(0) auszufuehren ? Vielleicht hat es was
zu tun mit (man setgid):

  If the user is root or the program is setgid root, special care 
  must  be  taken.  The  setgid  function checks  the  effective gid
  of the caller and if it is the superuser, all process related group
  ID's are set to gid.  After this has occurred, it is impossible for
  the program to regain root privileges.

Wenn es wirklich wichtig ist, schau Dir doch den source von "su"
an. Ungluecklicherweise wirst Du wahrscheinlich auch noch den source
der libc brauchen. Ist schon eher aufwendig. Neuinstallation ist
sicherlich einfacher. 

Gruss,

Jens.



Mehr Informationen über die Mailingliste linux-l