Samba via ipkg installieren

Aus Synology Wiki
Wechseln zu: Navigation, Suche

Samba via ipkg installieren

Installation von Software, die nicht von Synology kommt geht immer auf eigenes Risiko. 
Zum Teil sind dabei tiefe Eingriffe ins System nötig und das muss über die Konsole erledigt werden. 
Dabei besteht das Risiko von Fehlmanipulationen die bis zur Neuinstallation der DS führen können. 
Und dabei ist das Risiko sehr gross, dass auch die Partitionen mit Userdaten formatiert werden müssen.

Also alles was ihr macht geht auf Eure eigene Kappe :-)

Voraussetzungen

Damit man sich Samba installieren kann muss man einige Vorarbeit machen. Dazu gehören das Aktivieren von Telnet/ssh, das Installieren von bootstrap, damit man überhaupt den Paketmanager hat und das Konfigurieren desselbigen. Das Aktivieren von Telnet/ssh, wobei ich ssh den Vorzug geben würde, geschieht über den Webmanager der Diskstation. Unter dem Menupunkt Terminal kann man den jeweiligen Dämon aktivieren. Ein guter Client für solche Verbindungen (unter Windows) ist Putty. Für telnet Verbindungen braucht man nichts spezielles (einfach Start->Ausführen->cmd[ENTER] und in der Konsole telnet IP_DER_DISKSTATION[ODER NETBIOS NAME] eingeben)

Vorarbeiten

ikpg (bootstrap) installieren

Wichtig ist es die korrekte Version von bootstrap zum jewiligen Prozessor der Diskstation zu erwischen. Die Installation auf einer DS 107+ mit ARM Prozessor wird in diesen Beitrag im Synology Forum behandelt. Wenn ihr Euren Prozessor Typ nicht kennt, dann geht am besten bei Synology auf die Seite der jeweiligen DS und schaut Euch die Spezifikation an. Dort steht's bestimmt ;-)

Ansonsten kann auf der Konsole ein

# cat /proc/cpuinfo | grep Processor
## Processor       : ARM926EJ-Sid(wb) rev 0 (v5l)

helfen.

Tipp
Wenn ihr weitere Infos zu der Hardware eurer DS sehen wollt (und auch etwas mit diesen Daten anfangen könnt ;-) dann ist /proc eine gute Anlaufstelle. Dort liegen alle möglichen Infos über eure DS.

ipkg konfigurieren

Damit man ipkg verwenden kann muss man die Konfigurationsdatei der Anwendung anpassen. Dort drin stehen die Pfade zu den Paketquellen welche verwendet werden sollten für die jeweilige Prozessorarchitektur der DS. Für meine DS 107+ habe ich alle Zeilen auskommentiert bis auf dest root / und dann die URLs der Quellen für die DS 107+ angegeben. Beim unstable Zweig gilt es zu betonen, dass diese Pakete nicht auf produktiven DS eingesetzt werden sollten. Denn wie der Name sagt sind die Anwendungen ggf instabil. Ehrlich gesagt ist mir bis das kernel-module-tun noch nichts untergekommen, das abstürzen würde (aber wie gesagt unstable geht auf eigenes Risiko!!)

//MediaServer/volume1/homes/tobster# cat /opt/etc/ipkg.conf
# Uncomment one of the following package feeds or resolve your arch
# by visiting http://ipkg.nslu2-linux.org/feeds/optware/
# src nslu2 http://ipkg.nslu2-linux.org/feeds/optware/nslu2/cross/stable
# src fsg3 http://ipkg.nslu2-linux.org/feeds/optware/fsg3/cross/stable
# src ddwrt http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable
# src xwrt http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable
# src whiterussian http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable
# src oleg http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable
# src ts72xx http://ipkg.nslu2-linux.org/feeds/optware/ts72xx/cross/stable
# src/gz openwrt-brcm24 http://ipkg.nslu2-linux.org/feeds/optware/openwrt-brcm24/cross/unstable
# src/gz openwrt-ixp4xx http://ipkg.nslu2-linux.org/feeds/optware/openwrt-ixp4xx/cross/unstable/
dest root /
src/gz syno-x07 http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable
src/gz syno-x07 http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/stable
#option verbose-wget
#
# Proxy support:
#
#option http_proxy http://localhost:5865
#option ftp_proxy http://proxy.tld:3128
#option proxy_username <username>
#option proxy_password <password>
ipkg testen

