Samba Sync Passwort mit Unix Passwort auf Debian Wheeezy

11

Ich habe Samba auf meinem Server installiert und versuche, ein Skript zu schreiben, um mir die beiden Schritte zum Hinzufügen eines Benutzers zu ersparen, z.

adduser username
smbpasswd -a username

Meine smb.confStaaten:

# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
   unix password sync = yes

Die weitere Lektüre brachte mich zu einer pdbeditManpage, auf der es heißt:

   -a     This option is used to add a user into the database.  This  com-
          mand needs a user name specified with the -u switch. When adding
          a new user, pdbedit will also ask for the password to be used.

          Example: pdbedit -a -u sorce
          new password:
          retype new password

          Note

          pdbedit does not call the unix password syncronisation script if
          unix password sync has been set. It only updates the data in the
          Samba user database.

          If you wish to add a user and synchronise the password that  im-
          mediately, use smbpasswd’s -a option.

Also ... jetzt habe ich beschlossen, einen Benutzer hinzuzufügen mit smbpasswd:

1. Versuch, Unix-Benutzer existiert noch nicht:

root@raspberrypi:/home/pi# smbpasswd -a newuser
New SMB password:
Retype new SMB password:
Failed to add entry for user newuser.

2. Versuch, Unix-Benutzer existiert:

root@raspberrypi:/home/pi# useradd mag
root@raspberrypi:/home/pi# smbpasswd -a mag
New SMB password:
Retype new SMB password:
Added user mag.
# switch to user pi, and try to switch to mag
root@raspberrypi:/home/pi# su pi
pi@raspberrypi ~ $ su mag
Password: 
su: Authentication failure

Also, jetzt frage ich mich:

  1. Wie synchronisiere ich Samba-Passwörter mit Unix-Passwörtern?
  2. Wo werden Samba-Passwörter gespeichert?

Kann mir jemand helfen, mich aufzuklären?

Oz123
quelle
Die Passwörter werden in den Datenbanken gespeichert /var/lib/samba/, ich glaube, Passwörter sind in, secrets.tdbaber ich bin nicht sicher. Ich bezweifle, dass es für Ihre frühere Frage einen einfachen Weg gibt.
Zoredache

Antworten:

10

Nun ... das fehlende Glied war:

 libpam-smbpass

Nach der Installation dieser Pakete funktioniert es also wie erwartet. Das Langzeitgedächtnis des Internets bringt manchmal nur Teilinformationen. Um dem entgegenzuwirken, veröffentliche ich hier den richtigen Link zum Synchronisieren von Samba-Passwörtern mit Unix-Passwörtern und auch meinen eigenen Test.

root@raspberrypi:/home/pi# passwd mag2
passwd: user 'mag2' does not exist
root@raspberrypi:/home/pi# useradd mag2
root@raspberrypi:/home/pi# echo "mag2:12345" | chpasswd
root@raspberrypi:/home/pi# smbclient -L localhost -U mag2
Enter mag2's password: 
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    IPC$            IPC       IPC Service (raspberrypi server)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]

    Server               Comment
    ---------            -------
    RASPBERRYPI          raspberrypi server

    Workgroup            Master
    ---------            -------
    WORKGROUP            
root@raspberrypi:/home/pi# su pi
pi@raspberrypi ~ $ su mag2
Password: 
Added user mag2.

mag2@raspberrypi:/home/pi$ 

Ich hoffe das hilft jemand anderem.

Update 2017:

libpam-smbpassist veraltet . Es scheint, was es ersetzt hat pam_winbindd. Sie können das Paket installieren libpam-winbind, um es zu erhalten. Dadurch werden Samba-Passwörter jedoch immer noch nicht mit Ihren Unix-Passwörtern synchronisiert. Stattdessen können Sie sich bei Unix mit einem Windows-Authentifizierungsserver (AD) authentifizieren. Informationen dazu finden Sie hier: https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller

Oz123
quelle
2
Der Link ist unterbrochen, deshalb haben wir wertvolle Informationen in die Antwort
eingefügt
@ubiquibacon Ich habe diese Antwort so bearbeitet, dass der Link jetzt auf die archivierte Version von der Wayback-Maschine verweist (dank der guten Arbeit der Leute im Internetarchiv).
Anthony Geoghegan
1
pam_smbpass scheint veraltet zu sein
alex.forencich
Ja, ich kann libpam-smbpassauf einem Debian 9.1-System nicht mehr finden und es funktioniert auch nicht für mich. Wie kann es sein, dass diese einfache Frage so oft gestellt wurde und immer noch keine Antwort hat?
Frank Breitling
@ Oz123 Beides libpam-winbindkann NICHT in CentOS7 gefunden werden.
CHENJIAN
3

