[linux-l] SuSE 9.3 und gshadow

Mike Dornberger Mike.Dornberger at gmx.de
Fr Nov 4 19:46:48 CET 2005


Hi,

On Fri, Nov 04, 2005 at 04:55:53PM +0100, Klaus Gerhardt wrote:
> ich bin bei meiner SuSE 9.3 auf der Suche nach dem shadow-System für die 
> Gruppenverwaltung. Aber es scheint zu meiner Verwunderung nicht zu 
> existieren. Zum einen weil keine /etc/gshadow existiert und auch nicht 
> erzeugt wird, wenn ich eine Gruppe mit Passwort erzeuge. Zum anderen 
> steht dieser Kommentar in man grpconv:
> 
> Since /etc/gshadow is not supported by this system, grpconv does nothing 
> except printing an error message.

vielleicht hat SUSE hier mal was richtig gemacht, indem sie den Support für
gshadow rausgeworfen haben. Wenn ein User erstmal Zugang zu einer Gruppe
hat, kann er leicht dafür sorgen, daß er immerwieder Zugang zur Gruppe hat,
selbst wenn das Gruppenpasswort geändert wird und er nicht mehr in der
/etc/group gelistet ist. Dies geht, indem er sich ein Programm anlegt, was
sgid ausgeführt wird, solange er Mitglied der Gruppe ist. Beispielsweise
einen einfachen Wrapper in C, der einfach nur das Programm mit den Befehlen
ausführt, den man ihn übergibt. Da es auch ein "legales" sgid-Programm sein
kann, kann root auch nicht einfach hergehen und ohne weiteres die sgid-Flags
zurücksetzen. (Naja, kann sie schon, aber auch dann ist Ärger
vorprogrammiert.)

Probiere es aus:

/* do_grp.c */
#include <errno.h>
#include <unistd.h>

int main(int argc, char *argv[]){
  char *newargv[argc];
  int i = 0;

  for (i = 1; i < argc; i++){
    newargv[i - 1] = argv[i];
  }
  newargv[argc - 1] = NULL;

  execv(argv[1], newargv);

  return errno; /* if execv fails, it sets errno; see man execv or man
		   execve */

}

$ make do_grp
$ chgrp grp do_grp
$ chmod g+sx do_grp

Statt der letzten 2 Befehle und deinen User zu einer Gruppe hinzufügen und
wieder entfernen, kanst du folgendes testen:

$ su
# echo Geheim >secret.txt
# chown mail:mail secret.txt

(Ich hab hier mal mail genommen, weil die Gruppe wohl auf jedem System
existieren sollte.)

# chmod a=,g+r secret.txt
# chgrp mail do_grp
# chmod g+s do_grp
# exit
$ cat secret.txt
$ ./do_grp /bin/cat secret.txt

Du kannst dann sogar Dateien anlegen:

$ echo xyz >newfile.template
$ (umask 007; ./do_grp /bin/cp newfile.template newfile.txt)

Oder die Filemodes ändern (wenn du Besitzer der Datei bist):

$ ./do_grp /bin/chmod g-w newfile.txt

Grüße,
 Mike



Mehr Informationen über die Mailingliste linux-l