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?
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 ein1 | |
2 | |
3 | |
4 | |
5 | |
Weil du dem ja auch keine Shell oder Portweiterleitungen erlauben willst...
Ε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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
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.
Ε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 | |
bekanntzugeben. Sonst bekommt der eine Anpassung der Einstellungen überhaupt nicht mit.
Gesundes Neues!
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.
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.
Ok, und wie muss ich das nun für SFTP konfigurieren?
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.
Ok, habe ich jetzt so gemacht. Beim Anmelden über sftp erscheint jetzt:
"Anmeldungsprotokoll (siehe Sitzungsprotokoll für Details): Benutzername „useruser“ wird verwendet.
Anmeldung fehlgeschlagen. "
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""
"fatal: bad ownership or modes for chroot directory "/opt/ftp""
auch das hatten wir oben schon:
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.
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!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.