= Fichiers et services de partage = Ce module couvre SAMBA et NFS. Les objectifs portent sur quelques implémentations spécifiques tels que les serveurs de fichiers et les partages d'imprimante. ## ## États possibles du document ## ## {a_trad} -> à traduire (disponible) ## {traduc} -> en cours de traduction ## {a_reli} -> à relire ## {relect} -> en cours de relecture ## {publie} -> publié (à jour) ## {a_revi} -> à réviser (à mettre à jour) ## '''État''' : {a_reli} [[../|Retour au document principal]] <> '''Pré-requis''' * Niveau LPIC 1 == 1. Les outils client de Samba == ||'''nmblookup'''|| {{{ nmblookup trainer-1 querying trainer-1 on 192.168.3.255 192.168.3.101 trainer-1<00> }}} ||'''smbpasswd'''|| ||smbpasswd -a USER || Ajoute un utilisateur samba || ||smbpasswd -e USER || Active un utilisateur samba || ||'''smbtar'''|| ||Script utilisant smbclient pour archiver des partages SMB directement sur bande|| ||'''smbclient'''|| ||smbclient //HOST/SHARE Se logue sur un partage donné || ||smbclient -L //HOST Liste tous les partages disponible || ||'''sortie de smbstatus'''|| {{{ Samba version 2.2.7a-security-rollup-fix Service uid gid pid machine ---------------------------------------------- dean dean dean 3106 trainer-1 (192.168.3.101) Mon Nov 26 13:34:54 2003 IPC$ nobody nogroup 3106 trainer-1 (192.168.3.101) Mon Nov 26 13:34:45 2003 IPC$ nobody nogroup 3106 trainer-1 (192.168.3.101) Mon Nov 26 13:34:53 2003 dean dean dean 3106 trainer-1 (192.168.3.101) Mon Nov 26 13:35:14 2003 netlogon dean dean 3106 trainer-1 (192.168.3.101) Mon Nov 26 13:34:54 2003 public nobody nogroup 3145 drakelap (192.168.3.100) Mon Nov 26 13:35:34 2003 IPC$ nobody nogroup 3106 trainer-1 (192.168.3.101) Mon Nov 26 13:34:54 2003 }}} == 2. Configurer un serveur SAMBA == Le fichier de configuration de samba est '''smb.conf''' souvent présent dans '''/etc/samba'''. Dans lequel l'option ''[global]'' est présente, avec comme paramètres qui peut être défini tels que ''WORKGROUP=''. Le serveur SAMBA utilise deux démons appelés '''nmbd''' et '''smbd''' implémentant respectivement les services NMB et SMB. Les deux démons sont démarrés avec le script rc : {{{ /etc/rc.d/init.d/smb start }}} === Le manager de réseau, le fichier hôtes '''lmhosts''' === Ce fichier est généralement dans le même répertoire que le fichier '''smb.conf''' et est lu par '''nmbd''' pour résoudre les noms d'hôte NetBIOS. Le contenu du fichier est similaire au fichier /etc/hosts: {{{ 10.0.0.20 accounts }}} === Répertoires partagés === Nous allons définir un partage appelé ''readshare'' lequel est lisible et un autre appelé ''rw-share'' lequel a des permissions en lecture / écriture mais seulement accessible pour l'utilisateur ''tux'': ||'''Les options de smb.conf'''|| {{{ [readshare] comment = Read-only Directory path = /usr/local/news/ guest only = yes browseable = yes # C'est optionnel [rw-share] comment = Read-write Share for tux path = /usr/local/documents browseable = yes guest ok = yes writeable = yes valid users = tux }}} === Partage d'imprimantes === Nous avons choisi d'exporter toutes les imprimantes définies avec CUPS sur le serveur Linux. Ce qui suit est la configuration qui permettra ceci: ||'''Les options de smb.conf'''|| {{{ [global] printcap name = cups load printers = yes printing = cups # Imprimante sans filtre [printers] comment = All Printers defined using CUPS path = /var/spool/samba browseable = no guest ok = yes # autorise les utilisateurs anonyme writable = no printable = yes create mode = 0700 #Les pilotes d'imprimantes doivent être présent coté client print command = lpr-cups -P %p -o raw %s -r }}} === Implémenter WINS avec Samba ? === Sur un réseaux de machine NetBios les noms sont résolus par l'utilisation du ''service d'information réseau Windows'' ou WINS. Les clients peuvent utiliser soit des requêtes d'émissions de noms d'hôte ou être configuré pour utiliser un serveur WINS. Ce serveur permet de réduire la quantité de trafic sur le réseau suite aux émissions. '''SAMBA comme serveur WINS ''' Pour activer WINS dans SAMBA l'option suivante doit être renseigné dans '''/etc/smb.conf''' {{{ wins support = yes }}} Les clients Windows peuvent alors être configurés pour utiliser le serveur SAMBA en tant que serveur WINS. '''Serveur WINS secondaire''' Un réseau NetBIOS possède généralement un seul serveur WINS. Si un second serveur est configuré alors les serveurs doivent être en mesure de synchroniser leurs informations sur l'hôte. On peut configurer SAMBA pour s'enregistrer sur un réseau existant comme serveur WINS secondaire en lui donnant l'adresse du serveur primaire avec l'option: {{{ wins server = }}} {{{#!wiki caution '''Informations''' L'option ''Wins support'' et ''wins server'' sont mutuellement exclusifs. L'option ''wins server '' enregistre le serveur SAMBA avec un serveur WINS existant et permet des capacités WINS, il n'est pas nécessaire de définir l'option "wins support" ainsi. }}} === Serveur SAMBA comme contrôleur de domaine === ||'''Options sélectionnées dans /etc/samba/smb.conf:'''|| {{{ security = users domain master = yes local master preferred master = yes domain logon = yes [netlogon] path=/var/lib/samba/netlogon writable = no public = no }}} {{{#!wiki caution '''Informations''' Vous n'avez pas besoin d'avoir un script d'ouverture de session. Ce partage netlogon est quelque chose que le client Windows doit se connecter même si il est vide. }}} == 3.Configurer un serveur NFS == ''Le protocole NFS est conçu pour être portable sur différentes machines, systèmes d'exploitation, les architectures de réseau et les protocoles de transport. Cette portabilité est assurée par l'utilisation de Remote Procedure Call (RPC) primitives construit au sommet d'une représentation externe de données (XDR) (RFC1094 NFS v2)'' ''NFS (Network File System) version 4 est un protocole de système de fichiers distribués qui est le descendant des versions du protocole NFS 2 [RFC1094] et 3 [RFC1813]. Contrairement aux versions antérieures, le protocole NFS version 4 prend en charge l'accès aux fichiers traditionnels tout en intégrant le support de verrouillage de fichier et le protocole de montage [...] La version 4 du protocole NFS [...] retient les caractéristiques essentielles des versions précédentes: la conception pour la récupération facile, indépendant des protocoles de transport, systèmes d'exploitation et les systèmes de fichiers, la simplicité, et de bonnes performances "(RFC3010).'' Le serveur NFS lance les démons suivant : {{{ rpc.nfsd rpc.mountd }}} Ces services sont démarrés avec le service '''nfs''': {{{ /etc/init.d/nfs start/stop/status/restart/reload }}} En outre ''rpc.statd'' est utilisé pour avertir le client lorsque le service NFS est interrompu de façon inattendue , et permet aux clients ''rpc.lockd'' de verrouiller des fichiers accessibles sur le serveur. Ces services sont lancés avec le service '''nfslock''': {{{ /etc/init.d/nfslock start/stop/status/restart }}} Les programmes utilisant les appels de procédure distante (RPC) utilises des numéros de programme spécifique figurant dans '''/etc/rpc'''. Quand un service RPC est lancé, il va préciser à '''portmap''' quel numéro de port il utilise ainsi que son numéro de programme. ||Il est nécessaire que '''portmap''' doit être exécuté avant de commencer un service NFS|| Les clients RPC se connecte au service portmap, même si il est possible de contourner portmap si le numéro de programme RPC est connu. '''Le fichier /etc/exports''' Syntaxe : '''Répertoire () ()''' Options commune de '''/etc/exports''' : ||ro || Lecture seulement. Il y a aussi l'option lecture /écriture ''rw''|| ||no_root_squash||remplacer la valeur par défaut (root_squash) où root est mappé à l'utilisateur nobody || ||async ||le serveur écrit sur le disque à intervalles prédéfinis (peut causer des pertes de données )|| ||sync||utilise la synchronisation plutôt que async lors de l'exportation d'un répertoire en lecture-écriture|| '''Mappages utilisateur''' Une fois qu' un répertoire distant est monté sur le client en local on pourrait s'attendre que les utilisateurs locaux puisse accéder à leurs fichiers comme si le répertoire aurait été monté localement. Toutefois, ce ne sera que le cas si les UID sur les systèmes locaux et distants correspondent. {{attachment:nfs1.jpg}} NFS est généralement utilisé dans un environnement où les UID sont communs entre le serveur et les clients. '''Anonuid et Anongid''' Il est possible, en utilisant les options '''anonuid''' et '''anongid''' d'attribuer un UID unique et anonyme, ou un GID par répertoire exporté. Les utilisateurs montant le partage auront le droits de ce ID anonyme sur le serveur. Par exemple, tout le monde aura accès au partage ci-dessous et héritent du droit de l'utilisateur distant avec l' UID = 150 et GID = 100. {{{ /share *(rw,anonuid=150,anongid=100) }}} '''Root Squashing''' Par défaut, l'utilisateur root sur le système client sera mappé à l'utilisateur '''nobody''' sur le serveur. Cette option est désactivée dans '''/etc/exports''' avec l'option '''no_root_squash''' {{attachment:nfs2.jpg}} Enfin, il est possible de cartographier tous les utilisateurs de n'importe quel client avec l'utilisateur '''nobody''' avec l'option '''all_squash'''. '''TCPwrappers''' L'outil '''portmap''' a été compilé avec libwrap nous donnant la possibilité de contrôle d'accès dans '''/etc/hosts.allow''' et '''/etc/hosts.deny'''. {{{ strings `which portmap ` |grep hosts.allow }}} '''Utilisation de exportfs et nfsstat''' La commande '''exportfs''' sans argument va afficher tous les repertoires exportés. ||'''options d' exportfs'''|| ||-r ||Relit /etc/exports et exporte tous les repertoires listés|| ||-U ||Stop l'exportation de tous les partages || ||-a ||s'applique à toutes les exportations || ||-o ||spécifier les répertoires qui ne figurent pas dans /etc/exports|| L'affichage des statistiques de '''nfsstat''' est faite pour le serveur NFS et l'activité client. Les informations sont luent a partir de 2 fichiers : ''/proc/net/rpc/nfs'' Contient les informations au sujet de l'activité client ''/proc/net/rpc/nfsd'' Contient les informations au sujet du serveur NFS ||''options de nfsstat''|| ||-s||affiche seulement les statistiques serveur || ||-n || affiche seulement les statistiques NFS || ||-r || affiche seulement les statistiques RPC || ||-o || affiche les statistiques pour des utilitaires spécifiques (nfs,rpc,net,fh,rc) || ||-c || affiche seulement les statistiques client || == 4.Mise en place d'un client NFS == ||'''options de mount'''|| ||soft||Quand une expiration majeur apparait, il envoie au programme une erreur en I/O, plutôt que ressayer indéfiniment|| ||hard||Quand une expiration majeur apparait, le rapport "serveur ne répond pas" apparait et continu de se reconnecter indéfiniment à moins que l'option ''intr'' est également spécifié|| ||bg ||Si la première tentative de montage échoue les autres tentatives se feront en arrière plan (par défaut fg)|| ||intr||Permet d'interrompre les requêtes NFS || ||nolock|| Parfois nécessaire avec des version antérieur de serveur NFS || ||rsize=n / wsize=n||Définit les tailles de bloc de communication pour lire et écrire. La valeur par défaut est de 1024 octets. Sur un réseau la vitesse peut être améliorée par la mise en n à 8192|| ||'''Erreurs'''||'''Causes possible'''|| ||mount: RPC: Program not registered || Le serveur NFS n'est pas démarrer || ||mount: IP:share failed, reason given by server: Permission denied || Mauvais répondre || L'outil '''showmount''' permet de voire les partages sur un hôte distant, les principales options sont : ||showmount -a server|| Liste les clients ip et les repertoires montés || ||showmount -e server|| Liste le contenu de /etc/exports du serveur || ||showmount -d server|| Liste seulement les repertoires exportés sur le serveur||