Benutzer ohne Rechte für "anonymen" FTP Zugang.

Autokiller677

Semiprofi
Thread Starter
Mitglied seit
09.06.2009
Beiträge
1.161
Hallo Community,

folgende Situation: Ein Server (Ubuntu 9.10 Server), FTP Client ist vsftpd. Per FTP können sich alle lokalen Benutzer einloggen (local_enable=YES)

Alle Verzeichnisse, die über FTP zugänglich sind, sind auch im Netzwerk mit Samba freigegeben und des Komforts wegen schreibbar für alle.

Nun zum Problem: Ich möchte nun für mein "Transfer" Verzeichnis einen FTP Zugang einrichten, damit ich Leuten aus der Schule etc. einfach Dateien zukommen lassen kann, die größer als 20MB sind (da macht mein Mailaccount bei Anhängen dicht).

Da es aber immer wieder Witzbolde gibt, die meinen mir dann da einen Scherzvirus oder so hochladen zu müssen, würde ich gerne für den User "Transfer" nur Leserechte für das Verzeichnis vergeben. Gleichzeitig soll es aber für alle anderen schreibbar bleiben (da Samba freigegeben).

Meinetwegen kann der User auch nur Leserechte für alles bekommen und auch ansonsten total eingeschränkt sein, denn er wird für nix anderes als diese eine FTP Freigabe benötigt.

Klar liese sich das über einen anonymen Zugang erreichen, aber dann kann sich jeder, der die Serveradresse rausbekommt einloggen, und das muss nicht sein.

Wie kann ich also diesem einem User alle Rechte bis aufs Lesen entziehen?

Vielen Dank im Vorraus,
Autokiller677
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Dazu fügst du am besten alle deine lokalen Clients mit vollen Rechten zu einer neuen Gruppe hinzu:

addgroup voll
für jeden lokalen user:
adduser user voll

Dann:
sudo adduser --shell /bin/false transfer
sudo -u transfer mkdir /home/transfer/ftp


Damit wäre der User und sein Verzeichnis erstellt.

Um diesem user jetzt nicht die Rechte in seinem home-dir wegnehmen, machen wir folgendes:

sudo mkdir /transfer
sudo chown :voll -R /transfer
sudo chmod -R 775 /transfer


Damit erhält der Eigentümer sowie die Gruppe 'voll' lese- und schreibrechte für diesen ordner.

Nun müssen wir den Ordner noch ins home-Verzeichnis von transfer weiterleiten:

sudo mount --bind /transfer /home/transfer/ftp

Dies solltest du dann auch in der /etc/fstab festhalten, der eintrag sollte dann so aussehen:

/transfer /home/transfer/ftp none bind 0 0

Damit kannst du den ftp-user transfer in seinem home-verzeichnis einsperren, bzw. am besten im ordner ftp von seinem home-verzeichnis (ob das mit vsftp geht weiß ich leider nicht) und er hat nur leserechte ;)

mfg
foxxx :wink:
 
Hmm...
Danke für deinen Tipp, so hab ich es jetzt gemacht, klappt auch ganz gut.

Allerdings ist mir gerade die ganze Kiste abgeschmiert (memo an mich selbst: rumprobieren nur in den VMs) also werd ich noch mal neu installieren, diesmal auf 8.04LTS Basis und mit einer GUI, dann kann ich a) Proftpd mit Gadmin nutzen (deutlich komfortabler) und b) ist es deutlich komfortabler wenn man lange Befehle einfach aus dem Internet kopieren kann statt sie abtippen zu müssen.
 
abtippen ?
Putty kann auch Copy&Paste ;)

Einfügen geht in der aktiven SSH-Sitzung von Putty mit SHIFT+Einfg. :bigok:

Auf einen Server gehört keine GUI !

