web-dev-qa-db-fra.com

Pourquoi Samba n'ajoute-t-il pas un nouvel utilisateur avec "samba-tool"?

J'essaie de configurer un partage Samba sur le serveur 14.04 LTS de mon serveur Dell Poweredge 860 exécutant. Samba est arrivé désinstallé (quand je l’ai choisi), je dois donc le configurer. J'essaie de le connecter à ma machine Windows.

Mon fichier de configuration (listé ci-dessous) semble être valide. Je ne reçois aucune erreur avec cela. C'est une version modifiée de quelque chose que j'ai trouvé sur un tutoriel en ligne.

[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

Tout va bien là-bas. (Je dois également noter que j’ai aussi un compte nommé penguin, mais je veux que tous les utilisateurs soient configurés à l’aide de samba-tool car penguin est le seul compte utilisateur qui y sera, et il y aura plus d’utilisateurs que maintenant).

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("/", "")

Je l'ai essayé aussi avec un autre nom d'utilisateur qui n'est pas sur le système. Ça ne marche pas.

Je ne peux même pas accomplir un simple Sudo samba-tool user list sans erreurs!

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"])

Qu'est-ce que je fais mal?

7

Autant que je sache, le samba-tool est destiné à l'approvisionnement d'Active Directory (AC) uniquement. Donc, si vous n'avez pas configuré votre Samba en tant que serveur AC, samba-tool user add ne fonctionnera pas.

Vous devez vous demander si vous avez besoin d'un serveur Active Directory sur votre réseau ou si vous avez besoin d'un simple serveur Samba uniquement avec ses propres utilisateurs.

Si vous avez besoin d’un serveur AC, vous devez suivre le guide fourni par le projet samba lui-même ( https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO ). Mais soyez averti, cette documentation ne correspond pas directement à Ubuntu et vous devez comprendre les éléments qui en dépendent (à savoir DNS, Kerberos, LDAP).

Si vous n'avez besoin que d'un serveur simple disposant de comptes pour son propre usage et donnant accès à certains dossiers partagés, suivez les guides de samba3. Samba4 est compatible avec ces configurations de samba3 et vous avez besoin de smbpasswd pour créer un utilisateur dans samba. Les "Guides généraux de samba" de la documentation du serveur Ubunt devraient vous donner toutes les informations dont vous avez besoin.

7
tvn

Il suffit d'écrire ceci à la place dans le terminal:

smbpasswd -a penguin

Et l'utilisateur que vous ajoutez doit être ajouté au système Ubuntu, comme un nouvel utilisateur.

Cela peut être fait en utilisant

Sudo useradd penguin

ou

Sudo adduser penguin
7
Gustav G

Je crains que ce "bogue" ne soit mal catégorisé, car il apparaît sous tant de formes différentes. Je viens de trouver un rapport de bogue remontant à 2014, rapportant exactement la même chose que celle que j'ai rencontrée:

la liste des utilisateurs de samba-tool ... échoue à plusieurs reprises. Mais alors, il en va de même pour toutes les autres commandes impliquant samba-tool, à l'exception de: samba-tool -V (qui indique correctement le numéro de version)

Voici le conseil (ou devrais-je dire "un conseil") de l'iceberg:

acel:/mnt/nsd # liste d'utilisateurs Samba-tool Paramètre inconnu rencontré: "acl xattr update mtime" Ignorer le paramètre inconnu "acl xattr update mtime" ERREUR (ldb): exception non capturée - ldb_search: invalid basedn '(null)' Fichier "/usr/lib/python2.7/dist-packages/samba/netcmd/init.py", ligne 175, dans _run return self.run (* args, * * kwargs) Fichier "/usr/lib/python2.7/dist-packages/samba/netcmd/user.py", ligne 292, dans l'exécution attrs = ["samaccountname"]) acel:/mnt/nsd # samba-tool liste d'utilisateurs ERROR (ldb): exception non capturée - ldb_search: invalid basedn '(null)'
Fichier "/usr/lib/python2.7/dist-packages/samba/netcmd/init.py", ligne 175, dans _run return self.run (* arguments, * * kwargs) Fichier "/usr/lib/python2.7/dist-packages/samba/netcmd/user.py", ligne 292, dans l'exécution attrs = ["samaccountname"]) acel:/mnt/nsd # which ldb ldb : Commande non trouvée.

Le problème? Après avoir rencontré ceci sur un système, j'ai vérifié samba-tool sur trois autres systèmes indépendants (tous Ubuntu), et samba-tool était cassé sur eux aussi. J'ai trouvé quelques références isolées à des manifestations similaires dans des rapports de bugs, certains remontant à 4-6 ans. J'ai également trouvé plusieurs rapports indiquant que le bogue avait été "corrigé" ... (cette variante n'est pas corrigée).

Tout ce que je voulais faire, c'était m'assurer que la base de données d'utilisateurs/mots de passe samba était propre en supprimant un orphelin, et je ne pouvais pas. Clairement, si samba-tool ne fonctionne pas (et dans mon cas, j'ai 4 serveurs exécutant Samba et que cela ne fonctionne sur aucun d’eux), il doit être corrigé.

Le seul autre indice que je puisse offrir: une référence que j'ai lue mentionne la synchronisation des mots de passe dans Samba comme cause possible. J'ai rencontré ce problème lorsque Samba a rencontré un ID utilisateur de samba Orphan, que j'avais créé en renommant son jumeau d'origine dans le fichier/etc/passwd. J'essayais juste d'utiliser samba-tool pour supprimer l'orphelin. Mais je suppose que c’est possible que lorsque samba ait tenté de synchroniser sa base de données d’utilisateurs avec le système et trouvé l’utilisateur manquant, des dommages aient été causés. (?)

Ce n'est pas une réponse. C'est simplement une suggestion que le bogue est probablement toujours présent, et le meilleur endroit pour commencer à vérifier si vous êtes affecté est d'exécuter des fonctions simples de samba-tool, pour voir s'il fonctionne correctement:

'samba-tool user list' ou 'samba-tool dbcheck' par exemple.

Tous les miens (1 V4.7 et 3 V4.3) sont cassés. (J'espère que cela t'aides.)

1
Tb Thomas