La section global du smb.conf permet de définir le rôle et le comportement du serveur samba dans le réseau, en positionnant un certain nombre de paramètres. La liste qui suit n'est pas exhaustive, la lecture du man et de la documentation est un passage obligé.
workgroup: indique le groupe de travail dans lequel Samba est intégréserver string: le nom NetBIOS du serveur tel qu'il apparaîtra dans le réseuasecurity: prend une valeur parmishare, user, server, domain, ads.sharepermet un accès aux ressources en se basant uniquement sur les droits des fichiers Unixusercorrespond à l'identification par login/motdepasse. Si l'iauthenfication réussit, l'attribution d'un GID/UID permet de contrôler l'accès aux ressources pour toute la sessionserverpermet d'indiquer à Samba de faire partie d'un domaine NT en tant que serveur membre (ancienne utilisation, obsolète)domainpermet d'indiquer à Samba de faire partie d'un domaine NT en tant que serveur membre. Toutes les demandes d'authentification seront relayées au contrôleur de domaine.adsfait du serveur Samba un membre actif d'un domaine Active Directory et ainsi accepter des tickets Kerberos.
hosts allow: permet de donner les plages d'adresses IP pouvant accèder au serveurprinting: indique le système d'impression à utiliserguest account: indique éventuellement la compte utilisé lors de connexion anonymes. Par défaut il s'agit denobodylog file: dans le cas d'une valeur de type/var/log/samba/log.%m, permet de spécifier un fichier de journalisation par machinepassdb backend: indique le backend des mots de passe samba. Par défaut il s'agit detdbsam.interfaces: spécifie la liste des interfaces réseau sur lesquelles Samba peut accepter les connexionsos level: une valeur élevée augmente les chances d'élection de Samba en temps que maître explorateur dans un Workgroup Windows™.preferred master: augmente les chances d'élection de Samba en temps que maître explorateur dans un Workgroup Windows™.logon script, logon path: indique les différents scripts et leur emplacements pour des exécutions au démarrage des machines membres d'un domaine NT, ou au login des utilisateurs.wins supprt, wins server: indique si samba peut être serveur Wins, et dans le cas contraire quel est le serveur Samba sur le réseau.Les différents scripts permettant la gestion des utilisateurs et des groupes depuis des stations clientes sur le domaine.
[global] workgroup = FREMENS server string = FRE_PDC hosts allow = 172.17.9 security = user socket options = TCP_NODELAY local master = yes os level = 99 domain master = yes preferred master = yes domain logons = yes logon script = login.bat logon home = \\serveur\profil\%U name resolve order = host wins lmhosts bcast wins support = yes dns proxy = yes add user script = /usr/sbin/useradd %u add group script = /usr/sbin/groupadd %g add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u delete user script = /usr/sbin/userdel %u delete user from group script = /usr/sbin/deluser %u %g delete group script = /usr/sbin/groupdel %g
Chaque ressource SMB sur le serveur est spécifiée dans une section de smb.conf portant son nom. Les principales options sont les suivantes :
path: chemin du répertoire à partagercomment: texte visible dans le voisinage réseau clientguest ok: siyespartage en accès libre sans authentificationvalid users: liste des utilisateurs autorisés à se connecter à la ressourceprintable: partage d'un service d'impression et non d'un répertoirewriteable: permet ou non l'écriture sur le répertoire, contraire de read onlywrite list: tous les utilisateurs autorisés à écrirebrowseable: visibilité du partage par tous, même les utilisateurs non autoriséscreate mode | mask: droits maximum accordés à un fichier créé dans la ressourcedirectory mode | mask: droits maximum accordés à un répertoire créé dans la ressourceforce directory mode: droits imposés lors de la création du répertoireforce group: Impose un groupe propriétaire d'un fichier lors de sa création dans le partagehide dot files: cache les fichiers cachéshosts deny, allow: toutes les stations interdites, autorisées à accéder à la ressourcesmax connections: nombre maximum de connexions simultanées à la ressources
[homes] comment = Domiciliation browseable = no writable = yes force create mode = 0775 force group = resp [stagiaires] path = /export/stagiaires comment = Groupe writable = yes browseable = yes force create mode = 0777 [netlogon] comment = LogonService path = /export/netlogon writable = yes browseable = no write list = admin [profil] path = /export/profil browseable = no writable = yes [document] comment = Document path = /export/document writable = yes browseable = yes [appli] comment = Applications path = /export/appli writable = yes browseable = yes write list = admin
Nous allons nous intéresser à la gestion des utilisateurs utilisant le backend par défaut, tdbsam. L'outil le plus communément utilisé pour ajouter des utilisateurs Samba est smpasswd :
smbpasswd [-a] [-c <config file>] [-x] [-d] [-e] [-D debuglevel] [-n]
[-r <remote machine>] [-R <name resolve order>] [-m]
[-U username[%password]] [-h] [-s] [-w pass] [-W] [-i] [-L]
[username]
smbpasswd permet de faire la correspondance entre les utilisateurs Unix et les utilisateurs Samba. Les informations relatives aux comptes sont stockées dans le fichier /usr/local/etc/samba/smbpasswd alors que les mots de passes sont stockés dans /usr/local/etc/samba/secret.tdb.
Il n'est donc pas possible de créer un compte samba n'existant pas à priori dans Unix ! L'authentification sur le serveur Samba aura donc pour conséquence de chercher dans les fichiers précédemments cités une correspondance. Si l'utilisateur est correctement authentifé, alors chaque accès à une ressource du système hôte Samba passera par la vérification des droits Unix correspondant à son compte et à ses groupes unix.
La gestion d'un réseau via un domaineamène plusieurs avantages non négligeable :
SSO
Tous les accès réseau et les droits sont gérés depuis le gestionnaire SAM (Security Account Manager)
Les configurations de sécurité des postes Windows™ peuvent être gérées via les fichiers de stratégie sytème.
L'exécution de scripts de démarrage permet de connecter des ressources réseau et d'automatiser certaines tâches.
La centralisation des comptes dans une base de données sur un serveur du domaine
Pour arriver à ce niveau d'intégration des fonctionnalités Windows™, Samba intègre quelques utilitaires complémentaires, permettant par exemple l'ajout des postes Windows™ au domaine, le mappage entre les groupes Windows™ et Unix, etc ...
L'intégration d'un poste Windows™ à un domaine passe par sa configuration (Poste de Travail). Une demande est alors envoyée au contrôleur de domaine, qui doit ajouter le poste dans sa base (et particulièrement affecter un SID au poste). Dans le cas d'un serveur Samba, le service doit alors soit avoir un compte utilisateur représentant la machine à intégrer, soit créer le compte correspondant automatiquement.
La création manuelle d'un compte pour un machine consiste à ajouter un compte Unix standard, n'ayant pas de Shell ni de répertoire de domiciliation, et appartenant au groupe machine. Ceci est possible en utilisant les utilitaires classiques des distributions Linux ou des systèmes *BSD.
La deuxième méthode consiste à prévoir dans le fichier de configuration la commande qui sera exécutée au moment de l'intégration d'un poste dans le domaine.
add machine script = /usr/sbin/useradd -d /var/lib/nobody -g 100 -s /bin/false -M %u
La ligne précédente ajoutée dans la section globale de smb.conf permet d'exécuter la ligne de commande /usr/sbin/useradd -d /var/lib/nobody -g 100 -s /bin/false -M %ulors de l'intégration d'un poste au domaine. Bien sûr, il faut adapter la commande à chaque cas précis.
De la même manière, il est possible de spécifier les différentes commandes à lancer lors de la manipulation des groupes et des utilisateurs. Ainsi,il devient possible de manipuler les comptes du domaine depuis un poste distant, à condition de disposer des autorisations root sur le serveur.
Dans le cas d'une configuration de Samba en PDC, il peut être intéressant de mapper les comptes prédéfinis des domaines Windows™ avec les comptes Unix. Par exemple, le groupe Domain Admins est automatiquement ajouté au groupe Administrateurs dans les clients Windows™ lors de leur connexion au domaine. Ceci permet par exemple de définir des utilisateurs sur le domaine faisant partie du groupe Domain Admins, et qui seront de fait Administrateur de chaque poste du domaine.
La correspondance entre les groupes Unix et les groupes Windows permet de regrouper la gestion des groupes dans un même environnement, et se fait via la commande net. Cette commande va permettre de tenir à jour un fichier de mappage entre les SID des groupes Windows™ et les groupes Unix.
arrakis# net groupmap add ntgroup="Domain Admins" unixgroup=admin rid=512 type=d
La commande précédente permet donc de mapper le groupe unix admin avec le groupe NT Domain Admins. Ainsi, tous les membres du groupe Unix admin seront administrateur de tous les postes du domaine NT. Bien entendu, le principe peut-être étendu à l'ensemble des groupes Windows™.