Configuration de Samba sur une machine UNIX
Le fichier smb.conf
C'est par ce fichier que l'on va établir la configuration des démon smbd
et nmbd. Il existe un fichier d'exemple de configuration nommé
"smb.conf.default", situé dans le répertoire
$(BASEDIR)/samba-1.9.18p7/examples.
Mais laissons un peu ce fichier de coté, et vérifions que la compilation s'est bien
déroulée.
Pour cela, créer un fichier (Un peu sophistiqué pour un exemple) smb.conf dans le
répertoire $(BASEDIR)/lib, en recopiant les données ci-après, et en modifiant les
données entre guillemets par les données du serveur.
[global]
workgroup = "Mon_Workgroup"
server string = (Samba %v)
browseable = yes
printing = bsd
printcap name = /etc/printcap
load printers = yes
log file = "Repertoire_source_samba"/var/%m.log
max log size = 100
lock directory = "Repertoire_source_samba"/var/locks
locking = yes
strict locking = no
share modes = yes
security = SHARE
null passwords = yes
socket options = TCP_NODELAY
# Permet au serveur Samba de devenir serveur de domaine
os level = 33
domain master = yes
# Facilite la gestion des noms longs
preserve case = yes
short preserve case = yes
character set = iso8859-1
[homes]
comment = Home Directories
preexec = /bin/sh -c 'echo "Repertoire_source_samba"/bin/smbclient -M %m -I %I'&
browseable = yes
read only = no
writable = yes
create mode = 0750
public = yes
["Nom_De_Partage"]
comment = "Commentaire"
path = /"Chemin_Acces_Repertoire_Partage"
browseable = yes
hide dot files = yes
read only = no
public = yes
writable = yes
create mode = 0775
printable = no
Pour tester un fichier de configuration, le mieux est d'utiliser la commande testparm.
Lorsque le programme testparm s'execute, il affiche les sections définissant les
partages, puis vous demande d'appuyer sur entrée pour visualiser la définition des
services.
Pour visualiser correctement les résultats, l'idéal est de faires une redirection de la
commande dans un fichier texte. Tapez la commande suivante : "testparm >
/tmp/testparm.txt"
Le programme semble alors bloqué. De fait, il attend que vous appuyez sur entrée. Editez
le fichier /tmp/testparm.txt. Voilà la liste des paramètres par défaut, ainsi que ceux
qu'il nous faut configurer ...
Vérifiez au passage qu'il n'y a pas trop d'erreurs dans ce résultat avant de continuer.
Si tel est le cas, il nous faut revoir le fichier smb.conf.
Lancer smbd et nmbd.
Qu'est-ce que SMB ?
Le protocol SMB est utilisé par les stations Microsoft pour partager des disques et
des imprimantes.
Ce protocole est aussi appelé LanManager, et utilise la couche NetBios de Microsoft.
Vous pouvez faire quatre choses avec Samba :
Les deux daemons SMB sont situés dans votre répertoire $(BASEDIR)/bin ou
$(BASEDIR)/sbin, selon la déclaration que vous avez pu faire dans le fichier Makefile
avant compilation.
Méthode d'execution des daemons SMB.
Vous pouvez lancer les daemons Samba depuis l'inetd ou en tant que processus
indépendants.
Si vous souhaitez configurer un serveur de fichier, l'idéal est de lancer les daemons SMB
via l'inetd, et ce afin de pouvoir les redémarrer facilement via la commande "inetd
-c".
Si vous souhaitez utiliser occasionnellement les services SMB, vous pouvez démarrer les
démons depuis un script installé dans le répertoire "/etc/rc.config.d", ou
même les lancer à la main lorsque vous en avez besoin.
Les Options du daemon smbd.
La syntaxe du daemon smbd est la suivante :
smbd [ -D ] [ -a ] [ -d debuglevel ] [ -l log file ] [ -p port number ] [ -O socket options ] [ -s configuration file ]
Les Options du daemon nmbd.
La syntaxe du daemon nmbd est la suivante :
nmbd [ -D ] [ -H netbios hosts file ] [ -d debuglevel ] [ -l log basename ]
[ -n netbios name ] [ -p port number ] [ -s configuration file ]
Lancer les daemons depuis l'inetd.
Editez le fichier "/etc/services". Vérifiez qu'il existe les lignes suivantes, sinon ajoutez les :
netbios_ns 137/tcp # NetBIOS Name Service
netbios_ns 137/udp #
netbios_dgm 138/tcp # NetBIOS Datagram Service
netbios_dgm 138/udp #
netbios_ssn 139/tcp # NetBIOS Session Service
netbios_ssn 139/udp #
Editez à présent le fichier "/etc/inetd.conf", et ajoutez les lignes suivantes, en remplaçant les noms des variables entre guillemets par le chemin d'accès complet :
# SAMBA NetBios services.
netbios_ssn stream tcp nowait root "$(BASEDIR)"/bin/smbd -d2 smbd
netbios_ns dgram udp wait root "$(BASEDIR)"/bin/nmbd -d2 nmbd
Nous pouvons à présent relancer le daemon inetd avec la commande suivante :
inetd -c
Comme les services SMB ne s'executent que sur une requète d'un PC Client, il est inutile pour le moment d'executer la commande "ps -ef | grep nmb" pour vérifier la présence des daemons. C'est justement là l'avantage de passer par inetd.
Lancer les daemons manuellement .
Le principal avantage a faire fonctionner smbd et nmbd en tant que daemons, c'est
qu'ils réponderont légèrement plus vite lors de la connexion initiale d'un client.
Créer un nouveau fichier nommé smb_start dans le répertoire "$(SBINDIR)".
Ajoutez y les lignes suivantes, en prenant soin de remplacer les noms entre guillemets par
un chemin absolu :
#!/sbin/sh
"$(SBINDIR)"/smbd -D -d2
"$(SBINDIR)"/nmbd -D -d2
Enregistrez les modifications, puis changez les droits de ce fichier pour en faire un
executable (chmod +x smb_start).
Vous pouvez lancer le programme manuellement, ou bien l'executer depuis
"/etc/rc.config.d".
Tester le serveur Samba.
Dans un premier temps, essayons de visualiser si le serveur est capable de "prendre" des informations concernant un client distant. Pour cela, tapez la commande "smbclient -U UserName -L NetBios_Name", sachant que UserName doit être le nom d'un utilisateur déclaré sur la machine référencée par NetBios_Name. Supposons que je souhaite réaliser un test sur une machine nommée PC_Client1 fonctionnant sous Windows NT. La commande pourrait être :
smbclient -U Administrateur -L PC_Client1
Il vous sera demandé le mot de passe de l'Administrateur de PC_Client1, puis le programme doit afficher le résultat suivant :
Added interface ip=192.0.1.3 bcast=192.0.1.255 nmask=255.255.255.0
Server time is Mon Jun 15 13:08:12 1998
Timezone is UTC+2.0
Password:
Domain=[WrkGrp] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0]
security=user
Server=[PC_Client1] User=[] Workgroup=[WrkGrp] Domain=[]
This machine has a browse list:
Server
Comment
---------
-----------
PC_Client1
PC_Client2
PC_Client3
This machine has a workgroup list:
Workgroup Master
------------ -------
WrkGrp PC_Client1
Ceci nous indique que le client PC_Client1 est membre d'un Workgroup nommé
"WrkGrp", que l'adresse IP du serveur Samba est 192.0.1.3, qu'il existe d'autres
stations membres du Workgroup "WrkGrp" nommées PC_Client2, et PC_Client3.
Notez aussi que Samba a reconnu le type d'OS utilisé sur le Client : Windows NT 4.0.
Le programme smbclient permet aussi d'envoyer des messages. Editez un petit fichier texte (1 à 2 lignes) puis executer la commande suivante :
cat "fichier_texte" | smbclient -M PC_Client1
Sur l'écran de la station PC_Client1 doit s'afficher le contenu du fichier texte.
Attention, cette option necessite que le service de messagerie soit actif sur la station
PC_Client, sans quoi vous risquez d'avoir un message du genre : "Called name not
present. Try to connect to another name (instead of PC_Client1)".
Voyons à présent si l'on peut se connecter en FTP_Like à la station PC_Client1 via
Unix.
Supposons que la station PC_Client1 ait une ressource partagée nommée
"Public".
Pour cela, il suffit d'utiliser la commande smbclient avec les paramètres suivants:
smbclient '\\PC_Client1\public'
Après la demande de confirmation d'un mot de passe de l'un des utilisateurs déclaré sur la station PC_Client1, vous tomberez sur un prompt du type "smb: \> ", indiquant que vous êtes connecté a la machine distante. Les commandes sont les mêmes que pour FTP, et pour s'en souvenir, il suffit de taper ?.
Dès lors que tout cela est en place, il ne reste plus qu'au client Windows de se
connecter au serveur samba, pour la ressource partagée indiquée dans le fichier
smb.conf. Dans notre exemple, il s'agit du nom que vous avez pû indiquer a la place de
"Nom_De_Partage". Pour se connecter à un serveur Samba depuis un client Windows
NT, il est necessaire de faire une petite manipulation sur le
registre, car la gestion des mots de passe Windows NT est différente de celle d'UNIX.
Pour cela, aller dans le menu démarer, cliquez sur Executer, puis saisir regedit dans la
ligne de commande. Validez afin d'ouvrir l'editeur de la base de registre Windows NT.
Se positionner sur la clé
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters], puis dans la partie
droite ajoutez (s'il elle n'existe pas déjà) la valeur DWord
"EnablePlainTextPassword", et affectez lui la valeur 00000001.
Fermer toutes les applications, puis redémarrer l'Ordinateur. Ensuite ouvrez une fenetre
"Invite de commande", puis tapez la commande NET USE
"Lettre_Lecteur_Disponible": \\"Nom_Serveur_Samba"\"Nom_De_Partage",
en prenant soin de remplaçer les mots entre guillemets par leur équivalence.
Vérifiez la connection en tapant "Lettre_Lecteur_Disponible": , puis en
effectuant un DIR du lecteur.
Nous allons pouvoir nous interesser de plus près aux arguments du fichier smb.conf, afin d'en modifier les paramètres.