Installation de Samba

Préparation de l'installation.

Samba s'installe sur la plupart des machines UNIX. Avant d'installer Samba, il faut se procurer la dernière version.
Le mieux est de la télécharger par ftp://samba.anu.edu.au/pub/samba.
On obtient un fichier compressé par gzip appelé samba-latest.tar.gz;

Les tests d'installation et de configuration ont étés réalisés avec la version 1.9.18p7 de Samba sur un HP9000 avec HP-UX B.10.01 C. Avant d'aller plus loin, il faut que la machine UNIX sur laquelle vous allez installer Samba, ait un compilateur Ansi.
Si vous n'avez pas un tel compilateur, il vous faudra installer GCC.

Sous UNIX, créer un répertoire Samba (en général dans /usr/local/samba) et un sous-répertoire Soft-Compress.
Copier la version gzipée dans ce sous répertoire en y affectant les droits suivant :

"chown root samba-latest.tar.gz"
"chgrp sys samba-latest.tar.gz".

Renommer le fichier samba-latest.tar.gz en samba.tar.gz, puis copier ce fichier dans le répertoire Samba.
Décompacter ce fichier par la commande : "gunzip -dr ./samba.tar.gz".
Du coup, on obtient un fichier qui va s'appeler samba.tar.
Il va donc falloir décompacter ce fichier par la commande : "tar -xvf ./samba.tar".
Cette commande créé un répertoire nommé samba-1.9.18p7 (parce-que c'est la version testée) dont les droits sont affectés à l'utilisateur 1002 appartenant au groupe 1002.
Là encore, il faut changer les droits du répertoire par la commande :

"chown -R root ./samba-1.9.18p7"
"chgrp -R sys ./samba-1.9.18p7".

Déplacer le fichier samba.tar dans le sous-répertoire Soft-Compress. Cela permet d'organiser un peu l'installation...

Compilation de Samba.

Consultez le fichier samba/samba-1.9.18p7/docs/ UNIX_INSTALL.txt , il détaille en anglais la procédure d'installation.
Aller dans le répertoire samba/samba-1.9.18p7/source, puis éditer le fichier ./Makefile.
Modifiez les variables suivantes :

Nom de la Variable Description
BASEDIR La variable BASEDIR définit le chemin du répertoire de base de Samba.
Exemple : BASEDIR = /usr/local/samba
MANDIR La variable MANDIR définit le chemin du répertoire des pages du manuel samba.
Notez qu'après l'installation de Samba, les pages $(MANDIR)/man1, $(MANDIR)/man5 et $(MANDIR)/man8 doivent être présente dans ce répertoire.
Exemple : MANDIR = /usr/local/samba/man
ou plus simplement : MANDIR = $(BASEDIR)/man
BINDIR La variable BINDIR définit le chemin du répertoire des fichiers binaires.
Exemple : BINDIR = $(BASEDIR)/bin
SBINDIR La variable SBINDIR définit le chemin du répertoire des fichiers binaires sécurisé.
Ce répertoire est créé pour les fichiers dont l'accès est sécurisé, généralement utilisé pour les fichiers nmbd et smbd.
Exemple : SBINDIR = $(BASEDIR)/bin
LIBDIR La variable LIBDIR définit le chemin du répertoire des fichiers librairies.
Exemple : LIBDIR = $(BASEDIR)/lib
VARDIR La variable VARDIR définit le chemin du répertoire des fichiers variables et log.
Exemple : VARDIR = $(BASEDIR)/var
INSTALLPERMS La variable INSTALLPERMS définit le masque de permission a donner au fichiers exécutables.
Exemple : INSTALLPERMS = 0775
CC Cette variable permet de définir le nom du compilateur C a utiliser. Attention vous devez utiliser un compilateur C ANSI. Par exemple, comme sous SunOS 4 vous ne pouvez pas utiliser cc, vous indiquerez le nom du compilateur a utiliser a la place (gcc).
Exemple : CC = cc (Permet de forcer l'utilisation de cc)
SHELL Indique le nom du Shell a utiliser. Changer par csh ou ksh si vous rencontrez des problèmes de compilation.
Exemple : SHELL = /bin/sh
srcdir
VPATH
D'ordinaire, ces lignes sont diésées, mais elles peuvent être utilisées pour compiler sur des architectures multiples. Du coup, j'ai fait le test de compilation avec ces paramètres non diésés.
Exemples : srcdir=./
VPATH=$(srcdir)
SMBLOGFILE Cette variable définit le nom du fichier log des évènements smb.
Exemple : SMBLOGFILE = $(VARDIR)/smb.log
NMBLOGFILE Cette variable définit le nom du fichier log des évènements nmb.
Exemple : NMBLOGFILE = $(VARDIR)/nmb.log
CONFIGFILE Cette variable définit le nom du fichier de configuration du serveur Samba.
On peut y indiquer un tout autre nom, le mieux étant de garder le nom et l'emplacement par défaut.
Exemple : CONFIGFILE = $(LIBDIR)/smb.conf
LMHOSTSFILE Cette variable définit le nom du fichier des Hosts Samba. Ce fichier est identique a /etc/hosts.
On peut y indiquer un tout autre nom, le mieux étant de garder le nom et l'emplacement par défaut, puis de recopier le fichier /etc/hosts dans le répertoire par défaut, puis de le renommer en lmhosts.
Exemple : LMHOSTSFILE = $(LIBDIR)/lmhosts
DRIVERFILE Cette variable définit le chemin du fichier contenant le nom des drivers d'imprimantes a utiliser du coté des clients SMB. Ces noms reprennent la chaîne exacte du driver d'imprimante utilisé sous Windows. En principe, on peut définir de manière unitaire le nom du driver a utiliser en indiquant ce nom dans le fichier smb.conf, a la section "printer driver".
(Par exemple printer driver = HP LaserJet 4MV). Mais on peut aussi indiquer tous ces noms dans un même fichier, d'où la variable DRIVERFILE.
Exemple : DRIVERFILE = $(LIBDIR)/printers.def
SMB_PASSWD Cette variable définit l'emplacement du fichier exécutable smbpasswd. En général, ce fichier est placé dans le répertoire bin ou sbin de Samba. Cet exécutable permet d'adapter les mots de passe d'un login UNIX aux mots de passe d'un login Windows
Exemple : SMB_PASSWD = $(BINDIR)/smbpasswd.
SMB_PASSWD_FILE Cette variable permet d'indiquer le chemin du fichier de mapping des mots de passe SMB. Ce fichier est créé automatiquement lors de la première utilisation de smbpasswd.
Exemple : SMB_PASSWD_FILE = $(LIBDIR)/smbpasswd
WEB_ROOT Cette variable indique le chemin principal de navigation dans Samba.
Exemple : WEB_ROOT = $(BASEDIR)
LOCKDIR Cette variable indique le chemin du répertoire des fichiers verrouillés. Lorsqu'un fichier est ouvert par un client, celui ci est référencé dans ce répertoire, afin d'éviter les conflits liés aux partages de fichiers. Notez que l'option de lock peut être validée ou non.
Exemple : LOCKDIR = $(VARDIR)/locks
CODEPAGEDIR Cette variable permet d'indiquer le chemin d'accès aux fichiers de définition des pages de codes.
Exemples : CODEPAGEDIR = $(LIBDIR)/codepages
WORKGROUP Cette variable définit le nom du "Groupe de Travail" des stations Windows. Un nom de workgroup est différent d'un nom de domaine (Au sens DNS), et il est préférable de ne pas indiquer le même nom pour éviter les confusions. Mieux, il est même conseillé de paramétrer cette variable en indiquant "WORKGROUP = *" afin que samba puisse apparaître dans le groupe de travail existant.
GUESTACCOUNT Cette variable permet de définir le nom de l'utilisateur par défaut, c'est a dire celui qui sera utilisé lorsque aucun nom ou mot de passe n'a été spécifié lors de la connexion. Notez que l'on peut augmenter la sécurité d'accès dans le fichier smb.conf. Vérifiez cependant que l'utilisateur spécifié doit réellement exister dans le fichier /etc/passwd.
Exemple : GUESTACCOUNT = nobody
SMBRUN Cette variable définit le chemin d'accès au fichier exécutable smbrun. Ce fichier est utilisé pour corriger l'impression et l'éxecution de scripts coté client. N'hésitez pas a consulter le MANuel de smbrun. Notez que la définition de cette variable doit correspondre a un chemin absolu, et que ce chemin inclut le nom du programme smbrun a la fin.
Exemple : SMBRUN = $(BINDIR)/smbrun
AWK Cette variable permet d'indiquer a Samba quel est le nom du programme AWK a utiliser sur le serveur. En général, il s'agit de awk.
Exemple : AWK = awk

Ensuite il faut indiquer quel est le système d'exploitation utilisé sur le Serveur samba.
Pour ma part, j'ai testé Samba sur HP-UX 10.01, j'ai donc dé-diésé les lignes :

# This is for HP-UX 10.x. Note that some systems don't like the -Aa switch.
# contributed by Pasi.Kaara@atk.tpo.fi
# You will need -DREPLACE_GETPASS if you use smb encryption
#FLAGSM = -DHPUX -Aa -D_HPUX_SOURCE -D_POSIX_SOURCE -DHPUX10 -DFAST_SHARE_MODES
#LIBSM =

Comme l'indique le commentaire, si vous souhaitez utiliser la fonctionnalité de smb encryption, il faut rajouter aux paramètres de FLAGSM la commande -DREPLACE_GETPASS. Personnellement je n'ai pas encore testé la compilation avec ce paramètre, mais on peut l'ajouter puisqu'on peut invalider la fonctionnalité de cryptage dans le smb.conf. L'essentiel c'est d'avoir les fichiers compilés quand on en aura besoin.

Quitter l'éditeur, et créez ou vérifiez l'existence des répertoire comme indiqué dans le fichier Makefile ($BASEDIR, $MANDIR, $SBINDIR, $BINDIR, $LIBDIR, $VARDIR).
Editez le fichier /etc/MANPATH, et ajoutez le chemin spécifié par $MANDIR.
Editez le fichier /etc/PATH, et ajoutez le chemin spécifié par $BASEDIR, par $SBINDIR et par $BINDIR (Si ces deux derniers sont dans un répertoire différent).
On peut dès a présent générer les fichiers bianires. Pour ce faire, installez vous devant la console du serveur, connectez vous sous root, puis vérifiez que les répertoires que vous avez ajoutés au PATH et au MANPATH sont bien déclaré (Utilisez la commande "set | pg").

A présent, allez dans le répertoire $(BASEDIR)/samba-1.9.18p7/source, puis tapez make. Cela va générer les fichier binaires. Au passage, vérifiez qu'il n'y ait pas trop d'erreur ou de Warning pendant la compilation. Si tel est le cas, vérifiez le fichier Makefile et les chemins d'accès.

Dès la fin de la compilation, vous pouvez tapez la commande "make install" pour générer les fichiers binaires et le manuel en ligne. Notez que vous pouvez réaliser ces installations en deux étapes en tapant la commande "make installbin" et "make installman" pour générer respectivement l'installation des fichiers binaires et le manuel en ligne.

On peut donc passer à la configuration de Samba.