Utwórz nowego użytkownika vsftpd i zablokuj (określ) katalog domowy / login

31

Muszę okresowo udzielać tymczasowego i ograniczonego dostępu do różnych katalogów na serwerze Linux z CentOS, na którym jest zainstalowany vsftp.

Utworzyłem użytkownika za pomocą useradd [user_name]i nadałem mu hasło za pomocą passwd [password].

Utworzyłem katalog, /var/ftpa następnie powiązuję go z katalogiem, do którego chcę ograniczyć dostęp.

Co jeszcze muszę zrobić, aby upewnić się, że gdy ten użytkownik zaloguje się na FTP, będzie miał dostęp tylko do tego katalogu?

zigojacko
źródło
Przepraszam, ale czy kiedykolwiek zastanawiałeś się nad sprawdzeniem vsftpd.conf?
jirib
Tak. Mam. Nie mówi mi, jak poinstruować konkretnego użytkownika, aby zalogował się do określonego katalogu ...?
zigojacko
1
Pewnie? opcja chroot_list_enable ... A może chcesz zastąpić katalog inny niż $ HOME?
jirib
1
Chcę wiedzieć, jak zadeklarować określony katalog domowy dla określonego użytkownika. Włączyłem chroot_list_enablei stworzyłem /etc/vsftpd/chroot_list. Po prostu nie wiedziałam, co dalej.
zigojacko
Następnie usermod, aby zmienić katalog główny użytkownika.
jirib

Odpowiedzi:

44

Pełna odpowiedź, która rozwiązała moje pytanie dla wszystkich innych, którzy są krok po kroku ...

Zainstaluj, vsftpdużywając tego jako przewodnika .

  • Utwórz użytkownika za pomocą useradd [user_name].
  • Utwórz hasło użytkownika za pomocą passwd [user_name]. (Zostaniesz poproszony o podanie hasła).
  • Utwórz katalog FTP, /var/ftpa następnie powiąż z katalogiem „home”, który chcesz określić dla tego użytkownika mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/.
  • Zmień katalog domowy użytkownika za pomocą usermod -d /var/ftp/custom_name/ user_name

    W /etc/vsftpd/vsftpd.confupewnij się, że wszystkie poniższe ustawienia są ustawione: -

    • chroot_local_user = TAK
    • chroot_list_enable = TAK
    • chroot_list_file = / etc / vsftpd.chroot_list

Wyświetlaj użytkowników w vsftpd.chroot_listpliku tylko, jeśli chcesz, aby mieli pełny dostęp do dowolnego miejsca na serwerze. Nie wymieniając ich w tym pliku, mówisz, że ogranicz wszystkich vsftpdużytkowników do ich określonego katalogu domowego.

Innymi słowy (w celach informacyjnych):

  1. oznacza, że ​​domyślnie WSZYSCY użytkownicy są chrootowani, z wyjątkiem użytkowników w pliku ...
    • chroot_local_user = TAK
    • chroot_list_enable = TAK
  2. oznacza, że ​​domyślnie TYLKO użytkownicy w pliku są chrootowani ...
    • chroot_local_user = NIE
    • chroot_list_enable = TAK
zigojacko
źródło
Dlaczego nie ustawić bezpośrednio katalogu domowego tego użytkownika /var/www/vhosts/domain.com/? Czy jest z tym jakiś problem (jak jakiekolwiek potencjalne ryzyko)?
leemes
2
Właśnie odkryłem, że vsftp wydaje się zabraniać przyznawania użytkownikowi ftp uprawnień do zapisu na najwyższym poziomie chroot ze względów bezpieczeństwa (ale nie jestem w 100% pewien). Może to być powód do posiadania tej „pośredniczości” w celu przyznania użytkownikowi ftp dostępu do zapisu do określonego folderu, nie pozwalając jednocześnie na przeglądanie żadnego folderu rodzeństwa (tak by było, gdyby po prostu ustawić jego poziom domowy o jeden poziom wyżej, co unika wspomnianego problemu). (patrz ubuntuforums.org/… )
leem
2
@zigojacko czy twój użytkownik widzi tylko przypisany katalog domowy? Dla mnie domyślnie jest to użytkownik przypisany do katalogu, ale nadal mogą widzieć inne foldery i mogą węszyć aż do rootowania, ale tylko z dostępem do odczytu.
GraehamF,
1
Ta odpowiedź w połączeniu z unix.stackexchange.com/questions/208960/… była dla mnie pełną odpowiedzią. W końcu stworzyłem użytkownika w grupie i ograniczyłem dostęp grupy do pożądanego katalogu.
GraehamF,
10

Dla mnie to nie zadziałało nawet po powyższym. Lokalny katalog_główny był już ustawiony na katalog i cokolwiek robię, katalog użytkownika nie został osadzony w więzieniu. Wreszcie działa tylko po zmianie

chroot_local_user = TAK

I postępuj zgodnie z procedurą

  1. vi /etc/vsftpd.conf
  2. Dodaj wiersz „user_config_dir = / etc / vsftpd_user_conf” (bez cudzysłowów)
  3. mkdir / etc / vsftpd_user_conf;
  4. cd / etc / vsftpd_user_conf
  5. vi nazwa_użytkownika;
  6. Wpisz wiersz „local_root = / srv / ftp / user_name”

Tylko moje dwa centy, jeśli ktoś miał ten sam problem.

gnaanaa
źródło
Postępowałem zgodnie z tą procedurą, aby zmienić katalog główny vsftpd, w tym dodatkowe kroki autorstwa gnaanaa. Niestety to jeszcze nie działa. Filezilla zgłasza 530 Niepoprawne logowanie. Użytkownik i hasło są zgodne z powyższą procedurą (nazwa_użytkownika). Utworzyłem użytkownika testowego ftp2 i ustawiłem jego hasło. Normalne logowanie Filezilla używa tej nazwy użytkownika i hasła. Ustawiłem także katalog główny tylko do odczytu i utworzyłem katalog niższego poziomu z uprawnieniami do zapisu zgodnie z tym postem. Używam Ubuntu 16.04, jeśli to robi jakąkolwiek różnicę.
tim11g
Używam Ubuntu 16.04, jeśli to robi jakąkolwiek różnicę, @gnaanaa. Pomyślałem też, że to dziwne, że w katalogu / var nie ma katalogu ftp. Musiałem więc utworzyć / var / ftp, a następnie / var / ftp / user_name. code<br/> Odpowiedź: 220 (vsFTPd 3.0.3) <br/> Polecenie: USER ftp2 <br/> Odpowiedź: 331 Podaj hasło. <br/> Polecenie: PASS ***** <br/> Odpowiedź : 530 Niepoprawne logowanie. <br/> Błąd: Błąd krytyczny: Nie można połączyć się z serwerem <br/>code
tim11g
Po pierwsze, sprawdź, dlaczego nie możesz zalogować się do serwera. Możesz rozwiązać problem z więzieniem dopiero po pomyślnym zalogowaniu. Twoje zdrowie.
gnaanaa
Czy vsftp używa innego użytkownika / hasła niż konta na komputerze? Odkryłem, że hasła smb należy ustawić osobno za pomocą smbpasswd -a. Czy vsftpd działa w ten sam sposób?
tim11g
Nie, to konto użytkownika systemu. sprawdź tę odpowiedź: askubuntu.com/questions/413677/vsftpd-530-login-incorrect
gnaanaa