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
"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:
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:
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:
Nun kontrollieren ob die Dienste gestartet sind:
zeus:~ # systemctl status nmb.service smb.service
nmb.service - Samba NMB Daemon
Loaded: loaded (/usr/lib/systemd/system/nmb.service; enabled)
Active: active (running) since Sat, 2013-06-29 06:01:20 CEST; 8s ago
Process: 2709 ExecStart=/usr/sbin/nmbd -D --configfile=/etc/samba/smb.conf (code=exited, status=0/SUCCESS)
Main PID: 2710 (nmbd)
CGroup: name=systemd:/system/nmb.service
└ 2710 /usr/sbin/nmbd -D --configfile=/etc/samba/smb.conf
Jun 29 06:01:20 zeus systemd[1]: Starting Samba NMB Daemon...
Jun 29 06:01:20 zeus systemd[1]: Started Samba NMB Daemon.
smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled)
Active: active (running) since Sat, 2013-06-29 06:01:20 CEST; 8s ago
Process: 2711 ExecStart=/usr/sbin/smbd -D --configfile=/etc/samba/smb.conf (code=exited, status=0/SUCCESS)
Main PID: 2712 (smbd)
CGroup: name=systemd:/system/smb.service
├ 2712 /usr/sbin/smbd -D --configfile=/etc/samba/smb.conf
└ 2715 /usr/sbin/smbd -D --configfile=/etc/samba/smb.conf
Jun 29 06:01:20 zeus systemd[1]: Starting Samba SMB Daemon...
Jun 29 06:01:20 zeus systemd[1]: Started Samba SMB Daemon.
Alles anzeigen
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:
[!!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/