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.

État : {a_reli}

Retour au document principal

Pré-requis

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 = <serveur wins existant>

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

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 :

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.

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

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