Dateitransfer im heterogenen Netzwerk
Via HTTP / Webserver
Linux kann dank der meist vorinstallierten Python-Distribution ganz einfach als Webserver agieren. Einen höheren, nicht privilegierten Port (hier: 8000) kann sogar ein einfacher Benutzer öffnen.
In einer Konsole bringt er zuerst mit ip -4 addr
seine IP-Adresse in Erfahrung, welche die Clients später für den Zugriff benötigen.
Dann wechselt er in den freizugebenden Ordner, z.B. ‚Downloads‘. Nun kann er bereits den HTTP-Server starten:
user@linux:~$ cd ~/Downloads
user@linux:~$ python -m http.server
Serving HTTP on 0.0.0.0 port 8000 ...
Beendet wird das Servieren später mit der Tastenkombination STRG + C.
Unter Python 2 lautete die Kommandozeile etwas anders: python -m SimpleHTTPServer
Die Clients können auf die freigegebenen Dateien dann einzeln via üblichen Webbrowser (Internet Explorer, Firefox, Chromium) zugreifen, z.B. so:
http://10.44.30.220:8000
Via FTP / File Transfer
Der Linux Secure Shell Server ‚sshd‘ beherrscht u.a. grundlegendes FTP. Je nach Distribution muss er nachinstalliert werden. Ob er schon läuft, ermittelt man mit:
user@linux:~$ ps -C sshd
PID TTY TIME CMD
636 ? 00:00:00 sshd
16615 ? 00:00:00 sshd
16617 ? 00:00:00 sshd
user@linux:~$
Ist dies nicht der Fall, kann er unter Debian/Ubuntu/Mint ganz einfach mittels apt install openssh-server
nachinstalliert werden. Dazu benötigt man natürlich Superuser-Rechte.
Der Zugriff kann dann von Windows aus z.B. mit ‚winscp.exe‘ erfolgen, herunterzuladen über https://winscp.net/eng/download.php.
Die Konfiguration einer Verbindung kann dann z.B. so aussehen:
SFTP
Hostname: 10.44.30.220
Portnummer: 22
Benutzername: tux
Passwort:
***
Wenn Windows nicht als Client, sondern als Server agieren soll, bieten sich einfache, portable Apps an. Siehe dazu auch:
Via SMB / Windows
Wenn aus Komfortgründen die Windows-typische Freigabetechnologie auf Basis des Server Message Block Protocols benutzt werden soll, kann Linux relativ einfach als Server fungieren. Die Installation ist auf debianartigen Systemen schnell erledigt:
root@linux:~# apt-get install samba
Im Folgenden betrachten wir drei Varianten, wie dieser Server mit minimalen Aufwand konfiguriert werden kann:
Read only Homes (es muss nur ein Passwort vergeben werden)
Neues Share (es wird die Konfiguration erweitert)
Neue Config (wir starten mit einer Allround-Konfiguration)
Read only Homes
In dieser wahrscheinlich einfachsten Variante kann der Zugriff auf die Unix-Heimatverzeichnisse z.B. unter Debian leider nur read-only erfolgen. Voraussetzung ist lediglich, dass einem vorhandenen Unix-Account ein Samba-Account samt Passwort zugeordnet wird. Dies erledigen wir als Superuser für ‚tux‘ ganz einfach mit smbpasswd -a tux
(mit pdbedit -L
lässt man sich diese Konten auflisten):
root@linux:~# pdbedit -L
root@linux:~#
root@linux:~# grep ^tux /etc/passwd
tux:x:1000:1000::/home/tux:/bin/bash
root@linux:~#
root@linux:~# smbpasswd -a tux
New SMB password:
Retype new SMB password:
Added user tux.
root@linux:~#
root@linux:~# pdbedit -L
tux:1000:
root@linux:~#
Der Zugriff von Windows aus gestaltet sich dann z.B. so (Als Share-Name wird dabei der Benutzername verwendet):
WIN + R: \\10.44.30.220\tux
HINWEIS: Damit ist wie gesagt nur lesender Zugriff möglich. Wer es sich aber zutraut, braucht lediglich in der Datei /etc/samba/smb.conf
unterhalb von [homes]
den Schalter read only = yes
auf ‚no‘ zu setzen. Falls man sich von Windows aus bereits read-only verbunden hatte, kann die Sitzung dort mit WIN + R: cmd.exe
und der Zeile net use /delete *
sauber beendet werden.
Neue Config
Als dritte Variante binden wir eine eigene, neue Konfigurationsdatei ein, die mehr Übersicht bringt und auch gleich die Heimatverzeichisse der Linux-User schreibfähig freigibt.
Dazu wechseln wir ins Verzeichnis ‚/etc/samba‘, benennen die ‚smb.conf‘ um und starten mit einer eingenen, neuen Konfigurationsdatei, wobei diese Datei wieder mit Hilfe eines Here-Documents erstellt wird:
root@linux:~# cd /etc/samba/
root@linux:/etc/samba#
root@linux:/etc/samba# mv smb.conf smb.conf.orig
root@linux:/etc/samba#
root@linux:/etc/samba# cat > smb.conf <<EOF
[global]
workgroup = myLAN
map to guest = Bad User
[homes]
comment = Home Directories
valid users = %S
create mask = 0700
directory mask = 0700
browseable = No
writeable = yes
[free4all]
path = /srv/free
public = yes
writeable = yes
force group = nogroup
create mask = 770
directory mask = 770
EOF
root@linux:/etc/samba#
root@linux:/etc/samba# mkdir -m 777 /srv/free
root@linux:/etc/samba#
Da wir hier eine ganz neue Konfigurationsdatei implementiert haben, starten wir die beiden Daemons neu:
root@linux:/etc/samba# systemctl restart nmbd
root@linux:/etc/samba# systemctl restart smbd
Nun kann der Zugriff wahlweise aus folgende Art geschehen:
Mit Hilfe des Unix-Benutzeraccounts, wofür wir noch die Kommandozeile
smbpasswd -a <BENUTZER>
ausführen müssen:WIN + R: \\Sambaserver\Benutzername
Mittels dem Share-Namen „free4all“, wobei hier auch anonyme Benutzer schreiben können:
WIN + R: \\Sambaserver\free4all
Andere Clients als Windows müssen nicht außen vor bleiben: unter Linux unterstützen viele Dateimanager das SMB-Protokoll nativ, unter Android ist der Dateimanager ‚Ghost Commander‘ mittels Samba Plugin dazu in der Lage.
Via Netcat
Man nimmt dazu einen freien Port, der über 1024 liegt, damit kann dies auch ein Benutzer tun. HINWEIS: OpenSUSE setzt die von OpenBSD stammende netcat-Variante ein, daher ist dort ‚-p‘ wegzulassen, also einfach ‚nc -l 1234 > file‘ zu schreiben.
Der Server geht auf Empfang und wartet auf eingehende Daten (listening-Modus, hier auf Debian Linux):
user@linux1:~# nc -l -p 1234 > /tmp/hosts-from-remote.txt
Der Client sendet eine Datei:
user@linux2:~# cat /etc/hosts | nc -w 0 10.44.30.220 1234
Nachdem die Datei übetragen wurde, beendet sich auf beiden Seiten die Sitzung.
Auf dem Server kann nun die empfangene Datei mittels cat /tmp/hosts-from-remote.txt
betrachtet werden.
Leider beherrscht Netcat keine Verschlüsselung, bei Bedarf sollte man daher auf Cryptcat ausweichen.
Via Peer2Peer / Sync
Insbesondere wenn mobile Geräte mit eingebunden werden sollen, machen sich P2P- bzw. einfache Cloud-Lösungen gut. Siehe hierzu folgende Auswahl: