
Ich schreibe ein Skript, um die Linux-Benutzerkennwörter auf Samba auf Ubuntu Server 10.04 zu kopieren. Ich verwende Samba 3 mit tdbsam-Backend.
1) Wie kopiere ich (falls möglich) Konten (Benutzer/Passwort) mithilfe eines Shell-Skripts von Linux nach Samba?
2) Wie finde ich in meinem Skript heraus, ob ein bestimmter Benutzer in der Samba-Benutzerdatenbank vorhanden ist, ein Kennwort hat und aktiviert ist? Ich brauche das, da mein Skript häufiger ausgeführt wird und ich bei nachfolgenden Ausführungen herausfinden müsste, ob der Benutzer bereits vorhanden ist. Ich würde das Kennwort nicht kopieren oder festlegen oder aktivieren, wenn dies nicht erforderlich ist.
Dies ist der Kopf meiner Konfiguration:
[global]
workgroup = WORKGROUP
server string = %h server
security = SHARE
obey pam restrictions = Yes
pam password change = no
passdb backend = tdbsam
unix password sync = no
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
invalid users = root
hosts allow = 192.168.0.1/24
Antwort1
Die Samba-Passwortdatei und Ihre Systemschattendateien haben unterschiedliche Hash-Schemata. Ich glaube, keines von beiden ist umkehrbar, es gibt also keine Möglichkeit, zwischen beiden zu konvertieren. Die einzige Möglichkeit, die Passwörter zu synchronisieren, besteht darin, beide Dateien zum Zeitpunkt ihrer Änderung gleichzeitig anhand der Benutzereingaben zu aktualisieren. Das ist der ganze Sinn der Einstellung zur Unix-Passwortsynchronisierung.
Antwort2
Ich habe mich entschieden, vorerst wieder zu smbpasswd zu wechseln. Und ich habe beschlossen, keine Passwörter zu synchronisieren. Ich brauche jetzt eine einfache Lösung, die einfach funktioniert.
Dies ist jetzt der Kopf der Konfiguration:
[global]
workgroup = WORKGROUP
security = SHARE
passdb backend = smbpasswd:/etc/samba/smbpasswd
unix password sync = no
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
Und dies ist das Skript, das ich bei der Erstinstallation und von Zeit zu Zeit ausführe:
USER=samwin
cat /etc/samba/smbpasswd | grep -e "^$USER:"
if [ $? -ne 0 ]; then
echo "Adding Samba user USER:"
smbpasswd -a $USER
else
echo "Samba user $USER already present."
fi
Ich bin immer noch neugierig auf die Antwort auf meine obige Frage für zukünftige Installationen und werde die Antwort akzeptieren, die am besten passt.