Muszę być w stanie dodać wirtualnych użytkowników do vsftpd, którzy mają dostęp tylko do podfolderu. Powodem, dla którego chcę korzystać z wirtualnych użytkowników jest to, że chcę mieć tylko 1 prawdziwego użytkownika na serwerze.
Struktura FTP to:
www
website_name1
sub_folder1
website_name2
sub_folder2
sub_folder3
website_name3
website_name4
Konto główne ma dostęp do folderu www i wszystkich podkatalogów i chcę dodać wirtualnego użytkownika, który może mieć dostęp do podkatalogu 1 i tylko podkatalogu 1
Również, aby uniknąć pewnych nieporozumień, wymagałbym również innego użytkownika, aby uzyskać dostęp do sub_folder3 i tylko sub_folder3 . Chodzi mi o to, że muszę być w stanie wybrać, który folder i podfoldery użytkownika według użytkowników.
Znalazłem sposoby dodawania użytkowników, aby zobaczyć całe foldery Strucutre lub konfigurować nazwy użytkowników, z których oba nie mają dla mnie żadnego zastosowania.
Znalazłem podobne pytanie zamieszczone tutaj:
Jak skonfigurować VSFTPD dla wielu użytkowników, w tym dodając określone katalogi
ale zaleca, proftpd
co moim zdaniem było ogólnie mniej bezpieczne.
A może przegapiłem tutaj punkt?
źródło
Odpowiedzi:
Przy odrobinie zabawy udało mi się znaleźć pół-rozwiązanie (nie idealne, ale wystarczająco dobre)
używając 2707974 odpowiedzi i informacji, które zdobyłem, gdzie udało mi się zdobyć to, czego potrzebuję.
Najpierw musisz zainstalować vsftp i PAM
Edytuj /etc/vsftpd.conf
następnie wklej następujące
Najważniejsze dla użytkowników wirtualnych jest edytowanie dokładnie tych potrzeb, które są najważniejsze po komentarzu ustawień użytkownika wirtualnego
Tworzenie użytkownika
Możesz albo skorzystać z bazy danych, albo
htpasswd
znalazłemhtpasswd
szybciej i łatwiej.utwórz katalog do przechowywania użytkowników
dodając dodatkowych użytkowników po prostu pomiń
-c
Udało mi się tylko uruchomić go za pomocą CRYPT, który ogranicza się do 8 znaków, aby użyć więcej niż 8 znaków, użyj openssl do wygenerowania zgodnego skrótu i potoku bezpośrednio do htpasswd
Po utworzeniu użytkowników możesz teraz zmienić plik konfiguracyjny PAM
i usuń wszystko z tego pliku i zamień na następujące
Umożliwi to logowanie się do użytkowników wirtualnych zdefiniowanych w
/etc/vsftpd/ftpd.passwd
i wyłącza lokalnych użytkownikówNastępnie musimy dodać użytkownika, z którego będą mogli korzystać użytkownicy wirtualni. Ci użytkownicy nie będą mieli dostępu do powłoki i będą wywoływani
vsftpd
użytkownik musi pasować
guest_username=vsftpd
do pliku conf vsftpdDefiniowanie dostępu do katalogu
Ważna linia tutaj jest następująca
oznacza to, że po
user1
zalogowaniu będzie szukać następującego plikuten plik jest taki sam jak ten,
vsftpd.conf
więc możesz zdefiniować nowylocal_root
wracając do pytania, do którego chcemy
user1
mieć dostępvar/www/website_name1/sub_folder1
, więc musimy utworzyćvsftpd_user_conf
folder:Teraz utwórz plik użytkownika:
i wprowadź następujący wiersz
Teraz uruchom ponownie vsftp
powinieneś być teraz w stanie zalogować się jako użytkownik1, który będzie mógł widzieć tylko
var/www/website_name1/sub_folder1
każdy folder i plik w nim umieszczony.Możesz teraz dodać dowolną liczbę użytkowników i ograniczyć ich dostęp do dowolnego folderu.
ważne, aby pamiętać, że jeśli nie utworzysz pliku conf użytkownika, domyślnie będzie to folder var / www jako root (w powyższym przykładzie)
Jeśli podfolder ma być modyfikowany przez użytkownika, konieczna może być zmiana właściciela udostępnionego podfolderu:
źródło
Wypróbuj ten podręcznik. Może zadziała dla Ciebie.
Jak to zrobić
Zainstaluj vsftpd i bibliotekę PAM
Edytuj
/etc/vsftpd.conf
i/etc/pam.d/vsftpd
Twórz konta użytkowników za pomocą niestandardowych katalogów (na przykład w / var / www /)
Ustaw katalogi z poprawnymi
chmod
ichown
Utwórz użytkownika administratora z pełnym dostępem do serwera
vsftpd
(Very Secure FTP Deamon) ilibpam-pwdfile
utwórz wirtualnych użytkownikówChciałem stworzyć użytkowników FTP, ale nie chciałem dodawać lokalnych użytkowników unixa (brak dostępu do powłoki, brak katalogu domowego i tak dalej). PAM (Pluggable Authentication Modules) pomoże Ci stworzyć wirtualnych użytkowników.
sudo apt-get install vsftpd libpam-pwdfile
vsftpd.conf
Najpierw musisz wykonać kopię zapasową oryginalnego pliku
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
Następnie utwórz nowy
sudo vim /etc/vsftpd.conf
Skopiuj i wklej następujące linie. Plik powinien zawierać TYLKO następujące wiersze:
Aby zarejestrować użytkownika, którego używasz
htpasswd
, zakładam, żeapache2
pracujesz na swoim serwerze. Utwórzvsftpd
folder, a następnie umieść w nim pliki konfiguracyjne.sudo mkdir /etc/vsftpd
następnie
sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1
-c oznacza, że utworzymy plik, jeśli jeszcze nie istnieje -d wymusza MD5, potrzebujesz go na Ubuntu 12.04, po prostu używaj go zawsze
Polecenie wyświetli monit o podanie hasła.
Jeśli chcesz później dodać nowych użytkowników:
sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2
/etc/pam.d/vsftpd
Ponownie musisz wykonać kopię zapasową pliku orignal
sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
i stwórz nowy
sudo vim /etc/pam.d/vsftpd
Skopiuj i wklej te 2 wiersze (powinna to być jedyna treść). Nalegam tylko na te 2 wiersze, traciłem dużo czasu na przechowywanie oryginałów i właśnie je dodałem.
sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
Możesz sprawdzić, czy został utworzony za pomocą komendy id: id vsftpd. Definiujemy użytkownika za pomocą powłoki / bin / false ze względu na parametr check_shell (nawet jeśli go nie używasz). Gdy użytkownik końcowy połączy się z serwerem FTP, zostaną wykorzystane do uzyskania praw i własności:
chmod
achown
.vsftpd
Popularnym sposobem jest używanie init.d jak wszystkich deamon
sudo /etc/init.d/vsftpd restart
sudo service vsftpd restart
Zgodnie z konfiguracją wszyscy użytkownicy zostaną umieszczeni w tym folderze: / var / www / user1.
Musisz je utworzyć z określonymi uprawnieniami: folder główny nie może być zapisywalny!
Uwaga: użytkownik nie może tworzyć plików ani folderów w katalogu głównym.
W
vsftpd.conf
mamychroot_local_user=YES
więc użytkownik nie widzi nic poza swoim folderze. Dla niego serwer wygląda tak:Więc po prostu uruchom następujące polecenia:
/var/www/user1
Folder musi istnieć lub połączenie nie powiedzie się.W tej chwili możesz spróbować połączyć się z FTP
Aby utworzyć administratora, musimy zarejestrować nowego użytkownika
htpasswd
.Zanim to zrobimy, radzę sprawdzić w
/etc/ftpusers
pliku, który definiuje niektórych użytkowników, którzy nie mogą łączyć się z ftp. Myślę, że jest to tylko dla użytkowników lokalnych, a nie użytkowników wirtualnych, ale na wszelki wypadek nie wybieraj nazwy zawartej w tym pliku.sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin
Teraz musimy dodać nową linię do
/etc/vsftpd.conf
chroot_list_enable=YES
Oznacza to, że użytkownik zostanie umieszczony w swoim folderze (jako więzienie) Z WYJĄTKIEM użytkowników w / etc /
vsftpd.chroot_list
Utwórzmy ten plik i dodajmy naszego użytkownika, plik jest prostą linią zawierającą „theadmin”. Dodaj jednego użytkownika w wierszu. Oznacza to, że NIE musisz tworzyć
/var/www/theadmin
folderu, użytkownik zaloguje się i rozpocznie pracę/home/vsftpd
.Uruchom ponownie serwer i gotowe!
źródło
tak, możesz i dla elastyczności utwórz katalog i plik userconfig
mkdir /var/www/userconfs
lub cokolwiek, na co chcesz zmienić nazwę userconfs, a następnie utwórz określony pliktype inside,
local_root=/var/www
(lub cokolwiek, do czego chcesz uzyskać dostęp przez dir)guest_username=www-data
(właściciel ubuntu edycji pliku u górypo aktualizacji dodajesz plik vsftpd.conf
user_config_dir=/var/www/userconfigs
(lub cokolwiek, co zastąpiłeś, ponieważ to konto uzyska dostęp do podanego sdir yo)źródło