Compilation du module Perl Heimdal::Kadm5 sous CentOS

Rédigé par Nicolas Sulek Aucun commentaire
Classé dans : Logiciel Mots clés : Kerberos, Perl, Samba
CentOS, et donc Red Hat Enterprise Linux, implémente uniquement la version MIT de Kerberos. Ainsi, il n'est pas possible d'utiliser la version Heimdal avec les paquets fournis en standard, contrairement à d'autres distributions.
Or, pour certains usages, Heimdal est assez intéressant, notamment pour Samba 4.

L'absence de paquets pour Heimdal entraîne l'impossibilité d'installer le module Perl Heimdal::Kadm5, car il a besoin des paquets de développements de Heimdal...

Voici toutefois comment y arriver.

Lire la suite

Samba membre d'un domaine NT avec gestion des ACL

Rédigé par Nicolas Sulek Aucun commentaire
Classé dans : Services réseaux Mots clés : Samba, Windows

Installation et configuration de Samba


On installe Samba et Winbind avec
apt-get install samba winbind

On édite ensuite le fichier /etc/samba/smb.conf :
[global]
# nom du domaine à joindre
workgroup = SMBGROUP
# texte apparaissant dans le champ commentaire dans l'explorateur
# Windows
server string = %h server (Samba %v)


# on va utiliser le contrôleur de domaine pour authentifier les
#utilisateurs
security = DOMAIN
# on n'utilise pas PAM pour les droits d'accès car ça pose problème
# au niveau des changements de droits d'accès par l'utilisateur
obey pam restrictions = no
# n'importe quel contrôleur de domaine fera l'affaire, samba le
# trouvera par broadcast (comportement normal d'une machine
# Windows)
password server = *
# permet de faire des alias entre les noms des utilisateurs
username map = /etc/samba/smbusers
# pour avoir un peu d'informations
# plus le nombre est élevé, plus il y a d'informations
log level = 1
# on net met aucun message (excepte les erreurs de lancement) dans
# syslog, tout sera loggué à part
syslog = 0
# chemin du fichier de log, un log par machine (%m) :
# log.sulek.fr par exemple
log file = /var/log/samba/log.%m
# la taille max du fichier en octets avant d'effectuer une rotation
max log size = 1000
# on ne veut pas que la machine Linux devienne maître pour
# l'exploration réseau
preferred master = No
# on ne veut pas que la machine Linux devienne maître local
local master = No
# on ne veut surtout pas être contrôleur de domaine !
domain master = No
# on ne veut pas que la machine Linux joue le rôle de serveur WINS
dns proxy = No
# mais on va utiliser plutôt ce serveur
wins server = ip_du_serveur
# l'action standard en cas de crash
panic action = /usr/share/samba/panic-action %d
# les uid que Winbind va utiliser pour gérer les comptes
# d'utilisateurs du domaine qui n'existent pas en local sur la
# machine Linux
idmap uid = 2000-5000
# les gid que Winbind va utiliser pour gérer les groupes
# d'utilisateurs du domaine qui n'existent pas en local sur la
# machine Linux
idmap gid = 2000-5000
# Winbind va traiter les utilisateurs n'ayant pas de composante
# domaine dans leur nom en leur rajoutant le nom de domaine
winbind use default domain = yes
# root n'a pas le droit de se connecter
invalid users = root
# le séparateur entre le domaine et le nom d'utilisateur, par exemple
# SMBGROUP\toto devient SMBGROUP+toto
winbind separator = +
# la durée (en secondes) de conservation dans le cache de Winbind
# des requêtes que winbind a faites auprès du serveur WINS
winbind cache time = 300
# permet l'énumération par Winbind des utilisateurs
winbind enum users = yes
# idem pour les groupes
winbind enum groups = yes
# on supporte le comportement des ACL de Windows NT
nt acl support = yes

[partage]
# son chemin dans l'arborescence de la machine Linux
path = /home/partage
# ce n'est pas en lecture seule
read only = No
# le masque par défaut de création, tous les droits pour le
# propriétaire, et lecture/exécution pour le reste
create mask = 0755

Il faut aussi modifier le fichier /etc/nsswitch.conf de la manière suivante :
passwd: files winbind
group: compat winbind

afin d'utiliser Winbind pour notamment la correspondance uid et gid avec les noms d'utilisateurs et les groupes.

