Samba: So kopieren Sie /etc/passwd in Samba-Passwörter auf neuen Versionen des Ubuntu-Servers

Samba: So kopieren Sie /etc/passwd in Samba-Passwörter auf neuen Versionen des Ubuntu-Servers

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.

verwandte Informationen