Je vais vous montrer une des configurations de samba le rôle member server
, quand on veut faire un serveur de partage de fichier avec l'authentification dans un domaine windows existant, en gardant la possibilité de créer des logins locaux.
Pour l'installation, regardé Installation d'un serveur SAMBA 4, car l'article est basé sur cet article.
D'abord, il nous faudra installer le service suivant :
Avant de récupérer un ticket auprès d'un contrôleur de domaine “DC” Windows, il faut configurer notre client NTP (/etc/ntp.conf) pour que notre serveur est la même heure que le DC Windows, cela peut éviter certain problème de synchronisation du temps.
Installation de ntp
:
aptitude install ntp ntpdate
Nous allons éditer la configuration de ntp
qui est dans le fichier ntp.conf
vim /etc/ntp.conf
Commenter les lignes server
et ajoute vos DC:
server XXX.XXX.XXX.XXX iburst server XXX.XXX.XXX.XXX iburst
Relancer le service ntp
pour prendre en compte la modification.
/etc/init.d/ntp restart
il faut vérifier le fichier /etc/hosts, Si cela n'est pas déjà fait.
127.0.0.1 localhost XXX.XXX.XXX.XXX nom.domaine.loc nom
Ou
- nom.domaine.loc
: représente le nom de votre serveur sur le réseau.
- xxx.xxx.xxx.xxx : représente son IP
Vérifier les DNS que vous avez saisis dans le fichier /etc/resolv.conf, Si cela n'est pas déjà fait.
search domain.loc domain domain.loc nameserver XXX.XXX.XXX.XXX nameserver XXX.XXX.XXX.XXX
XXX.XXX.XXX.XXX : représente les IPs de vos DCs Windows.
Modifier le fichier /etc/network/interfaces
pour lui donner une configuration IP static
, Si cela n'est pas déjà fait.
auto ethX iface ethX inet static address XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX gateway XXX.XXX.XXX.XXX
Relancer le service networking
pour prendre la modification en compte.
/etc/init.d/networking restart
Après, nous allons pouvoir commencer à configurer Kerberos client pour qu'il aille chercher un ticket auprès du DC.
Editez le fichier /etc/krb5.conf et modifier le pour avoir ceci :
[libdefaults] default_realm = DOMAINE.LOC [realms] DOMAINE.LOC = { kdc = DC.domain.loc admin_server = DC.domaine.loc } [domain_realms] .DC.domaine.fr = DOMAINE.LOC test.local = DOMAINE.LOC
Maintenant, nous allons récupérer un ticket sur le DC Windows:
kinit administrator
Une fois cette étape passée vous pouvez vérifier que vous avez bien un ticket avec la commande:
klist
Édité ou créé le fichier smb.conf
(/usr/local/samba/etc/smb.conf)
vim /usr/local/samba/etc/smb.conf
Voici, la configuration :
[global] workgroup = DOMAINE realm = domaine.loc security = ADS passdb backend = tdbsam auth methods = sam winbind server role = member server server string = samba %v netbios name = <NOM-SERVEUR> encrypt passwords = yes null passwords = yes machine password timeout = 604800 obey pam restrictions = yes template homedir = /home/%D/%U winbind enum users = yes winbind enum groups = yes winbind separator = + idmap uid = 50-9999999 idmap gid = 50-9999999 template shell=/bin/sh load printers = no printcap name = /dev/null disable spoolss = yes log file = /var/log/samba/%m.log log level = 3 max log size = 100 [homes] comment = Home Directories read only = no create mask = 0770 directory mask = 0770 invalid users = valid users = %S,%D+%S write list = %S,%D+%S read list = [rep_partage] comment = rep_partage de test path = /share/rep_partage readonly = no create mask = 0770 directory mask= 0770 force user = force group = invalid users = user2,DOMAINE+user4 valid users = @groupe1,user1,user3,@DOMAINE+GROUPE write list = @group1,user1,@DOMAINE+GROUPE read list= user3
<NOM-SERVEUR>
dans l'option netbios name
Je me suis fabriqué un petit script de lancement samba.tar.gz, il vous suffit de le récupérer, de le décompresser :
tar -xvzf samba.tar.gz
De le mettre dans le répertoire de lancement init.d
:
mv samba /etc/init.d/
Lui mettre les bons droits et le bon propriétaire, si ce n'est pas déjà fait.
chown root:root /etc/init.d/samba chmod 755 /etc/init.d/samba
Et pour terminer d'activer le service afin que le script soit exécuté au démarrage.
update-rc.d samba defaults
J'ai fait exactement la même chose sur winbind
/etc/init.d/winbind stop; /etc/init.d/samba restart; /etc/init.d/winbind start
Puis, nous allons pouvoir intégrer notre serveur SAMBA dans le domaine Windows.
net ads join -U administrator
Pour vérifier, saisir ces quelques commandes :
wbinfo -u wbinfo -g
Si, elles donnent les login et les groupes du domaine, tout est ok.
On ne peut pas encore s'authentifier sur la debian avec les logins du domaine.
Donc, pour cela nous allons faire des liens symboliques vers la libnss_winbind.so
ln -s /usr/local/samba/lib/libnss_winbind.so /lib/ ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2 ldconfig
Nous allons ensuite modifier le Name Service Switch (NSS), c'est ce qui autorise le remplacement des traditionnels fichiers Unix/Linux de configuration (par exemple /etc/passwd, /etc/group, /etc/hosts) par une ou plusieurs bases de données centralisées.
Le fichier nsswitch.conf (/etc/nsswitch.conf) :
passwd: compat winbind group: compat winbind shadow: compat winbind
Démarrer les services winbind et samba
/etc/init.d/samba start; /etc/init.d/winbind start
Le petit test vous permettra de savoir si cela est bon.
su DOMAIN+administrator
Si vous avez un prompt, c'est bon
[rep_partage] comment = "rep_partage" path = /share/rep_partage readonly = no create mask = 0770 directory mask = 0770 force group = force user = invalid users= valid users=DOMAINE_AD+user1 ,@DOMAINE_AD+groupe_AD, user2, @group2 write list=DOMAINE_AD+user1 ,@DOMAINE_AD+groupe_AD, user2, @group2 read list=
@DOMAINE_AD+groupe_AD : vous n'êtes pas obligé d'ajouter le groupe, le login suffit, mais c'est pour montrer la syntaxe
Activer les acl dans /etc/fstab:
/dev/mapper/VG0-share /share ext4 defaults,acl,user_xattr,barrier=1 0 2
Installer les acls:
aptitude install acl
Puis modifier les acls:
setfacl -R -m g:"DOMAINE_AD+groupe_AD":rwx /home/share
addgroup sambausers useradd -m -g sambausers toto smbpasswd -a toto
Ensuite, vous n'avez plus qu'a ajouté les droits associé au répertoire de partage, sinon Samba autorisera l'accès, mais pas le système Linux.
exemple:
chown toto:sambausers /share/rep_partage
Pour changer le mot de passe :
smbpasswd toto
Pour supprimer un login de la base Samba :
smbpasswd -x toto
Quand vous supprimez un login de la base de samba, il n'est supprimer de Linux