Voilà un samba basique mais qui fonctionne, sauf au niveau des changement des droits d'accès pour plusieurs utilisateurs, et c'est là que les ACL (liste de contrôles d'accès) vont entrer en jeu.

Gestion des ACL


Pour gérer les ACL, il faut deux choses, un noyau Linux les supportant et un samba compilé avec le support des ACL. Les ACL se positionnent au niveau du système de fichiers, mais tous les systèmes de fichiers ne les gèrent pas. Parmi les heureux élus, on trouve notamment ext3 (mais nécessite un patch du noyau (uniquement 2.4) pour fonctionner) et XFS qui les gèrent en natif.

Pour le noyau, le 2.6 supporte les ACL en standard et c'est activé dans le noyau Debian de base pour pas mal de systèmes de fichiers. Pour le 2.4, il faut rajouter un patch suivant le système de fichiers que l'on veut utiliser,le noyau Debian de base n'en supporte aucun. Pour Samba, le paquet fournit par Debian a le support des ACL compilé, donc tout va bien :-)

Je m'étais d'abord tourné vers XFS, mais les ACL ne fonctionnent pas vraiment : les modifications des droits étaient bien effectuées, mais n'étaient pas prises en compte, je n'en ai pas trouvé la raison. Aucun soucis avec ce bon vieux ext3.

Pour monter un système de fichier ext3 avec les ACL d'activées, il faut rajouter l'option acl dans le /etc/fstab. Par exemple, pour les rajouter sur la partition /dev/sda7 :
/dev/sda7 /home ext3 defaults,acl 0 2

C'est tout, pas besoin de reformater ou d'utiliser tune2fs.

Pour manipuler les ACL, il faut installer le paquet acl avec
apt-get install acl

On obtient alors setfacl pour modifier les ACL et getfacl pour les afficher. Il est conseillé de lire le man de ces deux commandes pour bien comprendre comment les utiliser, mais leur fonctionnement est en fait très simple.

Voici un exemple :
setfacl -m u:testsamba:rw tux

On donne les droits d'écriture et de lecture à l'utilisateur sur le répertoire tux qui appartient à l'utilisateur nsulek.

Un petit coup de
getfacl tux

nous retourne
#file: tux
#owner: nsulek
#group: root
user::rwx
user:testsamba:rw-
group::---
mask::rwx
other::r-x
default:user::rwx
default:user:testsamba:rwx
default:group::---
default:mask::rwx
default:other::r-x

On constate que nsulek est toujours propriétaire de tux et a bien les droits rwx et l'utilisateur testsamba a bien les droits rw-. Merveilleux non ? :-)

Rejoindre un domaine NT


On a maintenant Samba et Winbind bien configurés (très sommairement quand même), un système de fichiers journalisé avec ACL, il va peut-être être temps de rajouter notre machine Linux au domaine SMBGROUP :-)
Rien de plus simple, il faut uniquement un compte d'administrateur du domaine et le mot de passe qui va bien et ensuite taper :
net join member -U compte_administrateur_du_domaine

Voilà, on peut maintenant accéder à notre machine Linux depuis Windows en utilisant la sécurité du domaine !

Samba en serveur de fichiers autonome

Rédigé par Nicolas Sulek Aucun commentaire
Classé dans : Services réseaux Mots clés : Samba, Windows

Installation et configuration de Samba


Après avoir installé Samba avec
apt-get install samba

il faut éditer le fichier /etc/samba/smb.conf sous Debian ou Ubuntu.
Voici le contenu du mien :
[global]
# nom du groupe de travail affiché dans le voisinage réseau
workgroup = SMBGROUP
# nom du serveur affiché dans le voisinage réseau,
# sinon nom linux du serveur
netbios name = sambasrv


# commentaires affichés à côté du nom du serveur
# dans le voisinage réseau
server string = Serveur Samba
# authentification au niveau des utilisateurs et non au niveau des
# partages
security = USER
# localisation du fichier contenant les alias entre les utilisateurs
# Windows et les utilisateurs Linux
username map = /etc/samba/smbusers
# le démon nmbd peut devenir le maître d'exploration du groupe de
# travail préféré en forçant des élections pour le maître
# d'exploration du groupe de travail
preferred master = yes
# le démon nmbd peut devenir le maître d'exploration local du
# sous-réseau en participant a l'élection du maître d'exploration
# local
local master = yes
# le démon nmbd ne devient pas le contrôleur de domaine du groupe de
# travail
domain master = No
# nmbd ne jouera pas le rôle de proxy DNS pour la résolution WINS
dns proxy = No
# root n'a pas le droit de se connecter
invalid users = root
# niveau de log par défaut
log level = 1
# définît le niveau des messages qui seront envoyés à syslog
syslog = 0
# taille max des logs samba
max log size = 1000

[partage]
# son chemin dans l'arborescence de la machine Linux
path = /home/partage
# ce n'est pas en lecture seule
read only = No
# le masque par défaut de création, tous les droits pour le
# propriétaire, et lecture/exécution pour le reste
create mask = 0755

Création des utilisateurs


Une fois /etc/samba/smb.conf modifié, on peut passer à la création des utilisateurs Samba qui seront donc les noms d'utilisateurs utilisés sous Windows pour accéder aux partages du serveur Linux. La base d'authentification Samba étant le fichier /etc/samba/smbpasswd, les utilisateurs doivent aussi exister dans /etc/passwd, la base d'utilisateurs Linux.

Pour créer un utilisateur, rien de plus simple : un petit coup de
smbpasswd -a nomutilisateur

on renseigne le mot de passe pour Samba et le tour est joué. A condition bien sûr que nomutilisateur existe aussi dans /etc/passwd, sinon, il faudra aussi faire un
adduser nomutilisateur

pour créer l'utilisateur dans la base de comptes Linux.

On peut aussi utiliser le mappage entre les utilisateurs Samba/Windows et les utilisateurs Linux. Par exemple, faire que administrateur soit en fait root sous Linux. Pour ça, il suffit d'éditer le fichier /etc/samba/smbusers et de rajouter
root = administrateur