Bei proftpd kann ich dir auch mehr helfen. Da würde ich dir dann Auth per Datei oder mysql-db empfehlen (letzteres wahrscheinlich etwas übertrieben für dich).
Dort regelst du, sofern gewünscht, die Anmeldung separat in einer Datei.

Dann kannst du jedem FPT-Benutzer ein eigenes home-Verzeichnis geben und festlegen, welche UID und GID er vom lokalen System benutzen soll, damit kannst du die Rechte dann sehr gut verwalten:

adduser --no-create-home --disabled-login --shell /bin/false transfer
id transfer
<-- UID und GID merken

Wie im vorigen Post beschrieben erstellst du aber am besten auch eine neue Gruppe für deine vollberechtigen User, und dann:

ftpasswd --passwd --file /etc/proftpd/ftpd.passwd --name transfer --uid <uid of transfer> --gid <gid of transfer> --home /transfer --shell /bin/false

Danach kommt ein Passwort-Abfrage wo du das einstellen kannst.

In der proftpd.conf musst du dann noch folgende Werte ändern, bzw. Zeilen hinzufügen:

RequireValidShell off
AuthOrder mod_auth_file.c
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off


Damit sollte dann alles möglich sein wie du möchtest ;)

Aber eine GUI würde ich dir definitiv nicht empfehlen, das frisst zuviel Leistung und ist einfach überflüssig ;)

mfg
foxxx :wink:
 
Zuletzt bearbeitet:
Ich hab jetzt einfach mal eine GUI installiert, und da der Server außer Samba und FTP, hin und wieder etwas Mediastreaming eh nix zu tun hat merke ich von fehlender Performance eh nix. Jetzt sind statt 10 20% Ram belegt und die CPU Auslastung liegt bei 30%, wenn ich per Samba und FTP Datenkopiere und Musik über iTunes streame, dazu noch VNC Zugriff übers Netzwerk. Damit kann ich ganz gut leben, zumal ein Server für mich eh ein kleines bisschen oversized ist, da ich wie schon gesagt, nur Dienste laufen hab die auch ein kleines Streaminggerät übernehmen könnte. Nicht mal ein Raid ist drin da zu teuer.

Allerdings hab ich so (fällt mir grad positiv auf) auch einen Ersatzrechner wenn ich an meinem Haupt PC mal wieder rumbastel und muss nicht immer den Laptop meiner Eltern nehmen:d

Zudem muss ich zugeben, dass ich in Linux noch ein ziemlicher Grünschnabel bin und für mich mit einer GUI einfach einiges noch einfacher ist, aber ich werds erst mal mit der Userlist Datei probieren, denn eigentlich hatte ich mir vorgenommen, ohne GUI auszukommen, vielleicht fliegt sie ja später auch wieder raus.

Putty bzw. SSH habe ich bisher noch nicht genauer angeguckt, außer SFTP, da ich im internen Netzwerk mit tightvnc bestens bedient bin und von außerhalb nicht mehr als SFTP Zugriff brauche.

Generell ist im Moment alles noch ein bisschen verwirrend, besonders bei der Ordnerhierachie blicke ich als bisheriger Windowsnutzer gar nicht durch. Wenn in den Tutorials nicht immer stehen würde wo welche Datei ist wäre ich verloren:d.
 
Zuletzt bearbeitet:
Ok, also Putty = SSH Client, sollte bei dir neues Haupttool werden ;)

Damit kannste dich von Windoof aus per SSH auf deinem Server einloggen, sofern "openssh-server" installiert ist.

Somit brauchst du am Server weder Tastatur, noch Maus und schon gar keinen Monitor mehr dranhaben.

Außerdem kannst du Copy&Paste nutzen, was dir eventuell auch ne Menge deiner bisherigen Arbeit abgenommen hätte :shot:

