Suche sehr einfachen FTP-Server für Linux

CyborgBeta

Captain
Registriert
Jan. 2021
Beiträge
3.122
Nabend. Ich suche einen sehr einfachen, sicheren FTP-Server für Linux, mit den folgenden zwei Anforderungen:

  • Es soll nur ein Verzeichnis + Unterverzeichnisse (- symbolic links) freigegeben sein
  • Es soll nur ein Benutzer erlaubt sein (der für den Login ein anders Pwd hat als der normale Benutzer)

Gibt es so etwas?

... Alternativ... kann ich auch eine zweite SSHd-Instanz auf einem anderen Port starten, die nur einen Benutzer erlaubt? Oder beißt sich dann die Katz?
 
Du könntest im SSH-Server die Anmeldung per keypair einfordern und nur diesem einen Benutzer einen public key hinterlegen. Allerdings ist er dann noch nicht "gefangen" in seinem $HOME und erst recht nicht in einem einzelnen Verzeichnis, weiß nicht ob das geht.
 
  • Gefällt mir
Reaktionen: CyborgBeta
Hm, die Sache hat leider einen Haken... Ich muss zu viele Ports öffnen.

Code:
  ftpd:
    image: stilliard/pure-ftpd
    init: true
    stop_grace_period: 1m
    environment:
      - PUBLICHOST=localhost
      - FTP_USER_NAME=k
      - FTP_USER_PASS=myppass
      - FTP_USER_HOME=/home/k
    volumes:
      - ./pure-ftpd/data:/home/k/
      - ./pure-ftpd/passwd:/etc/pure-ftpd/passwd/
    labels:
      - "traefik.enable=true"
      - "traefik.tcp.routers.ftpd.rule=HostSNI(`*`)"
      - "traefik.tcp.services.ftpd.loadbalancer.server.port=21"
      - "traefik.tcp.routers.ftpd.entrypoints=ftpd"
      - "traefik.tcp.routers.ftpd.tls=false"

Das steht derzeit in der compose...

Es funktioniert alles bis zu dem Punkt, an dem der FTP-Client Tonnen an passiven Ports braucht, die aber nicht geöffnet sind.

Das ist noch nicht das Gelbe vom Ei.
 
deswegen sftp, das braucht nur einen port.
 
  • Gefällt mir
Reaktionen: konkretor, up.whatever und CyborgBeta
Ja, da hast du vollkommen recht...

Problem gelöst:

Code:
  sshd:
    image: takeyamajp/debian-sshd
    environment:
      - TZ=Europe/Berlin
      - ROOT_PASSWORD=wichtig
    volumes:
      - ./test-data-1/:/data1/
    labels:
      - "traefik.enable=true"
      - "traefik.tcp.routers.sshd.rule=HostSNI(`*`)"
      - "traefik.tcp.services.sshd.loadbalancer.server.port=22"
      - "traefik.tcp.routers.sshd.entrypoints=sshd"

läuft auch schon ... sftp://root@blaaaa.tld:port

Im Prinzip kann sich der Benutzer nun in einer Sandbox austoben.

Hab ich jetzt noch etwas übersehen? (Frage an alle)
 
man kann sich neben sftp auch mit ssh einloggen und hat zugriff auf dein netz aus dem docker-container heraus? eher uncool.
 
0x8100 schrieb:
und hat zugriff auf dein netz aus dem docker-container heraus?
stimmt, daran hatte ich nicht gedacht. nicht nur auf mein netz... auf das ganze www...

andererseits geht es nur um einen Benutzer, und den Host sollte er von dort aus nicht "kaputtmachen können" ;)
Ergänzung ()

Aber ich bin ganz Ohr für noch andere Vorschläge...
 
Würde gehen... kommt mir etwas wie "bleeding edge" und umständlich vor... Hätte man das in Linux/Unix nicht besser machen können?

Thema gelöst. :) Danke
 
Zuletzt bearbeitet:
Ist es ein Linux Server der bei dir zuhause steht ? Sonst kannst du auch einfach einen USB Stick in deinem Router zum FTP Laufwerk machen
 
Ne, steht nicht bei mir Zuhaus.

Aber es hat sich schon erledigt. Mir ist noch eine Möglichkeit eingefallen: einfach einen Webserver für ein Verzeichnis starten... Der Nachteil ist nur, dass dann nichts mehr "hochgeladen" werden kann, also die Kommunikation sozusagen unidirektional wäre. ;)
Ergänzung ()

