Więc jestem na instalacji VPS - CentOS Linux. Mam vsFTPd na serwerze. Obecnie mam dostęp SFTP do serwera za pośrednictwem mojego użytkownika root, ale teraz próbuję utworzyć nowego użytkownika z dostępem FTP do określonego katalogu tylko na serwerze, wykonałem następujące czynności:
1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com
Mam problem z utworzeniem użytkownika, który miałby TYLKO dostęp /var/www/mydomain.com
- zauważyłem, że użytkownik poprawnie loguje się do odpowiedniego folderu, jednak użytkownik może następnie przeglądać „powrót” do innych katalogów. Chcę, aby użytkownik został w określonym folderze i nie mógł „przeglądać” z powrotem .
Jakieś pomysły?
Znalazłem różne artykuły na temat chrootowania, ale po prostu nie wymyśliłem, aby użyć go w powyższych krokach.
Odpowiedzi:
To całkiem proste.
Musisz dodać następującą opcję do pliku vsftpd.conf
Dokumentacja w pliku konfiguracyjnym jest zrozumiała:
Oznacza to, że użytkownik będzie miał dostęp do folderu skonfigurowanego jako HOME użytkownika. Poniżej mam przykład wpisu hasła użytkownika:
Ustaw katalog domowy użytkownika za pomocą następującego polecenia
Uwaga: W moim przykładzie ten użytkownik jest również prawidłowym użytkownikiem dla niektórych zaplanowanych zadań w systemie Linux. Jeśli nie masz takiej potrzeby, zmień powłokę użytkownika na
/sbin/nologin
zamiastbash
.źródło
/etc/passwd
pliku, która reprezentuje użytkownika o nazwie upload_ftp, 1001: 1001 to jego identyfikator użytkownika i identyfikator grupy, / var / www / sites to katalog domowy użytkownika (i parametr, który vsftpd czyta z) i / bin / bash, powłoka. Prawdopodobnie czego brakuje w Twoim przypadku jest to katalog domowy dla użytkownika, a to może być rozwiązany za pomocą następującego polecenia:usermod -d /var/www/mydomain.com <username>
. Pozdrawiam :)Po zmianie konfiguracji na uwzględnienie
chroot_local_user=YES
Możesz zmienić powłokę użytkownika na, aby w
/usr/sbin/nologin
przypadku wycieku hasła zminimalizować ryzyko (ustaw także katalog domowy). Powłoka musi również znajdować się na liście, w/etc/shells
przeciwnym razie uwierzytelnianie zakończy się niepowodzeniem.https://security.appspot.com/vsftpd/FAQ.txt
źródło
Oto kroki, aby skonfigurować użytkownika i pozwolić mu na dostęp tylko przez FTP (tj. Bez SSH), a także ograniczyć dostęp do określonego katalogu (użytkownika domowego) w proftpd :
Dodaj nowego użytkownika:
adduser newusername
Ustaw hasło:
passwd newusername
Zmień katalog domowy użytkownika z domyślnego na nowy folder:
usermod -d /target/directory username
Edytuj
shells
plik:vi /etc/shells
i dodaj/dev/null
na końcuZmodyfikuj
newusername
wpis wpasswd
pliku:vi /etc/passwd
dodaj/./
przed,newusername
aby wpis wyglądał tak:newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null
Szczegóły kroków 4 i 5 tutaj:
Edytuj
/etc/proftpd/proftpd.conf
plik i odkomentuj linięDefaultRoot ~
źródło
Ustaw uprawnienia do folderu głównego na 711 na swoim koncie root.
źródło
Uruchom to polecenie:
źródło