Falls du allerdings für bestimmte Sachen zwingend eine grafische Ausgabe brauchst, kann man das auch eleganter mit einem virtuellen Xserver lösen.
Dazu kannst du dir Xvfb mal anschauen. In Verbindung mit x11vnc erstelle ich meinen Xserver damit nur virtuell und die Ausgabe wird direkt und nur per VNC rausgeschickt.
Wenn man dann noch eine "leichte" GUI wie Xfce4 nimmt, spart das ganze enorm Ressourcen ;)

Ansonsten heißt es einfach try&error, wobei sich bei dir erstmal eine VM empfehlen würde, um deinen Server nicht wieder kaputtzuspielen.
In den Einstellungen der VM solltest du dann den Netzwerkadapter von "NAT" (meistens standard) auf "bridged" o.ä. umstellen, damit kannst erscheint deine VM wie ein richtiger PC im Netzwerk und Dienste wie Samba, FTP oder Medienstreaming können einfach getestet werden ;)

Sag Bescheid wenn du noch Tipps brauchst ;)

mfg
foxxx :wink:
 
In einer VM hab ich schon seit längerer Zeit rumprobiert, ich wollte nicht direkt auf Riskio gehen. Das mit dem Bridged hab ich auch schon festgestellt, als ich das erste mal ifconfg in der VM eingegeben hab und nur mist rausbekommen habe.

Putty als SSH Client kenne ich, habe es aber bisher nie benutzt weil ich wie gesagt nur aus dem LAN auf den Server zugreife und per SFTP von außerhalb, aber werd ich mich auch noch mal mit beschäftigen.

Sobald ich das mit dem FTP ausprobiert hab, melde ich mich hier noch mal.
 
Wobei so eine gui, sofern der Server per default im runlvl 3 startet ganz nett ist. In Verbindung z.b. mit freenx läßt sich damit sehr komfortabel arbeiten. :) putty ist natürlich so oder so Pflicht ;)
 
Also ich hab jetzt alles so gemacht wie foxx es in Post #4 beschrieben hat, aber der User hat immer noch Schreibrechte etc.

Bei der Gadmin GUI für Proftpd kann man ja für jeden User genau einstellen, ob und welche Verzeichnisse er erstellen / löschen darf, Dateien bearbeiten etc.

Das muss doch auch per Kommandozeile möglich sein, oder?

EDIT: Ich habs jetzt mit chmod 775 für das Verzeichnis gelöst, nur kann ich jetzt nur noch über FTP mit einem Vollberechtigtem User Dateien in das Verzeichniss kopieren, da die Samba Freigaben unter security = share , also ohne Anmeldung laufen. Ist es möglich, für das eine Verzeichnis security = user zu seten?
 
Zuletzt bearbeitet:
du kannst probieren für das verzeichnis einfach mal "valid users = USER" noch mit zu setzen, vielleicht geht das ;)
 
Benutze in der proftpd.conf

einfach in der entsprechenden Section die "limit"-rule

Bsp.:
Code:
<Directory /transfer>
<Limit WRITE>
DenyUser transferuser
</Limit>
</Directory>

Siehe hier für evtl. Möglichkeiten

Limit - Direktive

Ist diese "mount --bind" - Methode mittlerweile "neuer Standard"? Bin dann wohl noch von der alten Schule.

Ich kenn die Methodik so, dass man quasi per Home-Directory den User "einsperrt"

Bsp. (/etc/passwd):
Code:
transfer:x:205:ftp::/transfer/[b]./[/b]:/bin/false

und dann per Config definiert

Bsp. proftpd:
Code:
DefaultRoot ~

Klappt eigentlich genauso. Der User kann keine Ebene höher und kann nur im aktuellen und allen Unterverzeichnissen rumlaufen.
 
Dieses einsperren oder chrooten oder wie mans nennt hab ich sowieso immer an.
Mit dem Limit Befehl klappt jetzt auch alles.
Ich brauch nicht mal mehr aufwendig Auth per Datei machen, einfach nur den User anlegen, und nur im FTP hat er keine Rechte. Klasse Sache, Danke an alle nochmal.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh