Beschränken Sie den FTP-Zugriff mit vsftpd nur auf / var / www

41

Ich verwende vsftpd als FTP-Server auf meinem Linux (rasbian) und melde mich als Root-Benutzer auf dem Computer an.

Ich möchte weiterhin nur / var / www verwenden. Wie kann ich vsftpd conf konfigurieren, um dies zu erreichen?

Badr Hari
quelle
1
Aktivieren Sie die chroot Optionen in vsftpd.confund erstellen Sie einen separaten Benutzer, dessen Homedir auf festgelegt ist /var/www.
Jirib

Antworten:

65

Methode 1: Ändern des Basisverzeichnisses des Benutzers

Stellen Sie sicher, dass die folgende Zeile vorhanden ist

chroot_local_user=YES

Setzen Sie das Benutzerverzeichnis auf /var/www/, wenn Sie das Benutzerverzeichnis für vorhandene Benutzer ändern möchten, können Sie Folgendes verwenden:

usermod --home /var/www/ username

Setzen Sie dann die erforderliche Berechtigung auf /var/www/

Methode 2: Verwenden Sie user_sub_token

Wenn Sie das Basisverzeichnis des Benutzers nicht ändern möchten, können Sie Folgendes verwenden:

chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER

Über user_sub_token:

Erstellen Sie automatisch ein Basisverzeichnis für jeden virtuellen Benutzer basierend auf einer Vorlage. Wenn beispielsweise das Ausgangsverzeichnis des über guest_username angegebenen realen Benutzers / ftphome / $ USER lautet und user_sub_token auf $ USER festgelegt ist, wird der virtuelle Benutzer beim Anmelden (in der Regel chroot () 'ed) angemeldet das Verzeichnis / ftphome / test. Diese Option wirkt sich auch aus, wenn local_root user_sub_token enthält.

Verzeichnis erstellen und Berechtigungen einrichten:

mkdir -p /ftphome/{test,user1,user2}
chmod 770 -R /ftphome
chown -R ftp. /ftphome
usermod -G ftp test

Einmal neu starten vsftpdund testen Sie Ihr Setup.

Beispiel für eine erfolgreiche Ausgabe:

[root@mail tmp]# ftp localhost
Connected to mail.linuxian.local.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mput vhosts
mput vhosts? 
227 Entering Passive Mode (127,0,0,1,146,41)
150 Ok to send data.
226 File receive OK.
24 bytes sent in 3.3e-05 seconds (7.1e+02 Kbytes/s)
ftp> ls -rlt
227 Entering Passive Mode (127,0,0,1,97,90)
150 Here comes the directory listing.
-rw-r--r--    1 787      787            24 Oct 11 19:57 vhosts
226 Directory send OK.
ftp> 221 Goodbye.
Rahul Patil
quelle
2
Beachten Sie, dass Sie nach $USERfor ein Suffix setzen können local_root, z. B. /home/$USER/ftp(wodurch Benutzer in das ftpUnterverzeichnis ihres Ausgangsverzeichnisses verschoben werden).
Benoit Duffez
Beachten Sie die Anmerkungen in den vsftp-FAQ zum Chrooting in einen Ordner, der vom Benutzer angemeldet werden kann. Dies ist sehr wahrscheinlich, wenn local_rootder Benutzer in das tatsächliche Home-Verzeichnis wechselt.
Thomas Urban
Wo kann bestätigt werden, dass "chroot_local_user = YES" vorhanden ist?
Der Eine
4

Du kannst das:

usermod --home /var/www/ username
Zeev Cohen
quelle
5
Ein bis zwei Zeilenantworten gelten oft als minderwertig. Bitte erwägen Sie, Ihren Beitrag mit einer Erläuterung der Funktionsweise Ihrer Empfehlung sowie mit Links oder Dokumentationen zu erweitern, die auf die Fähigkeit Ihrer Empfehlung hinweisen, das Problem tatsächlich zu lösen.
HalosGhost
2

Ich habe Rahul Patils obigen Vorschlag benutzt:

chroot_local_user=YES
local_root=/home/$USER/www-data
user_sub_token=$USER

Aber ich konnte nicht verstehen, warum ich mich nur mit einem Benutzer anmelden konnte. Dann stellte ich fest, dass wir nicht in ein Stammverzeichnis chrooten konnten (in diesem Fall /home/$USER/www-data), das über Schreibzugriff verfügt. Also entferne ich den Schreibzugriff mit:

# chmod a-w /home/$USER/www-data

HINWEIS: Ändern Sie dies $USERmit Ihrem Benutzer.

Rizal Rahman
quelle
1

Aktivieren Sie die chrootOptionen in vsftpd.confund erstellen Sie einen separaten Benutzer, dessen Homedir auf festgelegt ist /var/www.

jirib
quelle
Ich bin mir dessen bewusst, ich werde einen separaten Benutzer erstellen. Ich sollte dann vielleicht meine Frage umgestalten, wie ich einen Benutzer darauf beschränken kann, nur den
Badr Hari
Verwenden Sie SFTP von OpenSSH. Siehe man sshd_config für internal-sftp, dann 'ForceCommand' und siehe 'ChrootDirectory'. Neueres OpenSSH fügte auch die Option hinzu, dass SFTP-Server zu einem bestimmten Pfad wechseln kann, sodass Sie in Kombination mit ChrootDirectory Folgendes tun können: chroot -> / path -> destination -> 'onlyhere' = / chroot / onlyhere
jirib 11.10.13