Ein erster Test für ipkg ist für mich immer die Installation eines "vernünftigen" Editors. Ich kann einfach mit vi nicht umgehen und installiere mir daher immer erst nano. Dazu auf der Konsole folgendes eingeben.

# ipkg install nano

Now let's Samba

Nachdem die Vorarbeiten erledigt sind wenden wir uns Samba zu. Der Hauptgrund für mich Samba via ipkg zu installieren ist es, dass sich der eingebaute Samba Server nicht nach meinem Geschmack konfigurieren lässt. So habe ich es zum Beispiel nie geschafft die Homeverzeichnisse der User auf der DS für den jeweiligen User als Share freizugeben. Und ausserdem ist es so das manuelle Änderungen an der Konfig-Datei des Systemsambas beim Neustart wieder überschrieben werden.

Installation

Zur Auswahl stehen die beiden folgenden Versionen

# ipkg list samba*
## samba - 3.2.1-1 - Samba suite provides file and print services to SMB/CIFS clients.
## samba2 - 2.2.12-1 - Lightweight Samba suite provides file and print services to SMB/CIFS clients.
## Successfully terminated.

Die Installation ist sehr schnell erledigt

# ipkg install samba
//oder
# ipkg install samba2

Ich verwende immer die 3-er Version. ipkg beginnt mit dem Runterladen der benötigten Pakete und anschliessend mit der Installation. Das kann ein Weilchen dauern. Guter Zeitpunkt einen Kaffee/Tee zu machen :-)

Konfiguration

Nachdem die Installation durch ist, geht es an die Konfiguration des Samba Servers. Die verantwortliche Datei hierzu liegt unter /opt/etc/samba/smb.conf. Diese Datei ist in einen globalen Teil und einen per-Share Teil unterteilt. Logischerweise gelten Einstellungen im globalen Teil für den ganzen Samba Server.

Globaler Bereich
[globals]
      workgroup = HOME
      server string = Lets SAMBA
      encrypt passwords = True
      security = user
      smb passwd file = /opt/etc/samba/smbpasswd
      log file = /opt/var/samba/log.%m
      socket options = IPTOS_LOWDELAY TCP_NODELAY
      domain master = Yes
      local master = Yes
      preferred master = Yes
      wins support = yes
      os level = 65
      dns proxy = No
      name resolve order = wins lmhosts host bcast
      bind interfaces only = True
      interfaces = eth0 192.168.1.100 lo
      debug level = 0
      directory mask = 0755
      guest ok = yes
      guest account = guest
      force directory mode=771
      force create mode=660
      create mask=771
      log level = 0
      read raw = yes
      write raw = yes
      oplocks = yes
      max xmit = 65535
      dead time = 15
      getwd cache = yes

So sieht bei mir der globale Bereich aus. Anpassen müsst Ihr v.a. den Arbeitsgruppennamen und die Einstellungen unter interfaces. Wichtig ist auch noch, dass ihr darauf achtet, wenn ihr auch Gästen Zugriff erlauben wollt, dass im globalen Bereich guest ok = yes und guest account = guest gesetzt sind. Ihr könnt immer noch auf den einzelnen Shares den Gast-Zugriff verbieten.

Per-Share Bereich

In diesem Bereich legt ihr die einzelnen Freigaben und deren Einstellungen fest. In eckigen Klammern steht dabei der Share Name

[public]
      valid users=franz,susi,susanne,guest
      comment="Blabla"
      path=/volume1/public
      guest ok=yes
      browseable=yes
      read list= @Home,guest
      writeable=yes
      write list=@Home,root,admin

So könnte eine typische public Share mit Gastzugriff ausschauen. Die User franz, susi, susanne und guest sind erlaubte User für die Share. Path dürfte selbsterklärend sein, gleich wie comment ;-) guest ok erlaubt nochmal explizit den Gastzugriff, browsable sorgt dafür, dass die Share sichtbar ist. Die read list gibt nochmals die Benutzer an, die die Share lesen dürfen. writeable erlaubt grundsätzlich den Schreibzugriff und write list legt fest wer schreiben darf. Mit @ werden Gruppen angegeben (z.B. gehören franz, susi und susanne zur Gruppe Home)

Eine spezielle Share ist [homes] damit werden die Home Verzeichnisse der jeweiligen User als Share freigegeben

[homes]
      path=/volume1/homes/%S
      browsable = no
      guest ok = no
      valid users = %S
      writeable = yes
      write list = %S

