Ich muss in der Lage sein, virtuelle Benutzer zu vsftpd hinzuzufügen, die nur Zugriff auf einen Unterordner haben. Der Grund, warum ich virtuelle Benutzer verwenden möchte, ist, dass ich nur einen realen Benutzer auf dem Server haben möchte.
Die FTP-Struktur lautet:
www
website_name1
sub_folder1
website_name2
sub_folder2
sub_folder3
website_name3
website_name4
Das Hauptkonto hat Zugriff auf den Ordner www und alle Unterverzeichnisse, und ich möchte einen virtuellen Benutzer hinzufügen, der Zugriff auf den Ordner sub_folder1 und nur auf den Ordner sub_folder1 haben kann
Um Verwirrung zu vermeiden, würde ich auch verlangen, dass ein anderer Benutzer auf sub_folder3 und nur auf sub_folder3 zugreift . Mein Punkt ist, dass ich in der Lage sein muss, den Ordner und die Unterordner auf Benutzerbasis auszuwählen.
Ich habe Möglichkeiten gefunden, Benutzer hinzuzufügen, um die gesamten Struktur- oder Setup-Benutzerordner anzuzeigen, die für mich beide keine Verwendung haben.
Ich habe hier eine ähnliche Frage gefunden:
aber es empfiehlt sich proftpd
das ich zwar allgemein weniger sicher war.
Oder habe ich den Punkt hier verpasst?
quelle
Antworten:
Mit ein bisschen herumspielen habe ich es geschafft, eine halbe Lösung zu finden (nicht perfekt, aber gut genug)
Ich habe mithilfe von 2707974 Antworten und Informationen an anderer Stelle gewonnen, an der ich das bekommen habe, was ich brauche.
Zuerst müssen Sie vsftp und PAM installiert haben
Bearbeiten Sie die Datei /etc/vsftpd.conf
Dann fügen Sie Folgendes ein
Passen Sie die Einstellungen genau Ihren Bedürfnissen an. Das wichtigste Element für virtuelle Benutzer ist alles nach dem Kommentar zu den Einstellungen für virtuelle Benutzer
Benutzer anlegen
Sie können entweder eine Datenbank verwenden oder
htpasswd
ich fandhtpasswd
schneller und einfacher zu bedienen.Erstellen Sie ein Verzeichnis zum Speichern Ihrer Benutzer
Hinzufügen weiterer Benutzer einfach weglassen
-c
Ich habe es nur geschafft, es mit CRYPT zum Laufen zu bringen, das auf 8 Zeichen begrenzt ist , um mehr als 8 Zeichen zu verwenden. Verwenden Sie openssl, um einen kompatiblen Hash und eine Pipeline direkt in htpasswd zu generieren
Sobald Ihre Benutzer erstellt sind, können Sie jetzt Ihre PAM-Konfigurationsdatei ändern
und entfernen Sie alles in dieser Datei und ersetzen Sie durch die folgenden
Dies aktiviert die Anmeldung für Ihre in definierten virtuellen Benutzer
/etc/vsftpd/ftpd.passwd
und deaktiviert lokale BenutzerAls nächstes müssen wir einen Benutzer hinzufügen, den diese virtuellen Benutzer verwenden können. Diese Benutzer haben keinen Zugriff auf die Shell und werden aufgerufen
vsftpd
Der Benutzer muss
guest_username=vsftpd
in der Datei vsftpd conf übereinstimmenVerzeichniszugriff definieren
Die wichtige Zeile hier ist die folgende
Dies bedeutet, dass beim
user1
Anmelden nach der folgenden Datei gesucht wirdDiese Datei entspricht der,
vsftpd.conf
so dass Sie eine neue definieren könnenlocal_root
Zurück zu der Frage, auf die wir
user1
nur Zugriff haben möchtenvar/www/website_name1/sub_folder1
, also müssen wir denvsftpd_user_conf
Ordner erstellen :Erstellen Sie nun die Benutzerdatei:
und geben Sie die folgende Zeile ein
Starten Sie nun vsftp neu
Sie sollten sich jetzt als Benutzer1 anmelden können, der nur
var/www/website_name1/sub_folder1
Ordner und Dateien darin sehen kann.Nun können Sie so viele Benutzer hinzufügen, wie Sie möchten, und deren Zugriff auf einen beliebigen Ordner beschränken.
Wichtig: Wenn Sie keine Benutzer-Konfigurationsdatei erstellen, wird standardmäßig der Ordner var / www als Stammverzeichnis verwendet (im obigen Beispiel).
Wenn der Unterordner vom Benutzer geändert werden soll, muss möglicherweise der Eigentümer des freigegebenen Unterordners geändert werden:
quelle
Versuchen Sie es mit diesem Handbuch. Vielleicht wird für Sie arbeiten.
Wie es geht
Installieren Sie vsftpd und eine PAM-Bibliothek
Bearbeiten
/etc/vsftpd.conf
und/etc/pam.d/vsftpd
Erstellen Sie Benutzerkonten mit benutzerdefinierten Verzeichnissen (z. B. in / var / www /).
Stellen Sie die Verzeichnisse mit dem richtigen
chmod
und einchown
Erstellen Sie einen Administrator mit vollem Zugriff auf den Server
vsftpd
(Very Secure FTP Deamon) undlibpam-pwdfile
erstellen Sie virtuelle BenutzerIch wollte FTP-Benutzer erstellen, aber keine lokalen Unix-Benutzer hinzufügen (kein Shell-Zugriff, kein Home-Verzeichnis usw.). Ein PAM (Pluggable Authentication Modules) unterstützt Sie beim Erstellen virtueller Benutzer.
sudo apt-get install vsftpd libpam-pwdfile
vsftpd.conf
Zuerst müssen Sie die Originaldatei sichern
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
Dann erstelle eine neue
sudo vim /etc/vsftpd.conf
Kopieren Sie die folgenden Zeilen und fügen Sie sie ein. Die Datei sollte NUR diese Zeilen enthalten:
Um einen Benutzer zu registrieren, den Sie verwenden
htpasswd
, gehe ich davon aus, dass Sieapache2
auf Ihrem Server arbeiten. Erstellen Sie einenvsftpd
Ordner und speichern Sie die Konfigurationsdateien.sudo mkdir /etc/vsftpd
dann
sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1
-c bedeutet, dass wir die Datei erstellen, wenn sie noch nicht existiert. -d erzwingt MD5. Sie benötigen sie unter Ubuntu 12.04. Verwenden Sie sie einfach immer
Der Befehl fordert zur Eingabe eines Kennworts auf.
Wenn Sie später neue Benutzer hinzufügen möchten:
sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2
/etc/pam.d/vsftpd
Auch hier müssen Sie die Originaldatei sichern
sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
und erstelle eine neue
sudo vim /etc/pam.d/vsftpd
Kopieren Sie diese 2 Zeilen und fügen Sie sie ein (dies sollte der einzige Inhalt sein). Ich bestehe nur auf diesen 2 Zeilen, habe viel Zeit mit dem Aufbewahren der Originale verschwendet und diese einfach hinzugefügt.
sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
Sie können überprüfen, ob es mit dem Befehl id erstellt wurde: id vsftpd. Wir definieren den Benutzer mit der / bin / false-Shell aufgrund des check_shell-Parameters (auch wenn Sie ihn nicht verwenden). Wenn der Endbenutzer eine Verbindung zum FTP-Server herstellt, wird er für Rechte und Eigentum verwendet:
chmod
undchown
.vsftpd
Der übliche Weg ist, init.d wie all deamon zu verwenden
sudo /etc/init.d/vsftpd restart
sudo service vsftpd restart
Je nach Konfiguration werden alle Benutzer in diesen Ordner gestellt: / var / www / user1.
Sie müssen sie mit bestimmten Rechten erstellen: Der Stammordner kann nicht beschreibbar sein!
Hinweis: Der Benutzer kann keine Dateien oder Ordner im Stammverzeichnis erstellen.
In
vsftpd.conf
we havechroot_local_user=YES
kann der Benutzer also nichts außerhalb seines Ordners sehen. Für ihn sieht der Server so aus:Führen Sie einfach die folgenden Befehle aus:
Der
/var/www/user1
Ordner MUSS existieren oder die Verbindung schlägt fehl.Im Moment können Sie versuchen, eine Verbindung mit Ihrem FTP herzustellen
Um einen Admin-Benutzer zu erstellen, müssen wir einen neuen Benutzer bei registrieren
htpasswd
.Bevor wir dies tun, empfehle ich Ihnen, in die
/etc/ftpusers
Datei einzuchecken, in der bestimmte Benutzer definiert sind, die keine Verbindung mit ftp herstellen dürfen. Ich denke, es ist nur für lokale Benutzer und nicht für virtuelle Benutzer, aber nur für den Fall, wählen Sie keinen Namen in dieser Datei.sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin
Jetzt müssen wir eine neue Zeile hinzufügen
/etc/vsftpd.conf
chroot_list_enable=YES
Dies bedeutet, dass Ihr Benutzer in seinem Ordner (als Gefängnis) AUSSER Benutzern in der Datei / etc / abgelegt wird.
vsftpd.chroot_list
Lassen Sie uns diese Datei erstellen und unseren Benutzer hinzufügen. Die Datei ist eine einfache Zeile, die "theadmin" enthält. Fügen Sie einen Benutzer pro Zeile hinzu. Das bedeutet, dass Sie KEINEN
/var/www/theadmin
Ordner erstellen müssen , der Benutzer wird sich anmelden und in starten/home/vsftpd
.Starten Sie den Server neu und fertig!
quelle
Ja, Sie können aus Gründen der Flexibilität ein Verzeichnis und eine Datei
mkdir /var/www/userconfs
für die Benutzerkonfiguration erstellen oder den Namen der Benutzerkonfiguration ändern und dann eine bestimmte Datei erstelleninside type
local_root=/var/www
(oder was auch immer du von dir aus erreichen willst)guest_username=www-data
(der Ubuntu-Besitzer der Datei top editNach dem Update musst du vsftpd.conf hinzufügen
user_config_dir=/var/www/userconfigs
(oder was auch immer du ersetzt hast, dieses Konto greift auf das angegebene Verzeichnis zu).quelle