# Le système d'exploitation GNU-Linux/Le partage de fichiers Samba

* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
[ Modifier le sommaire ]

## Introduction

Samba est l'implémentation du protocole SMB (Server Message Block) sous Unix / Linux. Il sert à partager des fichiers et des imprimantes avec les réseaux Microsoft.
Site officiel : www.samba.org
Samba lance deux services : smbd et nmbd.
Le protocole SMB est tout sauf performant : il pollue le réseau par l'utilisation intensive du broadcast.
Samba utilise les ports 137 (netbios name service, nbname, en UDP), 138 (netbios datagram service nbdatagram, en UDP), 139 (netbios session service, nbsession, en TCP), et 445 ("direct-hosted" tcp, en tcp et udp).
La méthode de connexion traditionnelle smb utilise les ports 137, 138 et 139 tandis que la nouvelle méthode (CIFS, sur Windows XP) n'utilise que le port 445.

## Installation

Pour installer Samba, on tape la commande suivante :

## Configuration

Le fichier de configuration de Samba est /etc/samba/smb.conf.
Le programme testparm analyse le fichier smb.conf et signale les erreurs éventuelles.
Après avoir modifié la configuration, il faut relancer le service :
Le fichier /etc/samba/smb.conf se divise en différentes sections :
* La section [global] : configuration globale de samba
* La section [homes] : cette section particulière permet de remonter une ressource qui correspond au répertoire de travail (home directory) de l'utilisateur qui s'est authentifié.
On peut ensuite créer différentes sections, une par partage voulu.
Samba peut fonctionner de différentes manières. Voici quelques cas de figures courants.

## Le partage par ressource sur un réseau Workgroup

Voici un fichier /etc/samba/smb.conf permettant de partager une ressource (répertoire ou imprimante) sur un réseau Workgroup :
Dans le cas du mode share, pour pouvoir positionner un mot de passe sur une ressource, il faut créer un compte UNIX 'invite' :
On crée ensuite une entrée dans le fichier /etc/samba/smbpasswd :
Le mot de passe saisi correspondra à celui du répertoire partagé.
NB : dans les versions récentes de Samba, il faut utiliser la commande pdbedit à la place de smbpasswd :
Il faut ensuite créer le répertoire partagé et donner l'arborescence partagée à l'utilisateur invite du groupe invite :
NB : il faut que l'utilisateur nobody ait le droit d'écriture sur le répertoire partagé.
Petit rappel : il est toujours utile de faire un testparm pour vérifier la cohérence du fichier de configuration, et ne pas oublier de relancer le service pour que les modifications soient prises en compte.
On peut tester la configuration avec la commande smbclient :
La commande smbclient demande un mot de passe, on tape entrée.

## Le partage par utilisateur sur un réseau Workgroup

