Sjoerd's user-chroot-HOWTO 29-10-2001

Inleiding

Noot: "root" betekent hier soms de superuser en soms de hoogste directory in het bestandssysteem.

Chroot staat voor change root en hier wordt met root bedoeld de root van het filesystem. Chroot maakt dus een bepaalde directory tot de root directory. Dat is vaak handig uit veiligheidsoogpunt. Je wilt gebruikers van buitenaf geen toegang geven tot je hele harde schijf, alleen maar tot één directory. Het wordt dus vaak voor FTP en andere programma's die bestanden delen gebruikt.

Ik kwam tot deze HOWTO omdat ik een FTP server niet als root, maar wel in een chroot-omgeving wilde laten draaien. Een normale gebruiker kan niet chrooten, dat moet de root voor hem doen. Nu is er een slimme manier om een gewone gebruiker toch in een chroot-omgeving te stoppen. Elke gebruiker logt namelijk in met behulp van het login programma, welke als root draait. De truc is dus dit programma over te halen een chroot te doen naar een bepaalde directory, meestal de homedirectory van de gebruiker.

Deze HOWTO legt uit hoe je je systeem moet configureren zodat een gebruiker of een aantal gebruikers in een chroot-omgeving komen zodra ze ingelogd zijn. Mogelijke toepassingen hiervan zijn FTP, onveilige programma's, shell access.

Zie ook:

Noot: Deze links gaan via Google.

Configuratie

Je moet twee dingen instellen:

  • /etc/passwd
  • een chroot directory

/etc/passwd instellen

ftp:x:604:604:FTP,,,:/pub/ftp/:*
het gaat hier om het sterretje aan het einde, wat login verteld om te chrooten naar deze directory (hier /pub/ftp) en een nieuwe login sessie te starten.

Noot: Er worden dus twee login sessies gestart en de gebruiker wordt dus ook twee keer om zijn wachtwoord gevraagd. Ik stel voor dat je hier iets aan doet.

Zie ook:

De chroot directory instellen

Links zijn groen, dirs zijn blauw.

  • bin/bash
  • bin/login
  • dev/
  • etc/group
  • etc/pam.conf
  • etc/pam.d/
  • etc/passwd
  • etc/shadow
  • lib/ld-2.2.4.so
  • lib/libc-2.2.4.so
  • lib/libcrypt-2.2.4.so
  • lib/libdl-2.2.4.so
  • lib/libhistory.so.4.2
  • lib/libncurses.so.5.2
  • lib/libpam.so.0.72
  • lib/libpam_misc.so.0.72
  • lib/libreadline.so.4.2

Je hebt een login en een shell nodig: /bin/bash en /bin/login. Deze programma's hebben weer libraries nodig. Met het programma

ldd
kan je er achter komen welke libraries dat zijn. Je moet ze vervolgens naar de lib directory kopieeren. Login heeft ook de pam-configuratiebestanden en wat bestanden in de /dev directory nodig. Ik heb niet alle bestanden in de dev directory, alleen zero, null en het resultaat van
/dev/MAKEDEV console
.
De links in de lib directory vond ik ook in mijn (gewone) /lib directory.

Je kan je root directory testen met:

  • chroot . /bin/bash
  • chroot . /bin/login
Waar . de directory is die je wilt gebruiken.

Zie ook: