Samba et LDAP
This section covers the integration of Samba with LDAP. The Samba server's role will be that of a "standalone" server and the LDAP directory will provide the authentication layer in addition to containing the user, group, and machine account information that Samba requires in order to function (in any of it's 3 possible roles). The pre-requisite is an OpenLDAP server configured with a directory that can accept authentication requests. See Serveur OpenLDAP for details on fulfilling this requirement. Once this section is completed, you will need to decide what specifically you want Samba to do for you and then configure it accordingly.
Installation de logiciels
Il y a trois paquets nécessaires pour l'intégration de Samba avec LDAP : samba, samba-doc et smbldap-tools.
Le paquet smbldap-tools n'est pas nécessaire à proprement parler, mais si vous n'avez pas d'autre moyen de gérer les diverses entités Samba (utilisateurs, groupes, ordinateurs) dans le contexte LDAP, alors, vous devriez installer le paquet smbldap-tools.
Maintenant, installez ces paquets :
sudo apt-get install samba samba-doc smbldap-tools
Configuration LDAP
Nous allons maintenant configurer le serveur LDAP afin qu'il puisse accueillir les données de Samba. Nous allons effectuer trois tâches dans cette section :
-
Importez un schéma
-
Indexez des entrées
-
Ajouter des objets
Schéma Samba
In order for OpenLDAP to be used as a backend for Samba, logically, the DIT will need to use attributes that can properly describe Samba data. Such attributes can be obtained by introducing a Samba LDAP schema. Let's do this now.
Pour avoir plus d'informations sur les schémas et leur installation, voir Modification de la base de données de configuration slapd.
-
Le schéma se trouve dans le paquet samba-doc qui est désormais installé. Il doit être décompressé et copié dans le répertoire /etc/ldap/schema :
sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema sudo gzip -d /etc/ldap/schema/samba.schema.gz
-
Prenez le fichier de configuration schema_convert.conf qui contient les lignes suivantes :
include /etc/ldap/schema/core.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/java.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/ldapns.schema include /etc/ldap/schema/pmi.schema include /etc/ldap/schema/samba.schema
-
Prenez le répertoire ldif_output contenant les sorties.
-
Déterminez l'index du schéma :
slapcat -f schema_convert.conf -F ldif_output -n 0 | grep samba,cn=schema dn: cn={14}samba,cn=schema,cn=config
-
Convertissez le schéma au format LDIF :
slapcat -f schema_convert.conf -F ldif_output -n0 -H \ ldap:///cn={14}samba,cn=schema,cn=config -l cn=samba.ldif
-
Modifiez le fichier cn=samba.ldif généré en supprimant les informations d'index pour arriver à :
dn: cn=samba,cn=schema,cn=config ... cn: samba
Retirez les lignes du bas :
structuralObjectClass: olcSchemaConfig entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95 creatorsName: cn=config createTimestamp: 20080827045234Z entryCSN: 20080827045234.341425Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20080827045234Z
Vos valeurs d'attributs varieront.
-
Ajoutez le nouveau schéma :
sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn\=samba.ldif
Pour interroger et voir ce nouveau schéma :
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config 'cn=*samba*'
Indices Samba
Maintenant que slapd connaît les attributs Samba, nous pouvons définir quelques indices basés sur ces attributs. L'indexation des entrées est un moyen d'améliorer les performances lorsqu'un client effectue une recherche filtrée dans le DIT.
Créez le fichier samba_indices.ldif avec le contenu suivant :
dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: uidNumber eq olcDbIndex: gidNumber eq olcDbIndex: loginShell eq olcDbIndex: uid eq,pres,sub olcDbIndex: memberUid eq,pres,sub olcDbIndex: uniqueMember eq,pres olcDbIndex: sambaSID eq olcDbIndex: sambaPrimaryGroupSID eq olcDbIndex: sambaGroupType eq olcDbIndex: sambaSIDList eq olcDbIndex: sambaDomainName eq olcDbIndex: default sub
Avec l'utilitaire ldapmodify, charger les nouveaux indices :
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f samba_indices.ldif
Si tout s'est bien passé, vous devriez voir les nouveaux indices en utilisant ldapsearch :
sudo ldapsearch -Q -LLL -Y EXTERNAL -H \ ldapi:/// -b cn=config olcDatabase={1}hdb olcDbIndex
Ajout d'objets LDAP à Samba
Next, configure the smbldap-tools package to match your environment. The package is supposed to come with a configuration helper script (smbldap-config.pl, formerly configure.pl) that will ask questions about the needed options but there is a bug whereby it is not installed (but found in the source code; 'apt-get source smbldap-tools').
Pour configurer manuellement le paquet, vous devez créer puis éditer les fichiers /etc/smbldap-tools/smbldap.conf et /etc/smbldap-tools/smbldap_bind.conf.
Le script smbldap-populate va ensuite ajouter les objets LDAP nécessaires pour Samba. C'est une bonne idée que de commencer par sauvegarder votre DIT avec slapcat :
sudo slapcat -l backup.ldif
Une fois que vous avez une sauvegarde, procédez au remplissage de votre répertoire :
sudo smbldap-populate
Vous pouvez créer un fichier LDIF contenant les nouveaux objets Samba en exécutant sudo smbldap-populate -e samba.ldif. Cela vous permet de parcourir les changements en vous assurant que tout est correct. Si c'est le cas, exécutez à nouveau le script sans l'option « -e ». Alternativement, vous pouvez prendre le fichier LDIF et importer ses données par habitude.
Votre répertoire LDAP a maintenant les informations nécessaires pour authentifier les utilisateurs Samba.
Configuration de Samba
There are multiple ways to configure Samba. For details on some common configurations see Samba. To configure Samba to use LDAP, edit it's configuration file /etc/samba/smb.conf commenting out the default passdb backend parameter and adding some ldap-related ones:
# passdb backend = tdbsam # LDAP Settings passdb backend = ldapsam:ldap://hostname ldap suffix = dc=example,dc=com ldap user suffix = ou=People ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap ldap admin dn = cn=admin,dc=example,dc=com ldap ssl = start tls ldap passwd sync = yes ... add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"
Modifiez les valeurs pour correspondre à votre environnement.
Redémarrez samba pour activer les nouveaux paramètres :
sudo restart smbd sudo restart nmbd
Maintenant, informez Samba à propos du mot de passe de l'utilisateur rootDN (celui défini lors de l'installation du paquet slapd) :
sudo smbpasswd -w motdepasse
If you have existing LDAP users that you want to include in your new LDAP-backed Samba they will, of course, also need to be given some of the extra attributes. The smbpasswd utility can do this as well (your host will need to be able to see (enumerate) those users via NSS; install and configure either libnss-ldapd or libnss-ldap):
sudo smbpasswd -a identifiant
Vous serez invité à entrer un mot de passe. Il sera considéré comme le nouveau mot de passe pour cet utilisateur. Choisir le même que précédemment est raisonnable.
Pour gérer les utilisateurs, les groupes et les comptes machine, utilisez les utilitaires fournis par le paquet smbldap-tools. Voici quelques exemples :
-
Pour ajouter un nouvel utilisateur :
sudo smbldap-useradd -a -P identifiant
L'option -a ajoute les attributs Samba, et l'option -P appelle l'utilitaire smbldap-passwd après que l'utilisateur ait été créé, vous permettant de saisir un mot de passe pour cet utilisateur.
-
Pour supprimer un utilisateur :
sudo smbldap-userdel identifiant
Dans la commande ci-dessus, utilisez l'option -r pour supprimer le répertoire personnel de l'utilisateur.
-
Pour ajouter un groupe :
sudo smbldap-groupadd -a nom_de_groupe
Comme pour smbldap-useradd, l'option -a ajoute les attributs Samba.
-
Pour faire qu'un utilisateur existant devienne membre d'un groupe :
sudo smbldap-groupmod -m identifiant nom_de_groupe
L'option -m permet d'ajouter plusieurs utilisateurs à la fois en les listant dans un format séparé par des virgules.
-
Pour supprimer un utilisateur d'un groupe :
sudo smbldap-groupmod -x identifiant nom_de_groupe
-
Pour ajouter un compte machine Samba :
sudo smbldap-useradd -t 0 -w nom_machine
Replace username with the name of the workstation. The -t 0 option creates the machine account without a delay, while the -w option specifies the user as a machine account. Also, note the add machine script parameter in /etc/samba/smb.conf was changed to use smbldap-useradd.
Il y a des utilitaires dans le paquet smbldap-tools qui n'ont pas été abordés ici. En voici la liste complète :
Ressources
-
Pour plus d'informations sur l'installation et la configuration de Samba, voir la section Samba de ce guide du serveur Ubuntu.
-
There are multiple places where LDAP and Samba is documented in the upstream Samba HOWTO Collection.
-
Concernant ce qui précède, voir en particulier la section passdb.
-
Bien que daté de 2007, le HOWTO Linux Samba-OpenLDAP contient de précieuses notes .
-
La page principale de la documentation communautaire Samba Ubuntu a une pléthore de liens vers des articles qui peuvent s'avérer utiles .