Configurer un serveur Samba
Updated 24 Mars 2021
# Introduction
Samba est un progiciel open source populaire qui fournit des services de fichiers et d'impression Microsoft® Windows® aux clients. Vous pouvez configurer votre serveur Samba avec Calculate Utilities, qui se trouve dans le paquet sys-apps/calculate-server. Les outils Calculate utilisent un serveur OpenLDAP pour la gestion des comptes d'utilisateurs, groupes et machines. Tous les logiciels nécessaires sont disponibles dans Calculate Directory Server.
Vous pouvez utiliser n'importe quel Calculate Linux Desktop comme client Linux (CLD, CLDC, CLDL, CLDM, ou bien CLDX). Différents systèmes d'exploitation Windows peuvent être utilisés comme clients Windows. Microsoft Windows ne supporte plus les domaines NT4. Cependant, avec quelques modifications, vous pouvez toujours utiliser les derniers systèmes d'exploitation Windows avec un domaine Samba NT4.
# Configuration du serveur
La configuration d'un serveur Samba se fait en plusieurs étapes. Étant donné que toutes les données relatives aux utilisateurs et aux hôtes sont stockées sur LDAP, il est nécessaire de configurer d'abord le serveur OpenLDAP, puis de configurer LDAP pour stocker les comptes d'utilisateurs Linux. Vous en avez besoin pour exécuter les clients Linux. Vous pouvez maintenant configurer votre serveur Samba.
# # Configuration du serveur LDAP
Configurez votre serveur LDAP conformément au manuel.
# # Configuration de Samba
Avant de configurer un serveur Samba, configurons LDAP pour le stockage des comptes utilisateurs Unix. Pour ce faire, exécutez:
? ? ? exec " cl-setup unix"
* ATTENTION * ATTENTION
? ? ? exec " cl-setup unix"
* ATTENTION * ATTENTION
* ATTENTION * ATTENTION
* ATTENTION * ATTENTION : L'exécution de ce programme modifie les fichiers de configuration et la base de données LDAP. Si vous voulez continuer, enter 'yes', else enter 'no': yes
yesyesyes* Added ldif file ... [ ok ] * Unix service configured ... [ ok ] ` ` `
Pour configurer votre serveur Samba, veuillez exécuter:
? ? ? exec " cl-setup [options] samba"
`
* WARNING: Running this program will modify the configuration files and the LDAP database. If you want to continue, enter 'yes', else enter 'no': yes
* Added ldif file ... [ ok ] * Starting Samba ... [ ok ] * User client added to Unix service * User client added to Samba service * User admin added to Unix service * User admin added to Samba service * Samba service configured ... [ ok ] ` ` `
Vous pouvez spécifier netbios ou workgroup comme options.
- -n name définit le nom NetBIOS du serveur Samba. Par défaut, il est égal à la première partie du nom d'hôte DNS.
- - w workgroup est le nom du domaine ou du groupe de travail NT pour les ordinateurs qui accèderont à ce serveur.
Définissez le mot de passe administrateur (login utilisateur admin ):
? ? ? exec " cl-passwd --smb admin samba"
Entrez un nouveau mot de passe:
Répétez le nouveau mot de passe:
* Mot de passe de l'administrateur utilisateur du service Samba modifié
! ! ! note
admin sert uniquement à ajouter un ordinateur client Windows au domaine. Admin n'a pas de répertoire personnel.
Si vous avez besoin d'un administrateur de domaine pour gérer votre réseau Windows, créez un nouvel utilisateur et ajoutez-le au groupe de domaine Domain Admins.
Voici un exemple de création d'un administrateur de domaine:
? ? ? exec " cl-useradd -p --gid "Domain Admins" -c "Domain Admin" d_admin samba"
Nouveau mot de passe SMB:
Répétez le mot de passe SMB:
* Utilisateur d_admin ajouté au service Unix
* Utilisateur d_admin ajouté au service Samba
# # Ajouter et supprimer des utilisateurs
Les commandes Calculate utilisées pour gérer les utilisateurs sont dérivées de celles d'Unix : cl-useradd
, cl-userdel
, cl-usermod
, cl-passwd
, cl-groupadd
, cl-groupdel
, cl-groupmod
. Leur syntaxe coïncide largement avec celle des utilitaires système du même nom.
Essayez d'ajouter l'utilisateur test et lui donner un mot de passe:
? ? ? exec " cl-useradd test samba"
* Test utilisateur ajouté au service Unix
* Test utilisateur ajouté au service Samba
? ? ? exec " cl-passwd test samba"
Nouveau mot de passe:
Répétez le nouveau mot de passe:
* Mot de passe de l'utilisateur du service Unix modifié
* Mot de passe de test utilisateur du service Samba modifié
# Paramètres des privilèges
# # Configuration des droits d'accès au système de fichiers
Pour modifier les permissions de fichiers sur le serveur, utilisez ACL ( Access Control List ). En modifiant les autorisations applicables aux fichiers, vous définissez des privilèges d'accès spécifiques pour ces derniers, tant pour les clients Windows que pour les clients Linux. Les fichiers et répertoires auxquels vous n'avez pas accès ne seront pas affichés dans le volume Samba.
Les permissions d'accès sont appliquées à la fois aux fichiers et aux répertoires. Vous pouvez spécifier des permissions pour le propriétaire du fichier ou un groupe. Alors que Windows ne reconnaîtra que les groupes Samba, Linux tiendra compte des groupes Unix et Samba. Il est donc préférable d'utiliser les groupes Samba pour différencier les droits d'accès.
Par exemple, créons un groupe Samba appelé manager.
? ? ? exec " cl-groupadd manager samba"
* Groupe 'manager' ajouté au service Samba
Pour créer le groupe Unix job, il suffit de saisir :
? ? ? exec " cl-groupadd job unix"
* Groupe 'job' ajouté au service Unix
# # Configurer les droits d'accès pour les utilisateurs Windows
Pour modifier des privilèges supplémentaires pour les ordinateurs Windows, tels que : le droit d'installer des programmes, le droit de quitter un domaine, etc., utilisez les groupes Samba.
Ci-dessous est un exemple pour donner les privilèges d'administrateur de domaine à l'utilisateur test :
? ? ? exec " cl-groupmod -a test 'Domain Admins' samba"
* Utilisateurs ajoutés au groupe Domain Admins
# Différents types de groupes Samba
Les groupes Samba peuvent être de types suivants :
- Domain groups (numéro de groupe de type 2)
- Local groups (numéro de groupe de type 4)
- Built-in groups (numéro du type de groupe 5 )
Groupes par défaut:
-
Groupes Samba de domaine, globaux pour un domaine donné
* Domain Admins pour les administrateurs de domaine (privilèges d'accès complets à l'intérieur du domaine).
* Domain Guests pour les invités du domaine (privilèges minimaux).
* Domain Users pour les utilisateurs de domaine.
* Domain Computers pour les ordinateurs de domaine. -
Groupe Samba local, qui ne concerne qu'un client spécifique
Il n'y a pas de groupes locaux. -
Les groupes intégrés sont des groupes insérés dans le système.
* Administrators - Administrateurs (privilèges complets)
* Les Account Operators sont des opérateurs de compte. Ils créent et gèrent des groupes et des informations sur les comptes d'utilisateurs, assurent la sauvegarde de fichiers et de répertoires.
* Les Backup Operators sont des opérateurs d'archives. Ils effectuent des sauvegardes et des restaurations à partir de sauvegardes, et se chargent également de l'arrêt du système.
* Les Print Operators sont des opérateurs d'impression. Ils gèrent les imprimantes et les sauvegardes.
* Les Replicators sont des réplicateurs. Ce groupe est utilisé par le service de réplication de fichiers au niveau des contrôleurs de domaine.
* Les System Operators sont des opérateurs du système. Ils s'occupent de la configuration de l'heure système, de l'arrêt du système, y compris à distance, de la sauvegarde et de la restauration à partir d'une sauvegarde, du verrouillage et du déverrouillage du serveur, du formatage du disque dur, de la gestion des répertoires du réseau, ainsi que des imprimantes.
Voilà comment faire pour créer un groupe de domaine test. Un groupe de domaines avec le numéro de type de groupe 2 est créé par défaut.
? ? ? exec " cl-groupadd test samba"
* Group 'test' added to Samba service
Par exemple, créez un groupe prédéfini, nommé Power Users , pour réunir les utilisateurs disposant de privilèges avancés.
? ? ? exec " cl-groupadd -g 547 --rid 547 -t 5 'Power Users' samba"
* Group 'Power Users' added to Samba service
où :
- g est l'identifiant de groupe,
547~ - rid est le RID, c'est-à-dire le numéro d'identification relatif,
547~ - t est le type de groupe,
5(groupe de base)
# Ajouter des clients Unix
? ? ? important " Si vous n'avez pas de DNS"
Le client doit résoudre le serveur calculate.example.org (hostname -f
). Si vous n'avez pas de connexion DNS, deux solutions sont possibles :
* Sur le client, ajoutez l'IP du serveur à ++/etc/hosts++ : ` ` ` <IP address> calculate.example.org ` ` ` * Sur le serveur, modifiez ++/var/calculate/remote/calculate.env++, en ajoutant son adresse IP. ` ` ` [client] sr_samba_host = <IP address> ` ` `
Pour ajouter des clients Unix, définissez le mot de passe
? ? ? exec " cl-passwd --smb client samba"
New password:
Repeat new password:
* Password of user client of Samba service modified
Exécutez ce qui suit sur l'ordinateur client :
? ? ? exec " cl-client DOMAINE"
* Check DOMAIN for domain locations ...
[ok]
Password to add the workstation to the domain:
* Samba location [remote] connected
* Templates for joining the domain applied ...
* The computer has been configured to work in the domain
* Computer added to DOMAIN domain
où DOMAINE est le nom du réseau ou l'IP du serveur.
# Ajouter des clients Windows
! ! ! important
Sous Windows, activez le compte Admin en exécutant la commande suivante :
net user Administrator /active:yes
# # Ajouter un client Windows 7
Pour ajouter un client fonctionnant sous Windows 7, connectez-vous au système sous le compte administrateur et utilisez l'éditeur de texte pour créer un fichier texte nommé samba_7_2008_fix.reg, contenant les éléments suivants :
! ! ! file " samba_7_2008_fix. reg"
`
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters] "DomainCompatibilityMode"=dword:00000001 "DNSNameResolutionRequired"=dword:00000000 ` ` `
Double-cliquez sur le fichier pour l'importer au registre. Redémarrez pour valider.
Rejoignez maintenant le domaine Samba. Pour ce faire, allez dans les Propriétés (Properties) de l'ordinateur, puis dans les paramètres d'accès à distance. Cliquez sur le bouton "Modifier"("Change") dans l'onglet Nom de l'ordinateur.
Ensuite, saisissez le nom de domaine de votre ordinateur :
Indiquez le couple identifiant/mot de passe de l'utilisateur créé sur le serveur Samba et appartenant au groupe des administrateurs du domaine :
L'ordinateur appartient désormais au domaine :
# # # Ajouter un client Windows 10
Pour connecter un client utilisant Windows 10, connectez-vous en tant qu'administrateur et créez un fichier texte nommé samba_7_2008_fix.reg , contenant les éléments suivants :
! ! ! file " samba_7_2008_fix. reg"
`
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters] "DomainCompatibilityMode"=dword:00000001 "DNSNameResolutionRequired"=dword:00000000 ` ` `
Double-cliquez sur le fichier pour l'importer au registre. Redémarrez pour valider.
Redémarrez maintenant le service samba :
? ? ? exec " /etc/init.d/samba restart"
samba | * samba -> stop: smbd ... [ ok ]
samba | * samba -> stop: nmbd ... [ ok ]
samba | * samba -> start: smbd ... [ ok ]
samba | * samba -> start: nmbd ... [ ok ]
Rejoignez maintenant le domaine Samba. Pour ce faire, allez dans les Propriétés (Properties) de l'ordinateur, puis dans les paramètres d'accès à distance. Cliquez sur le bouton "Modifier"("Change") dans l'onglet Nom de l'ordinateur.
Ensuite, saisissez le nom de domaine de votre ordinateur :
Indiquez le couple identifiant/mot de passe de l'utilisateur créé sur le serveur Samba et appartenant au groupe des administrateurs du domaine :
L'ordinateur appartient désormais au domaine :
# # Ajouter un client Windows Server 2008
Pour connecter un client utilisant Windows 2008, connectez-vous en tant qu'administrateur et créez un fichier texte nommé samba_7_2008_fix.reg , contenant les éléments suivants :
! ! ! file " samba_7_2008_fix. reg"
`
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters] "DomainCompatibilityMode"=dword:00000001 "DNSNameResolutionRequired"=dword:00000000 ` ` `
Double-cliquez sur le fichier pour l'importer au registre. Redémarrez pour valider.
Puis ajoutez le client au domaine Samba. Pour ce faire, allez dans les Propriétés (Properties) de l'ordinateur, puis dans les paramètres d'accès à distance. Cliquez sur le bouton "Modifier"("Change") dans l'onglet Nom de l'ordinateur.
Ensuite, saisissez le nom de domaine de votre ordinateur :
Indiquez le couple identifiant/mot de passe de l'utilisateur créé sur le serveur Samba et appartenant au groupe des administrateurs du domaine :
L'ordinateur appartient désormais au domaine :
# Affichage de l'information
Pour afficher les informations sur les utilisateurs et les groupes du serveur, utilisez l'outil `cl-info'. Le service unix ou samba peut être un paramètre.
Par exemple, pour voir la liste des utilisateurs Unix, exécutez:
? ? ? exec " cl-info -u unix"
Tous les utilisateurs LDAP pour le service Unix
+------+--------+-----------------------------+------------------+---------------------+
| ID | Login | Full name | Primary group | Home directory |
+------+--------+-----------------------------+------------------+---------------------+
| 900 | client | Client unix workstation | 900 | /dev/null |
| 901 | admin | Administrator samba service | 544 | /dev/null |
| 1000 | user1 | Calculate user | user1 | /home/user1 |
| 1001 | user2 | Calculate user | user2 | /home/user2 |
+------+--------+-----------------------------+------------------+---------------------+
(4 lines)
Pour lister les utilisateurs de Samba, exécutez:
? ? ? exec " cl-info -u samba"
Tous les utilisateurs LDAP du service Samba
+--------+-----------------------------+--------------+--------+
| Login | Full name | Blocked | Password |
+--------+-----------------------------+--------------+--------+
| client | Client unix workstation | No | Yes |
| admin | Administrator samba service | No | Yes |
| user1 | Calculate user | No | Yes |
| user2 | Calculate user | No | Yes |
+--------+-----------------------------+--------------+--------+
(4 строк)
Pour afficher les informations sur user1, qui utilise un service Unix, exécutez:
? ? ? exec " cl-info -U user1 unix"
Informations sur l'utilisateur user1 pour le service Unix
+-----------------------+--------------------------+
| Field | Value |
+-----------------------+--------------------------+
| ID | 1000 |
| Login | user1 |
| Full name | Calculate user |
| Blocked | No |
| Shown | Yes |
| Primary group | user1 |
| Additional groups | user1 |
| | group |
| Home directory | /home/user1 |
| Shell | /bin/bash |
| Password | Yes |
| Password modified | 25.09.2018 |
| Jabber ID | user1@server.example.com |
| Email | usr1@example.com |
+-----------------------+--------------------------+
(14 lines)
Pour afficher des informations sur user1, qui utilise un service Samba:
? ? ? exec " cl-info -U user1 samba"
Informations sur l'utilisateur user1 pour le service Samba
+-----------------------+------------------------------------------------------+
| Field | Value |
+-----------------------+------------------------------------------------------+
| Login | user1 |
| Full name | Calculate user |
| Blocked | No |
| Password | Yes |
| Password modified | 25.09.2018 |
| Additional groups | No |
| Home directory | /var/calculate/server-data/samba/home/user1 |
| Shared directory | /var/calculate/server-data/samba/share |
| Linux profile | /var/calculate/server-data/samba/profiles/unix/user1 |
| Windows profile | /var/calculate/server-data/samba/profiles/win/user1 |
| Windows logon | /var/calculate/server-data/samba/netlogon/user1 |
+-----------------------+------------------------------------------------------+
(11 lines)
Par exemple, pour lister les groupes Unix, exécutez:
? ? ? exec " cl-info -g unix"
Tous les groupes LDAP pour le service Unix
+------------+--------------------+------+
| Group | Full name | GID |
+------------+--------------------+------+
| maildomain | Default Mail Users | 1000 |
| user1 | Calculate group | 1001 |
| user2 | Calculate group | 1002 |
| group | Calculate group | 1003 |
+------------+--------------------+------+
(4 lines)
Pour lister les groupes de Samba, exécutez:
? ? ? exec " cl-info -g samba"
Tous les groupes LDAP pour le service Samba
+-------------------+-----+-------------------+
| Group | GID | Group Type |
+-------------------+-----+-------------------+
| System Operators | 549 | built-in group |
| Print Operators | 550 | built-in group |
| Domain Guests | 514 | domain group |
| Domain Admins | 512 | domain group |
| Account Operators | 548 | built-in group |
| Domain Users | 513 | domain group |
| Administrators | 544 | built-in group |
| client | 900 | domain group |
| Backup Operators | 551 | built-in group |
| Replicators | 552 | built-in group |
| Domain Computers | 515 | domain group |
+-------------------+-----+-------------------+
(11 lines)
Par exemple, voici une commande pour afficher des informations sur le groupe groupe du service Unix :
? ? ? exec " cl-info -G group unix"
+-----------------------+-----------------+
| Field | Value |
+-----------------------+-----------------+
| Group | group |
| Full name | Calculate group |
| GID | 1003 |
| Users in group | user1 |
| | user2 |
+-----------------------+-----------------+
(5 lines)
Par exemple, voici une commande pour afficher des informations sur le groupe Domain Users du service Samba:
? ? ? exec " cl-info -G 'Utilisateurs du domaine' samba"
Informations sur le groupe d'utilisateurs de domaine pour le service Samba
+-----------------------+-----------------+
| Field | Value |
+-----------------------+-----------------+
| Group | Domain Users |
| Full name | Domain Users |
| GID | 513 |
| Group type | domain group |
| Users in group | No |
+-----------------------+-----------------+
(5 lines)