====== A. Installation du serveur SAMBA ====== __Plusieurs méthodes d'installation en fonction de votre distribution, soit par__ : * Le site www.SAMBA.org, en téléchargeant la source, * soit par votre gestionnaire de paquets. __Les paquages (par défaut) sont__ : * samba * samba-client * samba-common (souvent intégré au package samba) * samba-doc (pas nécessaire mais contient la documentation disponible sur le site de samba) __**Note**__ : //Sur Suse il suffit de cliquer 2 fois sur l'icône “serveur SAMBA” dans “services réseaux” (dans Yast).\\ L'installation des paquages se fait automatiquement.// La commande « **smb – V** » vous permet de connaitre la version de votre serveur installé.\\ __Pour consulter la liste des fichiers constituant les paquets__ :\\ **//rpm -ql nomdupaquet//**\\ \\ __Pour supprimer un paquet proprement__ : //**rmp -e nomdupaquet**// ====== B. Test du démon smbd et du partage ====== La 1ère étape est de tester le démon smbd. Pour cela, créer un partage sur une machine Windows.\\ Ajouter un utilisateur sur ce partage. L'utilisateur doit disposer d'un mot de passe. En effet, sans le mot de passe l'authentification à la ressource partagée ne se fera pas. \\ Sans aller dans le détail, cela est une restriction dû aux droits NTFS. La commande pour tester tous les partages (locaux ou distants) est « **smbclient** » smbclient //ippcdistant/nomdupartage -Uutilisateurdistant L'option **"-U"** permet de renseigner l'utilisateur autorisé à accéder au partage. La même commande peut-être utilisée avec la valeur "**%mp**" afin d' éviter la demande du mot de passe de l'utilisateur. smbclient //ipdistant/partage -Uuser%mp Le prompt smb apparait. La commande « **help** » vous permet d'obtenir les commandes disponibles. * ls = lister le contenu du répertoire * mkdir = créer un répertoire * get nomfichier = obtenir le fichier spécifié * rm = supprimer un fichier. * quit = quitter ... **__Note__** : //Certaines commandes comme chmod, chown, rm... sont des commandes propre au noyau UNIX et ne fonctionneront pas si votre partage se trouve sur un système Windows.// ====== C. Constitution du fichier SMB.CONF ====== Votre fichier de configuration se situe dans la répertoire **/etc/samba/smb.conf** (sous suse/debian) Pour l'éditer, vous pouvez utiliser l'éditeur de texte « vi » vi smb.conf ===== 1. Les sections. ===== Smb.conf est défini en section entre crochet. Elle se termine dès l'apparition d'une autre section. Le nom d'une section désigne un service correspondant à un répertoire ou à une imprimante. __Chaque section contient des options sous la forme__ : **option** = **valeur** Les noms des sections et des options sont insensibles à la casse.\\ Les lignes commençant par un "**#**" ou "**;**" sont ignorées. **__Note__** : //Samba détecte les modifications du fichier smb.conf. Il le relis au bout d'une minute.\\ Néanmoins il est possible de redémarrer les démons smbd (/etc/init.d/smb restart) pour forcer la relecture du fichier.// //init.d est le démon TCP/IP.// ===== 2. Les sections jouant un rôle particulier ===== **[global]** //Cette section décrit le comportement général de samba.// **[homes]** //Cette section permet de partager votre répertoire utilisateur.// **[printers]** //Cette section permet l'accès aux imprimantes du système.\\ Il rgarde dans le fichier de configuration /etc/cups/printers.conf// ====== D. Les ACL ====== Comme sous Windows il y a une gestion des ACL sous un noyau UNIX. * Les ACL concernant votre partage (pensez à l'onglet "partage" dans windows), * les ACL concernant la sécurité de votre partage (onglet "sécurité" de windows") Ce sont les ACL les plus restrictives qui sont pris en compte. Sous UNIX c'est exactement la même chose. * Vos ACL de "partage " sont configurés dans votre fichier smb.conf via des options comme "writable, read only...". * Les ACL de "sécurité" sont paramétrés sur le répertoire via la commande "chmod" Ains, si dans votre fichier smb.conf vous avez l'option "**writable**" positionné en yes et que dans votre répetoire de partage seul l'utilisateur root peut écrire, il vous sera impossible d'écrire dans ce répertoire. ====== E. Fonctionnement de chmod ====== Bien que cette documentation traite de SAMBA, il est important de rappeler les bases concernant les droits de sécurité afin d' éviter toutes erreurs de paramétrage. la commande « **__ls -l nomdurépertoire__** » vous liste les droits de sécurité. **__Example__** : ls -l __Cela va donner__ : drwxrwxrwx samba Un droit sur Unix est défini en une chaîne de neuf caractères (le d = directory) décomposé en trois bloc. * Le 1er bloc représente les droits du propriétaire. * Le 2e bloc représente les droits du groupe. * Le 3é bloc représente les droits des autres. r= read\\ w= write\\ x=execute\\ ===== 1. La représentation octale ===== __Pour modifier les droits sur un fichier ou répertoire il est possible de la faire de 2 façons__ : * représentation octale * représentation symbolique Nous verrons ici que la représentation octale est très simple et rapide à saisir. Comme les droits sont positionnels, on peut les représenter sous formes de bits (0/1) Il faut donc 3 bits pour représenter un triplet de droits. {{manuel:droits.jpg|}} Le droit r = 4\\ le droit w = 2\\ le droit x = 1\\ Si je souhaite obtenir les droits suivants "**rwxr-xr-x**" alors le chmod du fichier ou répertoire sera de "**755**" Examples : chmod 755 toto __Si je veux modifier le propriétaire par un utilisateur "admin" :__ chown admin toto __Si je veux remettre le propriétaire du répertoire par "root" et je veux mettre le groupe par "users" :__ chown root:users toto ====== F. Les options "Security" ====== Tout au long de la documentation nous allons utiliser l' option "**Security**" qui peut prendre 5 valeurs. **__Share__** * Mode de fonctionnement le plus simple, pas d'authentification. * Déconseillé sauf pour les configurations simples en mode anonyme. * Mapping des connexions anonymes réalisé sur l'utilisateur système défini dans le paramètre "**guest account**" de la section globale. __**User**__ (par défaut) * Samba gère sa propre base d'utilisateur. * L'utilisateur doit exister au niveau système avant d'être crée dans Samba (c'est à dire qu'il doit exister dans le fichier /ect/passwd). * Il n'y a plus de connexions anonymes sur la machine Samba. * Possibilité de faire apparaitre le répertoire personnel de l'utilisateur dans les partages. **__Domain__** (Intégrer le serveur Samba dans un domaine WinNT) * L'authentification est déportée sur un des contrôleurs du domaine Windows NT. * Peut-être une machine Windows ou une machine Samba * La machine SAMBA est alors un poste client ou un serveur membre d'un domaine. * La machine doit être jointe au domaine NT * Nécessite de partager les utilisateurs avec Winbind **__Server__** (obsolète, on l'utilisait avant, à la place de Domain) **__Ads__** * Identique à domain mais pour les réseaux Active Directory * Nécessite de partager les utilisateurs avec Winbind * Libraire Kerberos nécessaire ====== G. Partage SAMBA simple avec security "share" ====== Pour bien comprendre le fonctionnement d'un serveur SAMBA nous allons crée un nouveau fichier **smb.conf** et renommer l'original en .bak Mv /etc/samba/smb.conf /etc/samba/smb.conf.bak vi smb.conf __Saisissez cette 1ere configuration__ : [global] security = share [test] path = /chemindurépertoire (ex: /home/test) writable = yes guest ok = yes __Note__ : //Prenez pour habitude d'avoir une fenêtre qui affiche vos logs dans un terminal.\\ Faites un « **__tail -f /var/log/samba/log.smbd__** » qui affichera les 10 dernières lignes de votre log en temps réel.// Pour tester la configuration du fichier de configuration smb, faire un testparm\\ Pour tester la connexion et l'authentification : smbclient //localhost/partage **__Explications du fichier de configuration__** : Ici l'authentification n'est pas obligatoire et l'accès invité est autorisé.\\ Possibilité de lecture et d'écriture sur le partage grâce à l'option "**writable**" en fonction des droits chmod. Il est possible d'ajouter d'autres options que nous ne verrons pas sur ce mode de securité qui présente peu d'intérêts en terme de sécurité. ====== H. Partage simple avec "Security=user" ====== Pour rappel l'authentification au niveau du partage est obligatoire. [global] security = user [test] path = /chemindurépertoire writable = yes **__Explications__** : Afin de vous connecter sur le partage il faut créer l'utilisateur sur votre système (/etc/passwd)\\ useradd nom user __**Pour supprimer un utilisateur**__ : userdel nom user Enfin, il faut créer l'utilisateur Unix dans la base SAM du serveur samba.\\ smbpasswd -a nomuser __**Pour supprimer un utilisateur**__ : smbpasswd -x nomuser La commande "**__pdbedit__**" vous permet d'interroger la base SAM. L'option "**__help__**" sur une commande vous permettra d'en connaitre les diverses options disponibles.\\ "**__man__**" et le "**__nom de la commande__**" (ex : man pdbedit) vous affiche le manuel de la commande. ====== I. Partage simple avec répertoire partagé propre à l'utilisateur ====== ===== Le droit « sticky bit » ===== Ce droit n'a de sens que sur un répertoire et si plusieurs utilisateurs (membre du même groupe par exemple) peuvent y créer leurs fichiers. Ce droit empêchera la suppression des fichier/dossiers qui y sont contenus par quelqu'un d'autre que son propriétaire. **__Pour appliquer le droit « sticky bit », 2 solutions__** : - **Appliquer le droit sur le répertoire parent** chmod 1755 toto - **Ajouter l'option "Directory Mask" dans le smb.conf au niveau de votre partage** [global] security = user [test] path = /chemindurépertoire writable = yes Directoty mask = 1700 Create Mask = 1700 invalid users = le user ou @groupe de votre choix **__Explications__** : * Directory Mask Cette option adopte les notations octales propre à Unix pour indiquer les droits par défauts associés aux répertoires..\\ La valeur 1700 spécifie la « **lecture/écriture** » et « **exécution** » pour le « **propriétaire seulement** ». (rwx------). Ainsi si le « **propriétaire** » ne souhaite pas que les « **membres du groupe** » et les « **autres** » puissent consulter ses répertoires crées dans le partage il est possible d'y ajouter cette option. * Create Mask Idem que directory mask * Invalid users Cette option permet de définir des utilisateurs supplémentaires qui ne doivent pas accéder au partage. Les utilisateurs définit verront le partage mais ne pourront pas y accéder. ====== J. Particularité de la section [homes] ====== Cette section correspond à la possibilité de partager les répertoires de connexion des utilisateurs, sans avoir à les énumérer individuellement dans le fichier smb.conf. [homes] writable = yes browsable = no veto files = /.*/ **__Explications__** : L'option « **__browsable__** » avec la valeur «**__no__** » empêche le partage d'apparaître dans le voisinage réseau.\\ L'utilisateur pourra écrire dans son répertoire.\\ L'option «**__veto files__** » permet de masquer tous les fichiers commençant par un "**.**"\\ Ainsi que ce soit un sytème Unix ou Windows, il ne pas possible de visualiser les fichiers cachés de vos répertoires.