Hi, ich habe auf einem Ubuntu 20.04 Server vsftpd installiert und einen User angelegt. Ich möchte, dass er, wenn ich mit Filezilla (sftp) zugreife, dass der User NICHT außerhalb von /home/user rumschnüffeln kann. Stand jetzt, er springt bei Filezilla zwar in das gewünschte Verzeichnis, kann aber sich aber überall außerhalb dieser Directory aufhalten. In der /etc/vsftpd.conf habe ich ' chroot_local_user=YES ' und ' local_root=/home/sammy/ftp ' eingetragen/auskommentiert. Leider mache ich das zum ersten mal und die "Erklärungen" im Netz haben zu nix geführt. Vielleicht verstehe ich da fundamental etwas nicht. Kann ich das in der vsftpd.conf überhaupt festlegen? Wenn nein/ wie genau mache ich das? Ich bin kein Linux-guy, bitte kein link oder syntax-Fetzen, wenn dann mit einer kleinen Erläuterung. Sorry schonmal im voraus.
läuft dein sftp-Zugriff überhaupt über den vsftpd? Oder läuft das über den sshd und dessen sftp - Subsystem?
Beitrag #7292102 wurde von einem Moderator gelöscht.
Das themaverfehlende Schlaumeier-Geschreibsel einfach ignorieren.
falls der Zugriff über den sshd läuft:
in der /etc/ssh/sshd_config:
>> Subsystem sftp internal-sftp
und ein
1 | Match User sonstwer |
2 | ChrootDirectory sonstwo |
3 | ForceCommand internal-sftp |
4 | AllowTcpForwarding no |
5 | X11Forwarding no |
Weil du dem ja auch keine Shell oder Portweiterleitungen erlauben willst...
:
Bearbeitet durch User
Εrnst B. schrieb: > Das themaverfehlende Schlaumeier-Geschreibsel einfach ignorieren. Es vefehlt nicht nur das Thema, mir kam das auch bekannt vor. Und siehe da: Beitrag "Re: Ich hasse Windows (schon wieder)"
Εrnst B. schrieb: > Match User sonstwer > ChrootDirectory sonstwo > ForceCommand internal-sftp > AllowTcpForwarding no > X11Forwarding no Hi, danke für die schnelle Antwort. Das hatte ich in der Tat auch schon Match User sammy ChrootDirectory /home/sammy/ftp ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no Dann schlägt aber die Anmeldung in Filezilla fehl.
> ChrootDirectory /home/sammy/ftp
wenn ich das wieder auskommentiere, klappt die Anmeldung wieder
Troll, M.Sc. schrieb: >> ChrootDirectory /home/sammy/ftp > > wenn ich das wieder auskommentiere, klappt die Anmeldung wieder Wie sieht's im Syslog aus?
1 | testftp systemd[1]: Stopping OpenBSD Secure Shell server... |
2 | Dec 20 14:55:15 testftp systemd[1]: ssh.service: Succeeded. |
3 | Dec 20 14:55:15 testftp systemd[1]: Stopped OpenBSD Secure Shell server. |
4 | Dec 20 14:55:15 testftp systemd[1]: Starting OpenBSD Secure Shell server... |
5 | Dec 20 14:55:15 testftp systemd[1]: Started OpenBSD Secure Shell server. |
6 | Dec 20 14:55:19 testftp multipathd[654]: sda: add missing path |
7 | Dec 20 14:55:19 testftp multipathd[654]: sda: failed to get udev uid: Invalid argument |
8 | Dec 20 14:55:19 testftp multipathd[654]: sda: failed to get sysfs uid: Invalid argument |
9 | Dec 20 14:55:19 testftp multipathd[654]: sda: failed to get sgio uid: No such file or directory |
10 | Dec 20 14:55:24 testftp multipathd[654]: sda: add missing path |
11 | Dec 20 14:55:24 testftp multipathd[654]: sda: failed to get udev uid: Invalid argument |
12 | Dec 20 14:55:24 testftp multipathd[654]: sda: failed to get sysfs uid: Invalid argument |
13 | Dec 20 14:55:24 testftp multipathd[654]: sda: failed to get sgio uid: No such file or directory |
14 | Dec 20 14:55:29 testftp multipathd[654]: sda: add missing path |
15 | Dec 20 14:55:29 testftp multipathd[654]: sda: failed to get udev uid: Invalid argument |
16 | Dec 20 14:55:29 testftp multipathd[654]: sda: failed to get sysfs uid: Invalid argument |
17 | Dec 20 14:55:29 testftp multipathd[654]: sda: failed to get sgio uid: No such file or directory |
18 | Dec 20 14:55:30 testftp kernel: [ 6594.846440] [UFW BLOCK] IN=ens160 OUT= MAC=xxx SRC=xxx DST=xxx LEN=36 TOS=0x00 PREC=0x80 TTL=1 ID=154 PROTO=2 |
19 | Dec 20 14:55:34 testftp multipathd[654]: sda: add missing path |
:
Bearbeitet durch Moderator
Dein Syslog-Schnipsel enthält keinen Login-Versuch. Allerdings hat ChrootDirectory noch ein paar Anforderungen an den Pfad, z.B. dürfen alle Pfadelemente nur von Root beschreibbar sein, erst Unterordner darunter dürfen dann Schreibrechte für "sammy" haben. Insofern wirst du deine Verzeichnisstruktur etwas anpassen müssen.
Εrnst B. schrieb: > Dein Syslog-Schnipsel enthält keinen Login-Versuch. > > Allerdings hat ChrootDirectory noch ein paar Anforderungen an den Pfad, > z.B. dürfen alle Pfadelemente nur von Root beschreibbar sein, erst > Unterordner darunter dürfen dann Schreibrechte für "sammy" haben. ja, genau das möchte ich. Dann habe ich das mit Match User und ChrootDirectory darunter nicht verstanden. > Insofern wirst du deine Verzeichnisstruktur etwas anpassen müssen. Ach du lieber Himmel. Wie macht man das?
Troll, M.Sc. schrieb: > Ach du lieber Himmel. Wie macht man das? Versuch erstmal ein ChrootDirectory /home Dann sieht der User zwar die anderen Homedirectories, aber sollte darauf keine Rechte haben. Wenn das geht, kannst du weiterschauen, ob du das Datenverzeichis, auf das er Zugriff haben soll, woanders hinlegen willst.
Beitrag #7292229 wurde von einem Moderator gelöscht.
Εrnst B. schrieb: > Versuch erstmal ein > ChrootDirectory /home Öhm, damit sperrt er sich aber zielsicher aus. Das wird so nicht funktionieren.
Εrnst B. schrieb: > Troll, M.Sc. schrieb: >> Ach du lieber Himmel. Wie macht man das? > > Versuch erstmal ein > ChrootDirectory /home > > Dann sieht der User zwar die anderen Homedirectories, aber sollte darauf > keine Rechte haben. Wenn das geht, kannst du weiterschauen, ob du das > Datenverzeichis, auf das er Zugriff haben soll, woanders hinlegen > willst. Leider das gleiche Ergebnis, dann komme ich nicht mehr rein
Kalle Lauterschwachsinn schrieb: > Εrnst B. schrieb: > >> Versuch erstmal ein >> ChrootDirectory /home > > Öhm, damit sperrt er sich aber zielsicher aus. Das wird so nicht > funktionieren. Und warum? Was ist der richtige Weg? LG
Troll, M.Sc. schrieb: > Kann ich das in der vsftpd.conf überhaupt festlegen? HowTo dazu: https://linuxhint.com/vsftpd_chroot_home_dir/ Da wird das Vorgehen Schritt für Schritt erklärt. Der Parameter chroot_local_user ist schon der richtige Weg dafür. Denke auch daran, jegliche Änderung in der Konfigurtationsdatei dem FTP-Dienst durch
1 | sudo systemctl restart vsftpd |
bekanntzugeben. Sonst bekommt der eine Anpassung der Einstellungen überhaupt nicht mit.
:
Bearbeitet durch Moderator
Gesundes Neues! Frank M. schrieb: > HowTo dazu: https://linuxhint.com/vsftpd_chroot_home_dir/ Ich kenne den Link. Es funktioniert nicht! > Denke auch daran, jegliche Änderung in der Konfigurtationsdatei dem > FTP-Dienst durchsudo systemctl restart vsftpd > bekanntzugeben. Sonst bekommt der eine Anpassung der Einstellungen > überhaupt nicht mit. Hahaha, so dumm bin ich nun auch wieder nicht.
Troll, M.Sc. schrieb: > Ich kenne den Link. Es funktioniert nicht! Natürlich funktioniert das. Aber: das ist ein FTP Server, alles was du darin konfigurierst betrifft nur FTP Clients. Du willst einen SFTP Client verwenden. Also musst du den SFTP Server konfigurieren, und der ist i.A. als Subsystem im SSHD enthalten. Also, Grundproblem: Verstehe die Unterschiede zwischen SFTP, FTP und FTPS.
Troll, M.Sc. schrieb: > Ok, und wie muss ich das nun für SFTP konfigurieren? siehe oben. Oder hier: https://blog.frands.net/sftp-only-chroot-users-with-openssh-in-debian-166/ Und statt dem dort verwendeten "Match Group sftp" kannst du auch das oben beschriebene "Match User sammy" beibehalten.
:
Bearbeitet durch User
Ok, habe ich jetzt so gemacht. Beim Anmelden über sftp erscheint jetzt: "Anmeldungsprotokoll (siehe Sitzungsprotokoll für Details): Benutzername „useruser“ wird verwendet. Anmeldung fehlgeschlagen. "
Troll, M.Sc. schrieb: > Beim Anmelden über sftp erscheint jetzt Und deshalb, wie schon oben geschrieben: schau in den Logfiles nach warum der Login fehlschlägt. Dazu brauchst du den Ausschnitt vom Logfile, der den Login-Versuch enthält. Nicht einfach irgendein Logfile-Schnipsel von irgendwann.
Jetzt funktioniert es, ich hatte ein Fehler im Namen. Filezilla zeigt mir jetzt nur / an. Was an sich ja so sein soll.
Problem jetzt ob über SFTP in Filezilla oder root in Ubuntu: permission denied. Ich werde wie gewünscht ins Directory geschmissen und komme sonst nirgends hin. Ich kann aber weder daten dort reinlegen oder runterladen. Ich habe dann folgendes gemacht: chmod u+w+r /opt/ftp (Besitzer soll schreiben und lesen können chown ftpuser:ftp /opt/ftp (die Gruppe ftp und der User ftpuser sind jetzt Besitzer dieser Directory) das führt dazu, dass ich nicht mehr in Filezille damit durchkomme. log: "fatal: bad ownership or modes for chroot directory "/opt/ftp""
Troll, M.Sc. schrieb: > "fatal: bad ownership or modes for chroot directory "/opt/ftp"" auch das hatten wir oben schon: Εrnst B. schrieb: > Allerdings hat ChrootDirectory noch ein paar Anforderungen an den Pfad, > z.B. dürfen alle Pfadelemente nur von Root beschreibbar sein, erst > Unterordner darunter dürfen dann Schreibrechte für "sammy" haben.
Ich dachte, dass wäre mit der Pfadangabe geregelt. Wie soll ich sowas sonst machen?
so, ich habe jetzt root bist /opt/ftp und in /ftp dann sammy:group. im log steht immer noch bad ownership
Direkt das Chroot - Verzeichnis schreibbar machen geht mit dem openssh-sftp nicht. Meine Lösung wäre: /opt und /opt/sftp nur schreibrechte für Root /opt/sftpd/sammy mit Schreibrechten für sammy. Optional: in der sshd-config ein "default"-Verzeichnis angeben. Viele (nicht alle) SFTP-Programme starten dann automatisch in dem Verzeichnis. Die Verzeichnisangabe ist relativ zum ChrootDirectory und wird als "-d" Parameter zum internal-sftp-Command angegeben. Also in der sshd-config: ForceCommand internal-sftp -d /sammy (oder statt hardcodiertem Pfad: "/%u", das %u wird zum Usernamen) Alternative: Dem user "sammy" in der /etc/passwd ein HOME-dir von "/sammy" einstellen.
:
Bearbeitet durch User
Εrnst B. schrieb: > Direkt das Chroot - Verzeichnis schreibbar machen geht mit dem > openssh-sftp nicht. > Ok, man kann aber sich die Daten aus dem Ordner zeihen, was mir reicht. Danke für deine Hilfe!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.