VIP
Witam
Księga Gości
Chat
Forum
SETI@home
Bramka GG
CoToDlaNiego

Algorytmy
Programowanie
C++
PHP
Sortowanie
Drzewa BST
Listy
Stos
Kolejki
Kopce
TPB itd.

HOWTO
Linux & Windows
Linux - Bash
Linux - Chroot
mIRC
Działanie TCP
Kraków
SPMP

Galeria
Kiepscy
Wystawa '01
Wesele Idola '02
Wesele Owada '03
Wesele Emilki '06

Linki
Znajomi
Moje www
Informatyka
Drzewo rodzinne
Na Przyzbie

DownLoad
Reklama www
Zlecenie.avi
vanBasco 2.52
vanBasco 2.52 Foto
karaoke-polskie.pdf
karaoke-polskie.rar
karaoke-polskie.r00

Komunikacja
ZTM Warszawa
PKP Warszawa

Brw - Waw
Brw - Łow
Waw - Brw
Pod - Waw

Linux - Chroot - klatka dla użytkowników

Liczba odwołań : 7502
autor : Tomasz Czwarno


  1. Stryktura katalogów dla chroot'owanego środowiska
  2. Skrypt dla nowego chroot'owanego shella
  3. Skrypt dla nowego chroot'owanego basha
  4. Wpis informujący system o nowym shellu
  5. Wpis informujący system o nowym shellu dla użytkowników user1 i user2
  6. Wpis informujący system o ustawieniach dla użytkowników user1 i user2

1. Stryktura katalogów dla chroot'owanego środowiska :

/chroot/bin Polecenia dla użytkowników np. : bash, ls, cp itd.
/chroot/lib Biblioteki dla poleceń : bash, ls, cp itd.
/chroot/etc Pliki : passwd, group, bashrc, profile, chroot-bash
/chroot/home/user1 Katalog użytkownika 1
/chroot/home/user2 Katalog użytkownika 2

Struktura katalogów może być bardziej rozbudowana - wszystko zależy od tego co chce sie dać użytkownikom zamknietym w chroot'owanym środowisku. Użytkownik w takim środowisku jest lokalnym root'em - zależy to jednak od odpowiedniego ustawienia praw. Dla uzytkownika /chroot jest widziany jako katalog startowy - nie może z niego wyjść - bynajmniej teoretycznie.

Wszystkie polecenia, które znajdują się w /chroot/bin są kopiami poleceń z katalogu /bin. Można też umieścić, pewne polecenie z katalogu /sbin w katalogu /chroot/sbin lub /chroot/bin. Zaleca się jednak, aby udostępniana polecenia, znajdowały sie w tych samych katalogach - odwzorowuje to semantykę ich zastosowania jak i wprowadza ogólnoprzyjetą lokalizację poleceń linuxowych.

W katalogu /chroot/lib umieszczamy biblioteki potrzebne do uruchomienia przekopiowanych poleceń. Uzytkownik w chroot'owanym środowisku znajduje się jak w klatce gdzie ma dostęp tylko do tego co mu damy - dlatego też trzeba przekopiowac biblioteki.

Polecenie ldd umozliwia określenie potrzebnych bibliotek dla wybranego polecenia np. :

ldd /bin/bash
ldd /bin/ls
ldd /bin/cp
...
W katalogu /chroot/etc umieszczamy pliki : passwd, group, bashrc, profile. Wszystkie pliki należy odpowiednio pozmieniać. Dalej zostanie opisany passwd i group. W plikach bashrc i profile należy zadbać, aby wszystkie wpisy odnosiły się do nowego chroot'owanego środowiska, czyli nie odnosiły się do tych rzeczy których nie umieściliśmy w naszym shell'u.

2. Skrypt dla nowego chroot'owanego shella - chroot-shell :

Lokalizacja skryptu /bin/chroot-shell

#!/bin/bash
/usr/sbin/chroot /chroot /bin/chroot-bash
/usr/sbin/chroot wywołuje nowego shella i zamykow go w obrębie katalogu /chroot.
/bin/chroot-bash odnosi się już do chroot'owanego katalogu /chroot, więc skrypt chroot-bash musi się znajdować faktycznie w katalogu /chroot/bin/chroot-bash.

3. Skrypt dla nowego chroot'owanego basha - chroot-bash :

Lokalizacja skryptu /chroot/bin/chroot-bash

#!/bin/bash

cd $HOME
/bin/bash
/chroot/bin/chroot-bash jest naszym nowym BASH'em. Jego zadanie jest przejście do katalogu użytkownika i odpalenie basha'a.
Moglibyśmy w skrypcie /bin/chroot-shell zmienić wpis na :

/usr/sbin/chroot /chroot /bin/bash

Wówczas, zarówno użytkownik user1 jak i user2 po zalogowaniu się znajdowaliby się w tym samym katalogu - /chroot
Dla zapewnienia jeszcze szczelniejszej izolacji, możnabybyło dla każdego uzytkownika tworzyć shella. Wtedy każdy użytkownik po zalogowaniu się czułby się jak "root" - miałby własną strukturę katalogów. To rozwiązanie wiąże się z tym, że dla każdego chroot'owanego środowiska trzebabyłoby przygotować odpowiednią strukturę katalogów, oraz umieścic w każdej z nich polecenia i biblioteki udostepniane użytkownikowi - co wiąże się ze znaczną konsumpcją pamięci dyskowej. W przyjętym rozwiązaniu użytkownicy user1 i user2 mają dostep do tych samych poleceń.

4. Wpis informujący system o nowym shellu - shells :

Lokalizacja pliku /etc/shells

/bin/sh
/bin/bash
/sbin/nologin
/bin/bash2
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
/bin/chroot-shell
Teraz system wie, jakie shell'e są dostepne - zarejestrowane. Umożliwi to pożniej zmianę wpisu w pliku passwd

5. Wpis informujący system o nowym shellu dla użytkowników user1 i user2 - passwd :

Lokalizacja pliku /etc/passwd

root:x:0:0:root:/root:/bin/bash
...
user1:x:500:500:User 1:/home/user1:/bin/chroot-shell
user2:x:501:501:User 2:/home/user2:/bin/chroot-shell

6. Wpis informujący system o ustawieniach dla użytkowników user1 i user2 - passwd, group :

Lokalizacja pliku /chroot/etc/passwd

user1:x:500:500:User 1:/home/user1:/bin/bash
user2:x:501:501:User 2:/home/user2:/bin/bash
Lokalizacja pliku /chroot/etc/group

user1:x:500:user1
user1:x:501:user1
W plikach passwd i group w chroot'owanym środowisku umieszczamy tylko tych uzytkowników, którzy maja dostąp do do tego shell'a. Uniemożliwia to tym użytkownikom dowiedzenie się, kto jeszcze jest w systemie - poprzez czytanie tych plików.

W systemie muszą istnieć użytkownicy user1 i user2 - to oczywiste. Katalog użytkowników /chroot/home/user1 może być twardym linkiem do starego ich katalogu /home/user, jeśli chroot'owane środowisko jest robione później i użytkownicy mieli juz dostęp do shell'a. Wówczas jeśli serwer http zaglądał do katalogów użytkowników i wyświetlał strony www z katalogu /home/user1/public_html to użytkownicy nie odczują zmiany shell'a.

Wszelkie prawa zastrzeżone (c) 2001 Tomasz Czwarno - owad (na) czwarno.pl

Sondy
Wigilia 2001
Kraków 2002
Karaoke 2003

Logowanie
Login :
  
Hasło :
  

  






One-Word-A-Day

PJWSTK

PHP != HTML