Erstellen Sie einen neuen vsftpd-Benutzer und sperren Sie ihn in das Verzeichnis home / login (geben Sie es an)

31

Ich muss regelmäßig temporären und eingeschränkten Zugriff auf verschiedene Verzeichnisse auf einem CentOS-Linux-Server gewähren, auf dem vsftp installiert ist.

Ich habe mit einen Benutzer angelegt useradd [user_name]und ihm mit ein Passwort gegeben passwd [password].

Ich habe ein Verzeichnis in erstellt /var/ftpund binde dieses dann an das Verzeichnis, auf das ich den Zugriff beschränken möchte.

Was muss ich sonst noch tun, um sicherzustellen, dass dieser Benutzer, wenn er sich bei FTP anmeldet, nur Zugriff auf dieses Verzeichnis hat?

zigojacko
quelle
Entschuldigung, aber haben Sie jemals darüber nachgedacht, vsftpd.conf zu überprüfen?
Jirib
Ja. Ich habe. Es sagt mir nicht, wie ich einen bestimmten Benutzer anweisen soll, sich in einem bestimmten Verzeichnis anzumelden ...?
Zigojacko
1
Sicher? Option chroot_list_enable ... Oder möchten Sie ein anderes Verzeichnis als $ HOME überschreiben?
Jirib
1
Ich möchte wissen, wie ein bestimmtes Basisverzeichnis für einen bestimmten Benutzer deklariert wird. Ich habe aktiviert chroot_list_enableund erstellt /etc/vsftpd/chroot_list. Ich wusste einfach nicht, was ich als nächstes tun sollte.
Zigojacko
Dann usermod, um das Homedir des Benutzers zu ändern.
Jirib

Antworten:

44

Vollständige Antwort, die meine Frage für alle anderen löste, die nach einer schrittweisen Anleitung sind ...

Installieren Sie vsftpdmit dieser Anleitung .

  • Benutzer anlegen mit useradd [user_name].
  • Benutzerpasswort erstellen mit passwd [user_name]. (Sie werden aufgefordert, das Kennwort anzugeben.)
  • Erstellen Sie ein FTP-Verzeichnis in /var/ftpund binden Sie es an das 'Home'-Verzeichnis, das Sie für diesen Benutzer angeben möchten mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/.
  • Ändern Sie das Benutzerverzeichnis mit usermod -d /var/ftp/custom_name/ user_name

    Stellen Sie /etc/vsftpd/vsftpd.confsicher, dass alle der folgenden Einstellungen vorgenommen wurden:

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

Listen Sie Benutzer in der vsftpd.chroot_listDatei nur auf, wenn Sie möchten, dass sie vollen Zugriff auf eine beliebige Stelle auf dem Server haben. Indem Sie sie nicht in dieser Datei auflisten, möchten Sie alle vsftpdBenutzer auf das angegebene Basisverzeichnis beschränken .

Mit anderen Worten (als Referenz):

  1. bedeutet, dass standardmäßig ALLE Benutzer mit Ausnahme der Benutzer in der Datei "chroot" werden ...
    • chroot_local_user = YES
    • chroot_list_enable = YES
  2. bedeutet, dass standardmäßig NUR Benutzer in der Datei gechrootet werden ...
    • chroot_local_user = NO
    • chroot_list_enable = YES
