Forum: PC Hard- und Software Raspbian SFTP Rechte


von Michael S. (rbs_phoenix)


Lesenswert?

Hallo zusammen.

Ich habe einen RasPi (den ersten) und möchte ihn als SFTP-Server und 
SAMBA-Server verwenden.

Dazu habe ich mir die beiden Anleitungen angesehen:

http://www.leib.be/sascha/2013/08/baking-a-raspberry-pi-1/
http://blog.self.li/post/64042036630/raspberry-pi-part-2-external-drives-samba-and

Was ich dadurch hinbekommen habe:
- Ich habe die 2 USB-Festplatten, auf denen die Daten abgelegt 
sind/abgelegt werden sollen, in der "/etc/fstab" eingetragen. Das hab 
ich mittels der UUID getan, damit es egal ist, welche ich wann wo 
anschließe (richtig?). Funktioniert soweit auch.

- Ich habe ntfs und samba installiert und die beiden Platten in der 
"/etc/samba/smb.conf" eingetragen. Mit Windows finde ich den RasPi und 
kann auch auf die Laufwerke zugreifen.

- Ich habe bei no-ip.com ein Konto angelegt, sodass ich eine feste 
Adresse habe und habe den Port 22 im Router für die IP des RasPi 
freigeschaltet. Ich kann über die interne IP, als auch über die 
Netzadresse mit SFTP auf die Platten zugreifen.


Mein Problem/Meine Frage besteht jetzt darin:
Wenn ich mich mit einen der beiden Konten anmelde, gelange ich 
Standardmäßig in den jeweiligen Benutzerordner in /home. Das möchte ich 
aber ändern, sodass man standardmäßig im /media-Ordner landet. 
Zusätzlich möchte ich, dass die beiden Nutzer nur den Inhalt von "media" 
sehen können. Momentan kann ich mit beiden Usern in jeden anderen 
Ordner. Zum Schluss soll ein Nutzer nur leserecht haben.

Also:
Nutzer a: Lese- und Schreibrecht im /media-Ordner
Nutzer b: Nur Leserecht im /media-Ordner
Nutzer a&b: Nach Anmeldung mittels SFTP im /media-Ordner landen und 
nichts anderes, außer dessen Unterordner (die HDDs), sehen können.

Wie kann ich das realisieren? Ich kenne mich ein bisschen mit chmod aus, 
allerdings kein kleines Bisschen mit Linux.
Wäre super, wenn mir jemand ein paar Befehle und/oder Wege nennen kann, 
sodass ich meine Anforderungen umgesetzt bekomme.

Vielen Dank

von Tom (Gast)


Lesenswert?

Vielleicht ist stftp chroot das, was du suchst.

von (prx) A. K. (prx)


Lesenswert?

Michael S. schrieb:
> allerdings kein kleines Bisschen mit Linux.

Schlechte Voraussetzung, denn Kenntnis in Linux ist genau das, was du 
hier haben solltest. Weniger was die Rechte von a und b angeht, das ist 
trivial. Eher mögliche Nebeneffekte wie ein sperrangelweit offenes 
System bei dir im lokalen Netz. Das anderen ermöglicht, den Rest dieses 
Netzes mal unter die Lupe zu nehmen. Und es wird nicht lange dauern, bis 
jemand in Sonstwo mal ausprobiert, was mit deinem offenen ssh-Port 
anzufangen ist.

Kern des Problems: SFTP ist eine Teilfunktion von SSH und das kann ein 
wenig mehr, als du vielleicht gerne nach aussen freigeben willst. Man 
kann das kontrollieren, aber da wärs besser, wenn du selbst weiss was du 
tust, und nicht bloss blind abkupferst was jemand vorgemacht hat.

Bis dahin würde ich dir dringend nahelegen, den Router-Port wieder dicht 
zu machen.

: Bearbeitet durch User
von Planlos (Gast)


Lesenswert?

Michael S. schrieb:
> Ich habe einen RasPi (den ersten) und möchte ihn als SFTP-Server und
> SAMBA-Server verwenden.

Oh Wow.

Da nimmst du ausgerechnet drei der größten Nachteile des RasPi
(Langsames Netzwerk, schlechte Massenspeicheranbindung, wenig 
CPU-Leistung für Verschlüsselung)
und willst sie zusammen in einer Anwendung vereinen.

Und dann auch noch NTFS-formatierte Platten... Der 
Linux-NTFS-(fuse)-Treiber braucht mir schon auf einem um Größenordnungen 
schnelleren x64 viel zu viel CPU-Leistung.