Voici un fichier /etc/samba/smb.conf permettant de partager une ressource (répertoire ou imprimante) avec une authentification Utilisateur / Mot de passe sur un réseau Workgroup :
Dans le cas du mode user, pour ne partager une ressource partagée qu'à certains utilisateurs, il faut tout d'abord créer un compte UNIX pour chacun d'eux :
On crée ensuite une entrée dans le fichier /etc/samba/smbpasswd :
NB : dans les versions récentes de Samba, il faut utiliser la commande pdbedit à la place de smbpasswd :
Coté Linux, les utilisateurs doivent avoir le droit d'écriture sur le répertoire partagé. La meilleure méthode consiste à créer un groupe Unix contenant les utilisateurs autorisés, et d'attribuer le répertoire partagé au groupe en question :
Avantage : pour partager cette ressource à de nouveaux utilisateurs, il suffit de leur créer le compte Unix, une entrée dans smbpasswd et de les ajouter au groupe prive (il n'est plus nécessaire de modifier le fichier smb.conf).
Permet de définir le propriétaire des fichiers créés avec l'option +s. Ici les propriétaires seront les membres du groupe prive au lieu de l'utilisateur.

## Connexion à un Active Directory Windows 2012

Serveur AD : SERV2012 (192.168.10.254)
Domaine : DOMWIN.LAN

### Configuration de /etc/resolv.conf

Il faut indiquer dans le fichier /etc/resolv.conf d'utiliser le serveur AD en tant que serveur DNS :

### Configuration de Kerberos

On installe Kerberos pour l'authentification sur AD :
On configure Kerberos avec notre domaine AD (DOMWIN.LAN) :

### Connexion au domaine AD

On obtient un ticket Kerberos :
On récupére le SID du serveur AD (nom netbios de AD : SERV2012) :
On rejoint le domaine AD :
On vérifie en interrogeant les partages du serveur AD. Pour cela, on utilise un compte définit sur AD :
On essaye d'accéder à un partage définit sur AD :
Fichiers /etc/krb5.conf et /etc/samba/smb.conf : Voir pastebin.com/EDxh7yqH

## Le partage sur un domaine Microsoft

Voici un fichier /etc/samba/smb.conf permettant de rejoindre un domaine existant afin de partager des ressources :
Remarque : Pour que le serveur Linux puisse rejoindre le domaine existant, il faut se connecter au moins une fois avec le compte Administrateur défini sur le contrôleur de domaine, afin que ce dernier crée un compte machine :
Dans le cas du mode server, les utilisateurs (login et mot de passe) sont définis sur un serveur existant.
Coté Linux, les utilisateurs doivent avoir le droit d'écriture sur le répertoire partagé. Cependant, les utilisateurs ne sont pas définis sur le serveur Linux mais sur le contrôleur de domaine. La solution consiste à permettre à tout le monde d'écrire dans ce répertoire, Samba se chargeant de n'autoriser que les utilisateurs autorisés sur le contrôleur de domaine.

## Samba en contrôleur de domaine Microsoft

Voici un fichier /etc/samba/smb.conf permettant de faire un contrôleur de domaine Microsoft :
On crée ensuite le compte de l'utilisateur admin. il faudra utiliser ce compte lors de la première connexion d'un ordinateur au domaine.
NB: Sur une Ubuntu, le groupe admin existe déjà, donc, soit on rajoute l'option --ingroup users, soit on utilise un compte différent pour l'administration (ex: Administrateur).
NB2 : dans les versions récentes de Samba, il faut utiliser la commande pdbedit à la place de smbpasswd :
Pour chaque membre du domaine, il faut créer un compte unix correspondant à la machine et rajouter une entrée de type machine dans smbpasswd.
Attention : ce login doit porter le nom netbios de la machine et se terminer par un dollar (d'ou le --force-badname) :
NB : On peut automatiser la création des comptes machines en rajoutant la ligne suivante dans la section [global] de smb.conf :
Sous Debian :
Sous Redhat :
Il faut aussi créer le répertoire pouvant accueillir le netlogon :
On crée également le répertoire stockant les profils itinérants :
Le netlogon peut servir par exemple à créer automatiquement un volume réseau (ex: Z:), ou ajuster l'heure de l'ordinateur avec celle du contrôleur de domaine.
On peut optionnellement créer un fichier logon.bat :
Il faut ensuite relancer samba et winbind :

## Utilisation de smbclient

smbclient est un client pour les réseaux samba.
Exemple :

## Monter un répertoire réseau

Manuellement :
Automatique à chaque démarrage :
Rajouter dans /etc/fstab :

## Utilisation de SWAT : Samba Web Administration Tools

SWAT est une page web permettant de configurer samba de façon plus "simple", mais comme souvent avec les interfaces graphiques, de manière moins pointue.
Pour les amateurs du clickodrôme:
<Image de SWAT>
Une fois installé, on accède à SWAT avec un navigateur sur l'adresse localhost:901 Swat va lire le fichier smb.conf et le présenter dans une page html. Les onglets permettent de configurer les partages, les imprimantes, de voir les docs etc. Par défaut, l'accès distant à SWAT est interdit, mais il est activable. Toutefois, il est déconseillé d'utiliser cette option.