zigojacko
quelle
Warum nicht das Home-Verzeichnis dieses Benutzers direkt einstellen /var/www/vhosts/domain.com/? Gibt es ein Problem damit (wie etwa mögliche Risiken)?
Leemes
2
Ich habe gerade herausgefunden, dass vsftp es anscheinend verbietet, einem FTP-Benutzer aus Sicherheitsgründen Schreibrechte auf der obersten Chroot-Ebene zu gewähren (aber ich bin mir nicht zu 100% sicher). Das könnte also ein Grund sein, diese "Indirektion" zu verwenden, um dem FTP - Benutzer Schreibzugriff auf einen bestimmten Ordner zu gewähren, ohne dass er einen gleichrangigen Ordner anzeigen kann (was der Fall wäre, wenn Sie einfach sein Zuhause auf einer Ebene einrichten, auf der vermeidet das erwähnte Problem). (siehe ubuntuforums.org/… )
leemes
2
@zigojacko sieht Ihr Benutzer nur das ihm zugewiesene Heimatverzeichnis? Für mich ist der Benutzer standardmäßig auf das zugewiesene Verzeichnis eingestellt, kann jedoch weiterhin andere Ordner anzeigen und bis zum Stammverzeichnis herumschnüffeln, allerdings nur mit Lesezugriff.
GraehamF
1
Diese Antwort in Kombination mit unix.stackexchange.com/questions/208960/… war die vollständige Antwort für mich. Am Ende habe ich einen Benutzer in einer Gruppe erstellt und den Gruppenzugriff auf das gewünschte Verzeichnis beschränkt.
GraehamF
10

Bei mir hat es auch danach nicht geklappt. Es wurde bereits ein lokales Stammverzeichnis für ein Verzeichnis festgelegt, und was auch immer ich tue, das Benutzerverzeichnis ist nicht inhaftiert. Endlich wird es erst nach geändertem gearbeitet

chroot_local_user = YES

Und folgende Prozedur

  1. vi /etc/vsftpd.conf
  2. Fügen Sie die Zeile 'user_config_dir = / etc / vsftpd_user_conf' hinzu (keine Anführungszeichen)
  3. mkdir / etc / vsftpd_user_conf;
  4. cd / etc / vsftpd_user_conf
  5. vi benutzername;
  6. Geben Sie die Zeile 'local_root = / srv / ftp / user_name' ein.

Nur meine zwei Cent, wenn jemand das gleiche Problem hätte.

gnaanaa
quelle
Ich habe dieses Verfahren befolgt, um das Stammverzeichnis von vsftpd zu ändern, einschließlich der zusätzlichen Schritte von gnaanaa. Leider funktioniert es noch nicht. Filezilla meldet, dass 530 Login falsch ist. Der Benutzer und das Kennwort entsprechen der oben beschriebenen Vorgehensweise (Benutzername). Ich habe einen Testbenutzer ftp2 erstellt und sein Passwort festgelegt. Die normale Anmeldung bei Filezilla verwendet diesen Benutzernamen und dieses Kennwort. Ich habe auch das Root-Verzeichnis als schreibgeschützt festgelegt und gemäß diesem Beitrag ein untergeordnetes Verzeichnis mit Schreibrechten erstellt. Ich verwende Ubuntu 16.04, wenn dies einen Unterschied macht.
tim11g
Ich verwende Ubuntu 16.04, wenn das einen Unterschied macht, @gnaanaa. Auch fand ich es seltsam, dass es in / var kein FTP-Verzeichnis gab. Also musste ich / var / ftp und dann / var / ftp / benutzername erstellen. code<br/> Antwort: 220 (vsFTPd 3.0.3) <br/> Befehl: USER ftp2 <br/> Antwort: 331 Bitte geben Sie das Passwort an. <br/> Befehl: PASS ***** <br/> Antwort : 530 Anmeldung falsch. <br/> Fehler: Kritischer Fehler: Verbindung zum Server konnte nicht hergestellt werden <br/>code
tim11g
Überprüfen Sie zunächst, warum Sie sich nicht beim Server anmelden konnten. Sie können das Problem mit Jailing erst nach erfolgreicher Anmeldung beheben. Prost.
Gnaanaa
Verwendet vsftp einen anderen Benutzer / ein anderes Kennwort als die Konten auf dem Computer? Ich entdeckte, dass smb-Passwörter mit smbpasswd -a separat festgelegt werden mussten. Funktioniert vsftpd genauso?
tim11g
Nein, es ist das Systembenutzerkonto. Überprüfen Sie diese Antwort: askubuntu.com/questions/413677/vsftpd-530-login-incorrect
gnaanaa