Naja, zum Ausprobieren wird's schon irgendwie gehen, erwarte nicht 
zuviel.


Ok, zum Thema zurück:

Die Benutzer verbinden sich per SSH. Du musst verhindern, dass sie über 
SSH eine shell bekommen/Port-Forwards/SOCKs-Proxies u.Ä. ein richten 
dürfen.

Der Admin muss sich aber weiter einloggen dürfen.

Also: reine Dateiserver-Benutzer in eine eigene Gruppe packen.
in der /etc/ssh/sshd_config unten anfügen:
1
# Die Zeile ist evtl. schon per default vorhanden:
2
Subsystem sftp internal-sftp  
3
4
# Hier natürlich deinen eigenen Gruppennamen angeben:
5
Match Group mediafiles
6
        ChrootDirectory /media
7
        ForceCommand internal-sftp
8
        AllowTcpForwarding no

Wenn du spezielle Umasks für die Dateien brauchst (z.B. wenn die von 
Benutzer A hochgeladenen Dateien per Default auch für B lesbar sein 
sollen)
kannst du Parameter in der "ForceCommand"-Zeile angeben, z.B. "-u 0007"


Falls sich die Nutzer per Public-Key einloggen können sollen, und der 
Key nicht gefunden wird, braucht's evtl. noch eine "AuthorizedKeysFile" 
- Option.

Ansonsten schau mal die möglichen weiteren Config-Optionen im manual 
durch, evtl defaults kontrollieren:
AllowAgentForwarding, X11Forwarding, PermitUserEnvironment, Compression, 
..


Alternative: ProFTPD hat ein SFTP-Modul, dann bist du von der OpenSSH 
unabhängig.

von (prx) A. K. (prx)


Lesenswert?

Planlos schrieb:
> Die Benutzer verbinden sich per SSH. Du musst verhindern, dass sie über
> SSH eine shell bekommen/Port-Forwards/SOCKs-Proxies u.Ä. ein richten
> dürfen.

Wobei ich mal annehme, dass er den RasPi selbst in einer SSH-Session 
bedient, oder sich zumindest die Option dazu offen halten sollte. Also 
stets in Gefahr läuft, sich bei dieser Bastelei am sshd den Teppich 
unter den Füssen wegzuziehen.

Eine zweite sshd Instanz mit separater Konfiguration ausschliesslich für 
die SFTP Anwendung kann deshalb ratsam sein. Wenns denn unbedingt SFTP 
sein muss und nicht FTPS ausreicht.

: Bearbeitet durch User
von Planlos (Gast)


Lesenswert?

A. K. schrieb:
> Wobei ich mal annehme, dass er den RasPi selbst in einer SSH-Session
> bedient, oder sich zumindest die Option dazu offen halten sollte. Also
> stets in Gefahr läuft, sich bei dieser Bastelei am sshd den Teppich
> unter den Füssen wegzuziehen.

Normalerweise kann man den sshd restarten, ohne das laufende 
Verbindungen unterbrochen werden.
d.H. Solang man sein "root"-Putty-Fenster nicht zumacht, kann man eine 
kaputte ssh_config immer wieder geradebiegen.

Sicherer ist es natürlich, wenn man zumindest in der Trial&Error-Phase 
eine zweite Login-Option zur Verfügung hat.

A. K. schrieb:
> Wenns denn unbedingt SFTP
> sein muss und nicht FTPS ausreicht.

FTPS ist in der Anwendung etwas ungünstig.

FTPS hat dieselbe Trennung von Control&Daten-Streams wie normales FTP.
Der TE hängt hinter NAT/dynamic DNS, vmlt DSL.

Bei normalem FTP tun sich die NAT-Router/Firewalls schon schwer. Sie 
müssen den Control-Channel-Datenverkehr belauschen, um mitzukriegen 
wann/wie/wo eine Datenverbindung aufgebaut werden muss.
(z.B. contrack_ftp - Modul im Linux-Netfilter)

Bei FTPS ist belauschen nicht mehr möglich, da die Verbindung 
verschlüsselt ist.

==> FTPS hinter NAT ist sehr sehr frickelig einzurichten, man muss 
entweder große Lücken in die Firewall reißen und ganze Port-Bereiche 
durchwinken, oder man ist auf spezielle Protokoll-Erweiterungen 
angewiesen, die nicht jeder Client kann, oder ....

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
Noch kein Account? Hier anmelden.