Entries tagged as samba

Abenteuer: Raspberry Pi: USB-Platte mit Samba freigeben

Eigentlich hätte es mich nicht wundern dürfen, dass es natürlich nicht (!) klappt, wenn ich nur mal eben schnell eine externe USB-Platte an den Raspberry Pi hängen und diese per Samba für den Zugriff von Windows und XBMC freigeben will.
Aber, dass es wieder in so eine Arbeit ausartet, hätte ich nicht gedacht und die Platte besser weiter an der Fritz!Box hängen gelassen.

Aber was war los ?

Schritt 1 - Die Platte anstecken, erkennen lassen und mounten
--------------------------------------------------------------------------------

Zum Einsatz kommt eine externe 2 TB-Platte, die mit NTFS formatiert ist. Eigentlich würde sich am RPi eine EXT4-Partion aus Performancegründen anbieten, aber die Platte ist halt eben schon formatiert und voll, sodass ich ungern alles neu machen wollte. Zudem soll sie bei Bedarf auch noch mal an einem Windows-Rechner verwendet werden.
Voraussetzung für den Betrieb unter Linux sind also die ressourcenfressenden NTFS-Treiber, die ich aber schon für andere Zwecke installiert hatte. Bei wem die Treiber noch fehlen, der muss sie wie gesagt nachinstallieren:

sudo apt-get install ntfs-3g

Ich steckte also die Platte an den zweiten, noch verfügbaren USB-Ports meines RPis und prüfte ob Wheezy sie sauber erkennt:

lsusb

Die Platte wurde erkannt und tauchte in der Liste auf. Da ich für das automatische Mounten die UUID der Platte benötige, listete ich mir die angeschlossenen Speichermedien auf:

sudo lsblk -o NAME,FSTYPE,MOUNTPOINT,LABEL,UUID,MODEL,SIZE,STATE,OWNER,GROUP,MODE,TYPE

Bei Bedarf könnte man sich auch noch die Zuordnungen auflisten lassen:

ls –lR /dev/disk/by-uuid/

Im nächsten Schritt galt es einen Mountpoint anzulegen. Da ich bereits einen USB-Stick für Seafile gemountet habe, sollte der Mountpoint für die Platte am besten im gleichen Verzeichnis liegen:

sudo su
cd /media
mkdir usbhd


Damit die Platte bei einem Rechnerneustart automatisch eingehängt wird, ist noch ein Eintrag in der "fstab" nötig:

nano /ect/fstab

Nach der Zeile, die ich schon für den USB-Stick hinzugefügt hatte, fügte ich eine weitere für die Platte ein:

UUID=DAE12...... /media/usbhd ntfs defaults 0 2

Dabei entspricht die UUID natürlich der, die ich mir zuvor anzeigen ließ. Für's Dateisystem trug ich natürlich NTFS ein und für's Auto-Mount "defaults". Die Archivierungsfrequenz für "dump" schaltete ich durch "0" ab und setzte die Platte in der Reihenfolge für Datei-Checks nach hinten ("2").

"fstab" anschließend speichern und direkt mounten:

su wheezyuser (um nicht weiter als "root" zu arbeiten)
sudo mount -a


Schritt 2 - Samba installieren und einrichten
--------------------------------------------------------

Bis hierhin lief alles noch reibungslos, aber dann ging's auch schon los.
Erstmal wieder zu "root" wechseln, um die Installation sauber durchführen zu können:

sudo su
aptitude install samba samba-common-bin


Die Paketdaten für Samba konnten nicht heruntergeladen werden, was aber kein großes Thema war, da ich lediglich die Paketlisten neu einlesen musste:

apt-get update

Und weiter ging's. Die standardmäßige samba.conf benannte ich erstmal um, um mir eine neue anzulegen und mit dem zu füllen, was ich ich benötige:

cd /etc/samba
mv smb.conf smbconf.old
nano smb.conf


