Warum fügt Samba mit „Samba-Tool“ keinen neuen Benutzer hinzu?


8

Ich versuche, eine Samba-Freigabe auf meinem Dell Poweredge 860-Server 14.04 LTS zu konfigurieren. Samba wurde deinstalliert (als ich es ausgewählt habe), daher muss ich es nur konfigurieren. Ich versuche, es mit meinem Windows-Computer zu verbinden.

Meine Konfigurationsdatei (unten aufgeführt) scheint gültig zu sein. Ich bekomme keine Fehler damit. Es ist eine modifizierte Version von etwas, das ich in einem Online-Tutorial gefunden habe.

[global]
        workgroup = HOME
        server string = Samba Ubuntu Server
        map to guest = Bad User
        log file = /var/log/samba/log.%m
        max log size = 50
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        local master = No
        dns proxy = No
        idmap config * : backend = tdb

[Queue]
        comment = "A small folder to move files from/to the server. For use by server admin."
        path = /serv/samba/queue
        valid users = penguin
        read only = No
        create mask = 0777
        directory mask = 0777

Das ist alles in Ordnung dort. (Ich sollte beachten, dass ich auch ein Konto mit dem Namen penguinhabe, aber ich möchte, dass alle Benutzer mit konfiguriert werden, samba-toolda dies penguindas einzige Benutzerkonto ist, das darauf vorhanden ist, und es mehr Benutzer gibt als jetzt).

penguin@Ubuntu-Server-1:~/serv/samba$ sudo samba-tool user add penguin
New Password:
Retype Password:
ERROR(<type 'exceptions.ValueError'>): Failed to add user 'penguin':  - unable to parse dn string
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/user.py", line 176, in run
    uid=uid, uidnumber=uid_number, gidnumber=gid_number, gecos=gecos, loginshell=login_shell)
  File "/usr/lib/python2.7/dist-packages/samba/samdb.py", line 343, in newuser
    dnsdomain = ldb.Dn(self, self.domain_dn()).canonical_str().replace("/", "")

Ich habe es auch mit einem anderen Benutzernamen versucht, der nicht auf dem System ist. Es funktioniert nicht.

Ich kann nicht einmal eine einfache sudo samba-tool user listohne Fehler erreichen!

ERROR(ldb): uncaught exception - ldb_search: invalid basedn '(null)'
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/__init__.py", line 175, in _run
    return self.run(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/user.py", line 271, in run
    attrs=["samaccountname"])

Was mache ich falsch?

Antworten:


7

Soweit ich weiß, samba-toolist dies nur für die Bereitstellung von Active Directory (AC) vorgesehen. Wenn Sie Ihren Samba also nicht als AC-Server eingerichtet haben, samba-tool user addfunktioniert er nicht.

Sie sollten sich fragen, ob Sie einen Active Directory-Server in Ihrem Netzwerk benötigen oder ob Sie nur einen einfachen Samba-Server nur mit eigenen Benutzern benötigen.

Wenn Sie einen AC-Server benötigen, sollten Sie die Anleitung befolgen, die vom Samba-Projekt selbst bereitgestellt wird ( https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO ). Aber seien Sie gewarnt, diese Dokumentation passt nicht direkt zu Ubuntu und Sie müssen die Dinge verstehen, die davon abhängen (nämlich DNS, Kerberos, LDAP).

Wenn Sie nur einen einfachen Server benötigen, der einige Konten für seinen eigenen Zweck hat und Zugriff auf einige freigegebene Ordner bietet, sollten Sie die Anleitungen für samba3 befolgen. Samba4 ist mit diesen Setups für Samba3 kompatibel, obwohl Sie smbpasswdeinen Benutzer in Samba erstellen müssen. Die "General Samba Guides" der Ubuntu Server-Dokumentation sollten Ihnen alle Informationen geben, die Sie benötigen.


7

Schreiben Sie dies stattdessen einfach in das Terminal:

smbpasswd -a penguin

Und der Benutzer, den Sie hinzufügen, muss wie ein neuer Benutzer im Ubuntu-System hinzugefügt werden.

Das kann mit gemacht werden