Wollte die vorherige Antwort kommentieren, konnte dies aber mangels Reputationspunkten nicht tun. Versucht, den vollständigen Inhalt auf diese Antwort zu setzen, konnte aber nicht wie gesagt, dass dies wie Spam aussah. Hier ist der Zugriff auf den vollständigen Inhalt der Wayback-Maschine. Im Folgenden finden Sie eine kurze Version der wichtigsten Punkte:

Unix- und Samba-Passwortsynchronisation auf Debian Etch

Installieren Sie die folgenden Pakete:

# apt-get install libpam-smbpass smbclient

Unix -> Samba

Ändern Sie das Samba-Passwort, wenn ein Benutzer sein Unix-Passwort ändert

/etc/pam.d/common-password: from

password   required   pam_unix.so nullok obscure min=4 max=8 md5

zu

password   requisite**  pam_unix.so nullok obscure min=4 max=8 md5
password   required   pam_smbpass.so nullok use_authtok try_first_pass

Durch Ändern von "erforderlich" in "erforderlich" für pam_unix wird sichergestellt, dass die Ausführung von Plugins sofort beendet wird, wenn die Änderung des Unix-Kennworts fehlschlägt.

Damit dies funktioniert, müssen Benutzer bereits über Samba-Konten verfügen und ihre Samba-Kennwörter müssen mit ihren Unix-Kennwörtern übereinstimmen. Da dies nicht unbedingt der Fall ist, müssen wir uns ändern

/etc/pam.d/common-auth: from

auth    required        pam_unix.so nullok_secure

zu

auth    requisite       pam_unix.so nullok_secure
auth    optional        pam_smbpass.so migrate

Dadurch wird ein Samba-Benutzer erstellt, sofern dieser noch nicht vorhanden ist, und sein Kennwort wird in das Unix-Kennwort geändert, wenn sich der Benutzer mit SSH oder einem anderen Dienst anmeldet, der die Standardsystemauthentifizierung (Common-Auth) verwendet.

Wenn Sie sich mit SSH mit einem Konto anmelden, das noch kein Samba-Konto hat, sollte die Meldung Benutzer hinzugefügt angezeigt werden.

Da dadurch auch ein Samba-Konto für root erstellt wird, möchten Sie möglicherweise den Root-Zugriff in Samba deaktivieren (Debian Etch hat ihn standardmäßig deaktiviert):

/etc/samba/smb.conf:

invalid users = root

Vorsichtsmaßnahme : Dies funktioniert nicht, wenn sich der Benutzer über SSH oder andere Dienste ohne Verwendung eines Kennworts anmeldet (z. B. mithilfe der Authentifizierung mit öffentlichem / privatem Schlüssel). In diesem Fall verfügt PAM nicht über das Klartextkennwort, das zum Erstellen des Samba-Kennworts erforderlich ist.

Hinweis : Wenn Sie das allgemeine Kennwort so ändern, dass auch Samba-Kennwortaktualisierungen erforderlich sind, können derzeit angemeldete Benutzer ihr Kennwort erst mit "passwd" ändern, wenn sie sich erneut anmelden, es sei denn, sie verfügen bereits über ein vorhandenes Samba-Konto mit einem entsprechenden Kennwort zu ihrem Unix-Passwort.

Samba -> Unix

Wir weisen Samba an, beim Ändern von Passwörtern PAM zu verwenden:

/etc/samba/smb.conf:

unix password sync = yes
pam password change = yes

Starten Sie Samba mit /etc/init.d/samba neu.

Konfigurieren Sie PAM so, dass das Ändern des Passworts durch Samba unterstützt wird, indem Sie @include common-password hinzufügen:

/etc/pam.d/samba:

@include common-auth
@include common-account
@include common-session
@include common-password

Dies verwendet den gleichen Mechanismus zum Ändern von Passwörtern bei Verwendung von Samba wie bei Verwendung von "passwd". Dies bedeutet, dass das Unix-Passwort aktualisiert werden muss, bevor versucht wird, das Samba-Passwort zu ändern.

Neue Benutzer erstellen

Verwenden Sie chpasswd, um Fehler zu vermeiden:

# useradd test
# echo “test:newpass” | chpasswd
Joru
quelle
pam_smbpass scheint veraltet zu sein
alex.forencich
@Joru Beim Kompilieren von Samba 4.9.1 unter CentOS7 gibt es keine Datei von pam_smbpass.so. Können Sie mir helfen? Link: stackoverflow.com/questions/52932070/…
CHENJIAN
@CHENJIAN SAMBA.ORG entfernte pam_smbpass.so aus den Quellen mit SAMBA 4. Die letzte Samba-Version, die ich finden konnte, war Samba 3.9.16
Axel Werner