Meine Konfiguration sieht dann wie folgt aus, wobei ich einige Einträge zunächst auskommentiert habe, um sie zu testzwecken zwischendurch mal zu "aktivieren":

QUOTE:

#====================Global Settings====================
#
[global]
workgroup = WORKGROUP
server string = RPi-Server %v
netbios name = RASP
dns proxy = No
interfaces = eth0
bind interfaces only = yes
#
### Logging
log file = /var/log/samba/log.%m
max log size = 200
syslog = 0
preferred master = No
local master = No
panic action = /usr/share/samba/panic-action %d
#
### Authentication
security = user
encrypt passwords = true
passdb backend = tdbsam
# map to guest = bad user
#
#====================Shared Foldes======================
#
[Share]
comment = Externe Platte am RPi
path = /media/usbhd
# user = Test
valid users = Test
# guest ok = no
browseable = yes
read only = no
create mask = 0777
directory mask = 0777
writeable = yes


Soweit die Freigabe an sich. Damit der Zugriff auf selbige später möglich sein wird, wird noch ein Samba-User benötigt, den ich ebenfalls anlegte und aktivierte. Und zwar einmal als Linux- und einmal als Samba-User.
Wieso ? Weil ich dachte, dass der Samba-User ja auch Zugriff auf die Platte und ihre Verzeichnisse benötigt und das Linux Rechtesystem kommt eben vor Samba.

useradd -c "Samba Testuser" Testuser
smbpasswd -a Testuser


Kennwort vergeben und Samba-User aktiviert:

smbpasswd -e Testuser

Abschließend testete ich meine Samba Konfiguration erfolgreich mit testparm und startete Samba neu:

/etc/init.d/samba restart
su wheezyuser


Bis hierhin funktionierte alles gut, aber dann fing's an.
Die Freigabe war unter Windows nicht zu sehen und ein Mapping war auch nicht möglich. Scheinbar dauerte alles ein wenig, denn auf einmal tauchte in der "Netzwerkumgebung" von Windows 7 und 8 der Raspberry und die Freigabe auf. Das Öffnen selbiger klappte jedoch nicht, weil eine Anmeldung erforderlich war, die aber partout nicht klappen wollte. Der von mir angelegte Samba-User (Testuser) mit Kennwort wurde einfach nicht genommen.
In XBMC hingegen konnte ich mit eben diesen Daten eine neue Medienquelle hinzufügen und sogar die Verzeichnisse sehen, was dann auch unter Windows selbst auf einmal möglich war. Sehr merkwürdig. Leider konnte ich jedoch keine Dateien öffnen oder wiedergeben, weil mir die Rechte dazu fehlten. XBMC, VLC und Windows verweigerten die Wiedergabe mit mal mehr, mal weniger aussagekräftigen Meldungen und die jeweiligen Logs von VLC und XBMC brachten auch nicht viel mehr Erkenntnis. Es musste aber an fehlenden Rechten unter Linux liegen. Also schaute ich mal nach:

cd /media/usbhd
ls -l


Und siehe da: der Testuser war gar nicht als zugriffsberechtigt eingetragen, was ich dann eben nachholen wollte:

su Testuser
sudo chown -cR Testuser /media/usbhd


Dies aber scheiterte, da der Testuser nicht Mitglied der "sudo"-Gruppe, weshalb ich ihn erstmal (!) dort rein packte:

su wheezyuser
sudo su
adduser Testuser sudo


Danch ein erneuter Versuch:

su Testuser
sudo chown -cR Testuser /media/usbhd


Das hatte dann schonmal funktioniert.

Eine weitere Prüfung per ls -l zeigte, dass jetzt der "Testuser" sowie "wheezyuser" Besitzer der Verzeichnisse und Dateien waren. Aber es mangelte auch an Rechten.
drw---------- war auch schon alles, was dort stand, weshalb ich die Berechtigungen kurzerhand erweitern wollte - und dies für alle Dateien und Verzeichnisse:

su Testuser
find /media/usbhd \( -type d -exec chmod 774 {} + \) -o \( -type f -exec chmod 774 {} + \)


Damit wollte ich dem Testuser und der Gruppe das Lesen, Schreiben (wichtig für das Kopieren und Löschen von Dateien per XBMC und Windows) sowie das Ausführen ermöglichen, während für "Others" (o) Leserechte ausreichend sein sollten.
Tja, aber es funktionierte immer noch nicht.
Das Mappen über den Sambauser klappt nachwievor nicht und das Ausführen von Dateien ebenfalls nicht.
Ggfs. lag dies an den Verzeichnisnamen. Dort gab es einige, die mit -= oder mit - begannen. Unter Linux wird ein "-" jedoch anders gelesen als unter Windows. Da ich das Umbenennen der betroffenen Ordner nicht hinbekam, hängte ich die Platte aus, klemmte sie an meinen Windows-Rechner, benannte die Verzeichnisse um, klemmte sie wieder an den RPi und hängte sie wieder ein.
Eine Prüfung mit ls -l /media/usbhd ergab jetzt aber, dass nur noch "root" der Besitzer von allem ist und nur noch die Rechte dr-x------ hat ! Leider lässt sich jetzt nichts mehr ändern, da ich für "chown" und "chmod" nur noch die Meldung "Read-only file system" bekomme. Noch nicht einmal "root" ist derzeit in der Lage, etwas zu ändern. Na toll !
So etwas passiert normalerweise, wenn die NTFS-Treiber nicht installiert sind, was bei mir aber der Fall ist.
Als hängte ich die Platte einfach nochmal aus und wieder ein:

sudo umount /dev/sdb1
sudo mount -t ntfs-3g /dev/sdb1 /media/usbhd


Und schon sah das Ganze wieder anders aus: drxwrxwrxw. Ok, das ist natürlich zuviel des Guten, aber jetzt konnte ich erstmal den Owner ändern und die Berechtigungen anpassen:

su Testuser
sudo chown -cR Testuser /media/usbhd
sudo chmod o-wx /media/usbhd


In diesem Fall behielt ich die Schreib-, Lese- und Ausführrechte für den Besitzer und die Gruppe erstmal bei, entzog dafür "others" aber die Schreib- und Ausfühhrechte, sodass eben nur noch noch die Leserechte übrig blieben.
Der Zugriff von Windows (und XBMC) funktioniert nun problemlos und auch das Öffnen und die Wiedergabe von Dateien funktioniert einwandfrei. Und das Schöne dabei ist: Full-HD Filme (*.mkvs) werden sogar ruckelfrei wiedergegeben, selbst wenn sie dabei auch noch über's WLAN auf ein Endgerät wie ein Tablet, Smartphone oder Notebook gestreamed werden !

Das Einzige, das jetzt noch zu kontrollieren ist, ist, weshalb der Besitzer immer noch "root" ist und die Berechtigungen nachwievor auf drxwrxwrxw stehen obwohl der Umberechtigungsvorgang als erfolgreich abgeschlossen gemeldet wurde ("Changed owner from root to Testuser") und auch die Änderung der Rechte fehlerfrei durchlief. :\


Übrigens:

Der automatische Spindown der Platte (Ruhezustand) wird bereits von der Platte, also von Haus aus, durchgeführt. Bei wem das nicht der Fall ist, der könnte es ja mal mit folgendem Befehl probieren:

aptitude install hdparm
sudo hdparm -S120 /dev/sda


Um das automatische Ausschalten der Platte bei jedem Start erneut einzurichten, in der Datei /etc/hdparm.conf die folgenden Zeilen einfügen (sudo /etc/hdparm.conf):

QUOTE:

/dev/sda {
spindown_time = 120
}

Page 1 of 1, totaling 1 entries