Samba mit systemd starten

  • Samba mit systemd unter openSUSE 12.3


    Da ich schon seit geraumer Zeit Probleme mit dem starten von Samba mit sysvinit und systemd habe,
    smb startet und nmb nicht, dann starten sie und nmb stoppt, dann startet smb nicht und nmb startet,
    habe ich nun die Lösung des Problems gefunden, die ich hier weitergebe.
    Startscripte und cron war letztendlich keine Alternative.
    Möglich ist, dass es auch mit anderen Problem-Daemons funktioniert.
    Bei mir läuft es endlich tadellos :thumbup:


    "Die Units sind aus der Samba Version 3.6.15 und
    der Pfad für die PIDFile und die Parameter für ExecStart leicht angepasst."


    Zuerst folgende Dateien in folgende Ordner kopieren:
    1.
    smb.service >> /usr/lib/systemd/system/
    --------------------------------------------------------------
    #Datei > /usr/lib/systemd/system/smb.service (644)
    [Unit]
    Description=Samba SMB Daemon
    After=syslog.target network.target nmb.service winbind.service


    [Service]
    Type=forking
    PIDFile=/var/run/samba/smbd.pid
    LimitNOFILE=16384
    EnvironmentFile=-/etc/sysconfig/samba
    #ExecStart=/usr/sbin/smbd $SMBDOPTIONS
    ExecStart=/usr/sbin/smbd -D --configfile=/etc/samba/smb.conf
    ExecReload=/usr/bin/kill -HUP $MAINPID


    [Install]
    WantedBy=multi-user.target
    --------------------------------------------------------------


    2.
    nmb.service >> /usr/lib/systemd/system/
    --------------------------------------------------------------
    #Datei > /usr/lib/systemd/system/nmb.service (644)
    [Unit]
    Description=Samba NMB Daemon
    After=syslog.target network.target


    [Service]
    Type=forking
    PIDFile=/var/run/samba/nmbd.pid
    EnvironmentFile=-/etc/sysconfig/samba
    #ExecStart=/usr/sbin/nmbd $NMBDOPTIONS
    ExecStart=/usr/sbin/nmbd -D --configfile=/etc/samba/smb.conf
    ExecReload=/usr/bin/kill -HUP $MAINPID


    [Install]
    WantedBy=multi-user.target
    --------------------------------------------------------------


    3.
    **winbind.service >> /usr/lib/systemd/system/
    --------------------------------------------------------------
    #Datei > /usr/lib/systemd/system/winbind.service (644)
    [Unit]
    Description=Samba Winbind Daemon
    After=syslog.target network.target nmb.service


    [Service]
    Type=forking
    PIDFile=/var/run/samba/winbindd.pid
    EnvironmentFile=-/etc/sysconfig/samba
    ExecStart=/usr/sbin/winbindd "$WINBINDOPTIONS"
    ExecReload=/usr/bin/kill -HUP $MAINPID


    [Install]
    WantedBy=multi-user.target
    --------------------------------------------------------------
    **Wer mit winbind arbeitet. Mein Samba läuft ohne winbind.


    4.
    samba >> /etc/sysconfig/
    --------------------------------------------------------------
    ### Datei > /etc/sysconfig/samba (644)
    ## Path: Network/Samba
    ## Description: Samba process options
    ## Type: string
    ## Default: ""
    ## ServiceRestart: smb
    SMBDOPTIONS=""
    ## Type: string
    ## Default: ""
    ## ServiceRestart: nmb
    NMBDOPTIONS=""
    ## Type: string
    ## Default: ""
    ## ServiceRestart: winbind
    WINBINDOPTIONS=""
    --------------------------------------------------------------


    Anschließend in der Konsole folgende Befehle eingeben:
    Sollte samba noch im Hintergrund laufen, mit:

    Code
    zeus:~ # rcnmb stop oder /etc/init.d/nmb stop
    und
    zeus:~ # rcsmb stop oder /etc/init.d/smb stop

    Samba stoppen.


    Die neuen Units aktivieren, damit die Dienste beim Boot starten:

    Code
    zeus:~ # systemctl enable nmb.service
    ln -s '/usr/lib/systemd/system/nmb.service' '/etc/systemd/system/multi-user.target.wants/nmb.service'
    zeus:~ # systemctl enable smb.service
    ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'


    Samba starten:

    Code
    zeus:~ # systemctl start nmb.service smb.service


    Nun kontrollieren ob die Dienste gestartet sind:


    Bei Fehlermeldungen evtl. die Units anpassen - Pfade sind wichtig.
    Nach dem speichern der angepassten Units erst den system-daemon neu starten danach den Samba neu starten:

    Code
    zeus:~ # systemctl --system daemon-reload
    zeus:~ # systemctl start nmb.service smb.service


    [!!WICHTIG!!]
    Da der Ordner samba unter /var/run/ für die pid-Files von nmbd.pid und smbd.pid beim Shutdown gelöscht
    und beim Booten nicht wieder hergestellt wird, kann Samba nicht starten.
    Es muss noch eine Datei samba.conf in /usr/lib/tmpfiles.d/ mit folgendem Inhalt erstellt werden:


    ------------------------------------------
    #Datei > /usr/lib/tmpfiles.d/samba.conf 0644


    d /var/run/samba 0644 root root
    ------------------------------------------


    Diese Datei sorgt dafür, dass der Ordner samba für die pid-Files beim Boot angelegt wird und Samba ohne Fehler starten kann.
    [/!!WICHTIG!!]



    Ein wenig Beispielerei für Start-, Restart- und Statusscripte
    (braucht man nicht wirklich):


    Eine Datei mit folgendem Inhalt erstellen und ausführbar unter /sbin als smbstart ablegen:
    ------------------------------------------
    #!/bin/bash


    systemctl start nmb.service smb.service
    ------------------------------------------
    und als smbrestart ablegen:
    ------------------------------------------
    #!/bin/bash


    systemctl restart nmb.service smb.service
    ------------------------------------------
    und als smbstatus ablegen:
    ------------------------------------------
    #!/bin/bash


    systemctl status nmb.service smb.service
    ------------------------------------------
    Dann einfach in der Konsole smbstart oder smbrestart oder smbstatus eingeben....


    Have fun!!



    Weitere Infos:
    http://www.freedesktop.org/wiki/Software/systemd/

    LG
    newtux

    Für den Inhalt des Beitrages 57366 haftet ausdrücklich der jeweilige Autor: newtux