Gibt es eigentlich noch andere Filesharingprotokolle, für nur ein Verzeichnis?
 
Zuletzt bearbeitet:
CyborgBeta schrieb:
Der Nachteil ist nur, dass dann nichts mehr "hochgeladen" werden kann, also die Kommunikation sozusagen unidirektional wäre.
Naja. HTTP kennt auch PUT. Darauf basieren ja diese ganzen HTTP-based Netzlaufwerk-Geschichten die sich unter dem WebDAV versammeln.
Die gängigen Webserver (Apache, nginx und wie sie alle heißen) bieten dazu auch die entsprechenden Module/Funktionalitäten. Der Vorteil ist, das Du es dann mit anderen Webservermechanismen (Authentifikation, Verschlüsselung etc.) kombinieren kannst, es Firewall-friendly ist und auch für ziemlich jedes Endgerät Clients existieren und oftmals sogar schon out-of-box funktioniert.
 
andy_m4 schrieb:
und auch für ziemlich jedes Endgerät Clients existieren
Der entsprechende User hat nur ein Smartphone, auf dem zurzeit nur ein Webbrowser installiert ist...

Zurzeit biete ich einfach nur ein Verzeichnis an, geschützt mit SSL und HTTP-Basic-Auth. Das übernimmt Traefik alles. Leider meckert sein Webbrowser manchmal und startet den Download manchmal nicht. Ich hab noch nicht herausgefunden, woran das liegt. Am Computer funktioniert alles problemlos.

Könntest du da etwas genauer werden, welche App er dafür braucht, und auch, wie der nginx konfiguriert werden sollte?

GET, POST, PUT und DELETE sagt mir etwas, aber ich dachte, zu 99 % wird heute nur noch GET genutzt.
 
CyborgBeta schrieb:
Zurzeit biete ich einfach nur ein Verzeichnis an, geschützt mit SSL und HTTP-Basic-Auth.
bye the way: Wenn es nur darum geht ein Verzeichnis/Dateien (zum reinen Download) zur Verfügung zu stellen, funktioniert meiner Erfahrung nach miniserve ganz gut.

CyborgBeta schrieb:
Könntest du da etwas genauer werden, welche App er dafür braucht
Ich bin jetzt nicht der große Smartphone-Kenner. Ich denk mal, wenn man mit den Begriffen Android WebDAV "googelt", dann findet man da ausreichend zu.

CyborgBeta schrieb:
wie der nginx konfiguriert werden sollte?
Auch dazu findet man eigentlich genügend Material.
 
andy_m4 schrieb:
Wenn es nur darum geht ein Verzeichnis/Dateien (zum reinen Download) zur Verfügung zu stellen, funktioniert meiner Erfahrung nach miniserve ganz gut

Ja super, hat geklappt...

Hab mir dazu ein Dockerfile geschrieben:

Code:
FROM debian:12

RUN apt -y update && apt -y install wget
RUN wget https://github.com/svenstaro/miniserve/releases/download/v0.26.0/miniserve-0.26.0-x86_64-unknown-linux-gnu
RUN mv miniserve-0.26.0-x86_64-unknown-linux-gnu miniserve
RUN chmod +x miniserve

CMD ./miniserve --auth joe:123 toserve/

und in die docker-compose.yml eingetragen:

Code:
  miniserve:
    build: ./miniserve-dockerfile
    init: true
    stop_grace_period: 1m
    volumes:
      - /home/.../:/toserve/
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.miniserve.rule=Host(`...tld`)"
      - "traefik.http.services.miniserve.loadbalancer.server.port=8080"
      - "traefik.http.routers.miniserve.entrypoints=websecure"
      - "traefik.http.routers.miniserve.tls.certresolver=myresolver"

Im Prinzip ist es aber das, was ich auch schon hatte... aber ich kann mal schauen, ob der Download vom Android aus nun besser funktioniert.
 
Ach, Sorry, der erfüllt auch alle Anforderungen:

https://filebrowser.org/installation

Funktioniert über HTTP(S), ich brauche also keinen raw TCP Port mehr öffnen... Hat eine Dateivorschau-Funktion, Down- und Upload-Funktion, Login, Suche uvm.

Danke noch einmal an alle, die hier geantwortet hatten.

Hier mal ein Screen:

1705221683057.png
 
Zurück
Oben