sudo useradd penguin

oder

sudo adduser penguin

1

Ich mache mir Sorgen, dass dieser "Fehler" falsch kategorisiert werden könnte, weil er in so vielen verschiedenen Formen auftritt. Ich habe gerade einen Fehlerbericht gefunden, der bis ins Jahr 2014 zurückreicht und genau dasselbe berichtet, auf das ich gestoßen bin:

Samba-Tool Benutzerliste ... schlägt wiederholt fehl. Aber dann auch alle anderen Befehle, die samba-tool betreffen, außer: samba-tool -V (das die Versionsnummer korrekt meldet)

Hier ist die Spitze (oder ich sollte 'eine Spitze' sagen) des Eisbergs:

acel: / mnt / nsd # Benutzerliste des Samba-Tools Unbekannter Parameter gefunden: "acl xattr update mtime" Unbekannter Parameter ignorieren "acl xattr update mtime" FEHLER (ldb): nicht erfasste Ausnahme - ldb_search: ungültig basedn '(null)' Datei " /usr/lib/python2.7/dist-packages/samba/netcmd/ init .py ", Zeile 175, in _run return self.run (* args, ** kwargs) File" /usr/lib/python2.7/ dist-packages / samba / netcmd / user.py ", Zeile 292, in run attrs = [" samaccountname "]) acel: / mnt / nsd # Benutzerliste des Samba-Tools FEHLER (ldb): nicht erfasste Ausnahme - ldb_search: ungültig basedn '(null)'
Datei "/usr/lib/python2.7/dist-packages/samba/netcmd/ init.py ", Zeile 175, in _run return self.run (* args, ** kwargs) Datei" /usr/lib/python2.7/dist-packages/samba/netcmd/user.py ", Zeile 292, in run attrs = ["samaccountname"]) acel: / mnt / nsd # welche ldb ldb: Befehl nicht gefunden.

Das Problem? Nachdem ich dies auf einem System festgestellt hatte, überprüfte ich das Samba-Tool auf drei anderen unabhängigen Systemen (alle Ubuntu), und das Samba-Tool war auch auf ihnen defekt. Ich habe einige vereinzelte Hinweise auf ähnliche Manifestationen in Fehlerberichten gefunden, von denen einige 4-6 Jahre zurückreichen. Ich habe auch mehrere Berichte über den Fehler gefunden, der 'behoben' wurde ... (diese Variante ist nicht behoben).

Alles, was ich tun wollte, war sicherzustellen, dass die Samba-Benutzer- / Kennwortdatenbank sauber war, indem ich eine Waise entfernte, und ich konnte nicht. Wenn das Samba-Tool nicht funktioniert (und in meinem Fall habe ich 4 Server, auf denen Samba ausgeführt wird, und es funktioniert auf keinem von ihnen), muss es repariert werden.

Der einzige andere Hinweis, den ich anbieten kann: Eine Referenz, die ich gelesen habe, erwähnte die Funktion zur Synchronisierung von Passwörtern in Samba als mögliche Ursache. Ich bin darauf gestoßen, als Samba auf eine verwaiste Samba-Benutzer-ID gestoßen ist, die ich durch Umbenennen des ursprünglichen Zwillings in der Datei / etc / passwd erstellt habe. Ich habe nur versucht, mit Samba-Tool die Waise zu entfernen. Aber ich nehme an, es ist möglich, dass, als Samba versuchte, seine Benutzerdatenbank mit dem System zu synchronisieren und feststellte, dass der ursprüngliche Benutzer fehlte, ein gewisser Schaden angerichtet wurde. (?)

Dies ist keine Antwort. Es ist nur ein Hinweis darauf, dass der Fehler wahrscheinlich immer noch vorhanden ist. Der beste Ort, um zu überprüfen, ob Sie betroffen sind, besteht darin, einfache Funktionen des Samba-Tools auszuführen, um festzustellen, ob er ordnungsgemäß funktioniert:

Zum Beispiel 'samba-tool user list' oder 'samba-tool dbcheck'.

Alle von mir (1 V4.7 & 3 V4.3) sind kaputt. (Hoffe das hilft.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.