Czy mogę utworzyć użytkownika SSH, który może uzyskać dostęp tylko do określonego katalogu?


45

Mam wirtualny prywatny serwer, z którym mogę się połączyć za pomocą SSH na moim koncie root, mogąc oczywiście wykonać dowolne polecenie linux i uzyskać dostęp do całego obszaru dysku.

Chciałbym utworzyć kolejne konto użytkownika, które będzie mogło uzyskać dostęp do tego serwera również za pomocą SSH, ale tylko do określonego katalogu, na przykład /var/www/example.com/

Na przykład wyobraź sobie, że ten użytkownik ma OGROMNY plik error.log (500 MB) zlokalizowany /var/www/example.com/logs/error.log podczas dostępu do tego pliku za pomocą FTP, ten użytkownik musi pobrać 500 MB, aby wyświetlić ostatnie wiersze dziennika, ale chciałbym, żeby był w stanie wykonać coś takiego:

tail error.log

Dlatego potrzebuję, aby mógł uzyskać dostęp do serwera za pomocą SSH, ale nie chcę mu przyznawać dostępu do wszystkich obszarów serwera.

Jak mogę to zrobić?

Odpowiedzi:


29

chroot użytkownik.


Aktualizacja:

Artykuł TechRepublic autorstwa Vincenta Danena mówi:

Wraz z wydaniem OpenSSH 4.9p1 nie musisz już polegać na hakach innych firm lub skomplikowanych konfiguracjach chroot, aby ograniczyć użytkowników do ich domowych katalogów lub dać im dostęp do usług SFTP.

edytuj / etc / ssh / sshd_config (/ etc / sshd_config w niektórych dystrybucjach) i ustaw następujące opcje:

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Upewnij się, że dyrektywa „Dopasuj” znajduje się na końcu pliku. Mówi to OpenSSH, że wszyscy użytkownicy w grupie sftp mają być chrootowani do swojego katalogu domowego (który% h reprezentuje w poleceniu ChrootDirectory)

Dla wszystkich użytkowników, których chcesz chrootować, dodaj ich do grupy sftp, używając:

# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe

Powyższe polecenie usermod doda użytkownika Joe do grupy sftp i ustawi ich powłokę na / bin / false, aby absolutnie nigdy nie mogli uzyskać dostępu do powłoki. Polecenia chown i chmod ustawią wymagane uprawnienia do katalogu. Po ustawieniu tych uprawnień użytkownik będzie mógł przesyłać i pobierać pliki, ale nie będzie mógł tworzyć katalogów ani plików w katalogu głównym

Chrootowanie kont powłoki jest nieco bardziej skomplikowane, ponieważ wymaga, aby niektóre pliki urządzeń i powłoki były dostępne w katalogu domowym użytkownika. Następujące polecenia skonfigurują bardzo podstawowy system chroot w Mandriva Linux:

# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe

W związku z powyższym użytkownik Joe może ssh i będzie ograniczony do chroot. Niestety niewiele to robi, ale daje wyobrażenie o tym, jak można to skonfigurować. W zależności od tego, co chcesz dostarczyć, będziesz musiał zainstalować dodatkowe biblioteki i pliki binarne.


Ubuntu Społeczność internetowa mówi

Tworzenie chroot

  1. Zainstaluj pakiety dchroot i debootstrap.

  2. Jako administrator (tj. Używając sudo) utwórz nowy katalog dla chroot. W tej procedurze /var/chrootzostanie wykorzystany katalog . Aby to zrobić, wpisz sudo mkdir /var/chroot w wierszu polecenia.

  3. Jako administrator otwórz /etc/schroot/schroot.confw edytorze tekstu. Wpisz cd /etc/schroot, a następnie gksu gedit schroot.conf. Umożliwi to edycję pliku.

  4. Dodaj następujące wiersze do, schroot.confa następnie zapisz i zamknij plik. Zastąp your_usernameswoją nazwą użytkownika.

    [lucid] description = Ubuntu Lucid location = / var / chroot priorytet = 3 użytkowników = twoja_nazwa_użytkownika groups = sbuild root-groups = root

Otwórz terminal i wpisz:

sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \ 
http://mirror.url.com/ubuntu/

Spowoduje to utworzenie podstawowej „instalacji” Ubuntu 10.04 (Lucid Lynx) w chroot. Pobieranie pakietów może chwilę potrwać. Uwaga: możesz zastąpić przejrzystą wybraną wersją Ubuntu. Uwaga: musisz zmienić powyższe, mirror.url.compodając adres URL prawidłowego lokalnego kopii zapasowej archiwum. Powinien zostać utworzony podstawowy chroot. Wpisz, sudo chroot /var/chroot aby zmienić na skorupę roota w chroocie.

Konfigurowanie chroota

Istnieje kilka podstawowych kroków, które możesz podjąć, aby skonfigurować chroot, zapewniając takie funkcje, jak rozpoznawanie DNS i dostęp do niego /proc.

Uwaga: Wpisz te polecenia w powłoce, która znajduje się poza chroot.

Wpisz następujące polecenie, aby zamontować /proc system plików w chroot (wymagany do zarządzania procesami):

sudo mount -o bind /proc /var/chroot/proc  

Wpisz następujące polecenie, aby zezwolić na rozpoznawanie DNS z poziomu chroot (wymagane do uzyskania dostępu do Internetu):

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf 

Bardzo niewiele pakietów jest instalowanych domyślnie w chroot (nawet sudo nie jest zainstalowane). Służy apt-get install package_namedo instalowania pakietów.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.