Nach erfolgreicher Authentifizierung wird die Variable %S mit dem Benutzernamen des Users belegt. Somit ist sichergestellt, dass nur der jeweils angemeldete User sein Home-Verzeichnis sehen kann.

Benutzer einrichten

Samba muss eine eigene Datenbank mit den Usernamen und Passworten unterhalten und kann nicht direkt auf die Linux Auth zugreifen. Dazu müssen alle Benutzer mit ihren jeweiligen Passworten auch als smb User angelegt werden. Dazu dient smbpasswd

# smbpasswd -a franz

dann müsst ihr zweimal das Passwort eingeben.

Wenn User franz nicht als Linux User in '''/etc/passwd''' eingetragen ist, dann kann er auch nicht als SMB User angelegt werden
In diesem Falle gibt es nach Eingabe der Passworte von smbpasswd eine Meldung wie diese
'''Failed to modify password entry for user franz'''

In diesem Fall müsst ihr den Benutzer erst auf der DS anlegen (am einfchsten via den DS-Manager)

Samba testen

Bevor ihr den Samba Server startet, solltet ihr smb.conf noch auf Fehler prüfen. Dazu gibt es testparm

# testparm

prüft die Datei auf Fehler und sollte etwas wie

Loaded services file OK.

ausgeben. Wenn ihr diese Meldung seht dann könnt ihr Euch daran machen den alten Samba Server abzuschiessen. Zuvor solltet ihr aber noch kurz das Startscript des neuen Samba Server anschauen. Dieses liegt unter /opt/etc/init.d/S**samba.sh (** steht für zwei beliebige Zahlen). Öffnet diese Datei im Editor und stellt sicher dass Samba aktviert ist und die Pfade stimmen

# nano /opt/etc/init.d/S08samba.sh
# set samba_active=1 to activate samba
samba_active=1

[ 1 = $samba_active ] || exit 0

if [ -n "`pidof smbd`" ] ; then
    echo "Stopping smbd:"
    killall smbd
fi

if [ -n "`pidof nmbd`" ] ; then
    echo "Stopping nmbd:"
    killall nmbd
fi

sleep 2

echo "Starting nmbd:"
/opt/sbin/nmbd -D --configfile=/opt/etc/samba/smb.conf
echo "Starting smbd:"
/opt/sbin/smbd -D --configfile=/opt/etc/samba/smb.conf

Setzt samba_active=1 und kontrolliert den Pfad auf /opt/sbin und die Übergabe des korrekten Pfades der Konfigurationsdatei (smb.conf) Nach gemachten Änderungen die Datei speichern und gleich aufrufen

# sh /opt/etc/init.d/S08samba.sh

und mit

# ps | grep mbd
## 18215 root       1848 S   /opt/sbin/nmbd -D --configfile=/opt/etc/samba/smb.conf
## 18218 root       2628 S   /opt/sbin/smbd -D --configfile=/opt/etc/samba/smb.conf
## 18221 root       1036 S   /opt/sbin/smbd -D --configfile=/opt/etc/samba/smb.conf
## 18222 root       3628 S   /opt/sbin/smbd -D --configfile=/opt/etc/samba/smb.conf
## 20469 root        216 S   grep mbd

prüfen, dass sowohl der smbd als auch der nmbd mit dem Config File läuft. Es kann sein, dass die Konsole den Befehl ps auf 80 Zeichen beschneidet und daher der Pfad zu smb.conf nicht komplett angezeigt wird. Das macht aber nix, denn übergeben wurde er korrekt ;-) Wenn die Dämons laufen, dann kann man gleich probieren die DS in der Netzwerkumgebung zu finden. Es ist übrigens völlig normal, dass smbd gleich dreimal läuft!

Wenn der Zugriff auf die DS klappt, dann solltet ihr noch das Startscript des Original Samba Servers umbenennen

# mv /usr/syno/etc.defaults/rc.d/S**samba.sh /usr/syno/etc.defaults/rc.d/W**samba.old

Sonst wird Samba zweimal gestartet.

Ressources

  • Externe Links
    • Samba.org
      Offizielle Seite des Samba Projekts
    • smb.conf
      Beschreibung zu den Servertypen von Samba in smb.conf
    • SMB How-To
      Allgemeines How-To für den Umgang mit Samba
    • NSLU.org
      Beschreibung der Installation von Samba via ipkg auf NSLU.org