GOsa : PDC : Différence entre versions
De wikiGite
(→samba) |
(→Installation) |
||
(39 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | |||
− | |||
− | |||
GOsa² est un outil d’administration sous GPL, écrit en PHP et conçu pour administrer les comptes et les systèmes dans un arbre LDAP. | GOsa² est un outil d’administration sous GPL, écrit en PHP et conçu pour administrer les comptes et les systèmes dans un arbre LDAP. | ||
Une série d’extensions existe déjà de base pour la gestion des personnes, des systèmes, des logiciels. | Une série d’extensions existe déjà de base pour la gestion des personnes, des systèmes, des logiciels. | ||
'''But :''' <br/> | '''But :''' <br/> | ||
− | + | Monter un contreur de domaine sous linux.Gosa² permet au client de créer et de modifier facilement les utilisateurs et les groupes via une interface web simple<br/> | |
+ | === Installation === | ||
+ | ==== Installation de ldap ==== | ||
+ | aptitude install slapd db4.8-util ldap-utils | ||
+ | /etc/init.d/slapd stop | ||
+ | |||
+ | |||
+ | ==== Installation de samba ==== | ||
+ | aptitude install samba smbfs samba-client smbldap-tools | ||
+ | |||
− | === Installation === | + | ==== Installation de gosa ==== |
− | Ajouter le dépot | + | Ajouter le dépot dans /etc/apt/sources.list |
#Gosa | #Gosa | ||
deb http://oss.gonicus.de/pub/gosa/debian-squeeze/ ./ | deb http://oss.gonicus.de/pub/gosa/debian-squeeze/ ./ | ||
+ | Puis installer les paquets : | ||
+ | aptitude update | ||
+ | aptitude install gosa gosa-schema gosa-help-fr gosa-plugin-samba gosa-plugin-systems | ||
− | + | === Configuration de ldap === | |
− | |||
− | |||
− | |||
− | |||
− | + | Ajouter les schemas de samba et gosa : | |
− | + | vim /etc/ldap/convert-file.conf | |
− | + | # Configuration globale | |
− | + | include /etc/ldap/schema/core.schema | |
+ | include /etc/ldap/schema/cosine.schema | ||
+ | include /etc/ldap/schema/inetorgperson.schema | ||
+ | include /etc/ldap/schema/nis.schema | ||
+ | #for gosa | ||
+ | include /etc/ldap/schema/gosa/gosystem.schema | ||
+ | include /etc/ldap/schema/gosa/gofon.schema | ||
+ | include /etc/ldap/schema/gosa/goto.schema | ||
+ | include /etc/ldap/schema/gosa/goto-mime.schema | ||
+ | include /etc/ldap/schema/gosa/gofax.schema | ||
+ | include /etc/ldap/schema/gosa/goserver.schema | ||
+ | include /etc/ldap/schema/gosa/samba3.schema | ||
+ | include /etc/ldap/schema/gosa/gosa-samba3.schema | ||
− | |||
− | |||
− | |||
− | |||
+ | Convertir les schemas : | ||
<source lang="bash"> | <source lang="bash"> | ||
− | + | mkdir /tmp/ldif_output | |
− | + | slapcat -f /etc/ldap/convert-file.conf -F /tmp/ldif_output -n0 -s "" | |
− | + | rm /etc/ldap/slapd.d/cn=config/cn=schema/* | |
− | + | cp /tmp/ldif_output/cn\=config/cn\=schema/* /etc/ldap/slapd.d/cn\=config/cn\=schema/ | |
− | + | chown openldap:openldap /etc/ldap/slapd.d/cn=config/cn=schema/* | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||
− | |||
− | |||
− | |||
+ | === NSS et PAM === | ||
+ | ==== Installation ==== | ||
Sur le poste qui acceptera des comptes gérés par LDAP, nous installons en premier les outils utiles à leurs communications. | Sur le poste qui acceptera des comptes gérés par LDAP, nous installons en premier les outils utiles à leurs communications. | ||
− | + | aptitude install libnss-ldap | |
cela ammene à configurer 2 paquets libnss-ldap et libpam-ldap. | cela ammene à configurer 2 paquets libnss-ldap et libpam-ldap. | ||
Ligne 99 : | Ligne 66 : | ||
Compte LDAP pour le superutilisateur (« root ») : cn=admin,dc=systea,dc=local <br/> | Compte LDAP pour le superutilisateur (« root ») : cn=admin,dc=systea,dc=local <br/> | ||
− | + | ||
Dans les 2 fichiers suivants : | Dans les 2 fichiers suivants : | ||
Ligne 106 : | Ligne 73 : | ||
vim /etc/pam_ldap.conf | vim /etc/pam_ldap.conf | ||
− | * | + | * Décommenter la ligne : host 127.0.0.1 |
− | |||
− | |||
− | |||
− | |||
− | |||
==== Configuration de NSS ==== | ==== Configuration de NSS ==== | ||
vim /etc/nsswitch.conf | vim /etc/nsswitch.conf | ||
− | + | Ajouter la reférence à ldap : | |
passwd: compat ldap | passwd: compat ldap | ||
group: compat ldap | group: compat ldap | ||
shadow: compat ldap | shadow: compat ldap | ||
+ | |||
==== Configuration de PAM ==== | ==== Configuration de PAM ==== | ||
source : http://wiki.debian.org/LDAP/PAM | source : http://wiki.debian.org/LDAP/PAM | ||
+ | |||
mv /etc/pam.d/common-account /etc/pam.d/common-account.bk | mv /etc/pam.d/common-account /etc/pam.d/common-account.bk | ||
Ligne 131 : | Ligne 95 : | ||
account sufficient pam_succeed_if.so | account sufficient pam_succeed_if.so | ||
account required pam_permit.so | account required pam_permit.so | ||
+ | |||
mv /etc/pam.d/common-auth /etc/pam.d/common-auth.bk | mv /etc/pam.d/common-auth /etc/pam.d/common-auth.bk | ||
Ligne 139 : | Ligne 104 : | ||
auth requisite pam_succeed_if.so | auth requisite pam_succeed_if.so | ||
auth required pam_deny.so | auth required pam_deny.so | ||
+ | |||
mv /etc/pam.d/common-password /etc/pam.d/common-password.bk | mv /etc/pam.d/common-password /etc/pam.d/common-password.bk | ||
vim /etc/pam.d/common-password | vim /etc/pam.d/common-password | ||
+ | |||
password sufficient pam_ldap.so | password sufficient pam_ldap.so | ||
password sufficient pam_unix.so md5 obscure min=4 max=8 nullok try_first_pass | password sufficient pam_unix.so md5 obscure min=4 max=8 nullok try_first_pass | ||
password required pam_deny.so | password required pam_deny.so | ||
+ | |||
mv /etc/pam.d/common-session /etc/pam.d/common-session.bk | mv /etc/pam.d/common-session /etc/pam.d/common-session.bk | ||
Ligne 160 : | Ligne 128 : | ||
Ajouter dans /etc/pam.d/common-session : | Ajouter dans /etc/pam.d/common-session : | ||
session required pam_mkhomedir.so skel=/etc/skel umask=0022 | session required pam_mkhomedir.so skel=/etc/skel umask=0022 | ||
+ | |||
=== samba === | === samba === | ||
Ligne 166 : | Ligne 135 : | ||
+ | ==== Configuration de smbldap-tools ==== | ||
cd /etc/smbldap-tools | cd /etc/smbldap-tools | ||
Ligne 177 : | Ligne 147 : | ||
</source> | </source> | ||
− | + | Récuperer le localSID du serveur. A mettre dans smbldap.conf | |
+ | net getlocalsid | ||
+ | |||
vim smbldap.conf | vim smbldap.conf | ||
<source lang="bash"> | <source lang="bash"> | ||
Ligne 186 : | Ligne 158 : | ||
ldapTLS="0" | ldapTLS="0" | ||
suffix="dc=systea,dc=local" | suffix="dc=systea,dc=local" | ||
− | usersdn="ou= | + | usersdn="ou=people,${suffix}" |
computersdn="ou=computers,${suffix}" | computersdn="ou=computers,${suffix}" | ||
− | groupsdn="ou= | + | groupsdn="ou=groups,${suffix}" |
idmapdn="ou=Idmap,${suffix}" | idmapdn="ou=Idmap,${suffix}" | ||
sambaUnixIdPooldn="sambaDomainName=SYSTEA,${suffix}" | sambaUnixIdPooldn="sambaDomainName=SYSTEA,${suffix}" | ||
Ligne 210 : | Ligne 182 : | ||
slappasswd="/usr/sbin/slappasswd" | slappasswd="/usr/sbin/slappasswd" | ||
</source> | </source> | ||
+ | Donner les bons droit aux fichiers : | ||
+ | chmod 0644 /etc/smbldap-tools/smbldap.conf | ||
+ | chmod 0600 /etc/smbldap-tools/smbldap_bind.conf | ||
+ | |||
+ | |||
+ | ==== Configuration de samba ==== | ||
Éditer le fichier smb.conf pour paramétrer les connexions à notre annuaire LDAP: | Éditer le fichier smb.conf pour paramétrer les connexions à notre annuaire LDAP: | ||
vim /etc/samba/smb.conf | vim /etc/samba/smb.conf | ||
Ligne 216 : | Ligne 194 : | ||
##PDC## | ##PDC## | ||
[global] | [global] | ||
− | # identification du serveur # | + | ## identification du serveur ## |
− | + | # nom du domaine | |
workgroup = SYSTEA | workgroup = SYSTEA | ||
− | + | # nom du serveur dans le domain | |
netbios name = GOSA-DEBIAN | netbios name = GOSA-DEBIAN | ||
− | + | # description qui sera affichée chez les clients | |
server string = Serveur Samba %v sur %L | server string = Serveur Samba %v sur %L | ||
− | # controleur de domaine # | + | ## controleur de domaine ## |
− | + | # les clients peuvent s'authentifier sur ce serveur | |
domain logons = Yes | domain logons = Yes | ||
− | + | # le serveur fait office de serveur wins | |
wins support = Yes | wins support = Yes | ||
− | + | # ce serveur sera toujours le serveur maitre avec un | |
− | + | # niveau de 255, les produits | |
− | + | # microsoft doivent être au alentour de 70 au maximum | |
os level = 77 | os level = 77 | ||
− | + | # tiens à jour la liste de toutes les machines du domaine | |
− | + | # ce role doit etre accordé à la machine qui agit en | |
− | + | # tant que PDC | |
domain master = yes | domain master = yes | ||
− | + | # ce serveur est le serveur de son sous reseau | |
local master = yes | local master = yes | ||
− | + | # astuce pour etre certain de devenir le local | |
− | + | # master browser de son sous reseau | |
prefered master = yes | prefered master = yes | ||
− | + | # l'authentification est faite sur cette machine | |
security = user | security = user | ||
− | + | # les mot de passe sont cryptés | |
encrypt passwords = true | encrypt passwords = true | ||
− | + | # authorise les clients à synchroniser leur horloge | |
time server = yes | time server = yes | ||
host msdfs = yes | host msdfs = yes | ||
− | + | # augmente les performance tcp/ip | |
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 | socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 | ||
− | + | # methode de resolution des noms | |
name resolve order = wins hosts bcast | name resolve order = wins hosts bcast | ||
Ligne 258 : | Ligne 236 : | ||
hosts allow = 192.168. 127.0.0 | hosts allow = 192.168. 127.0.0 | ||
− | # journalisation # | + | ## journalisation ## |
− | + | # niveau de log | |
log level = 2 | log level = 2 | ||
− | + | # le log se fait par machine | |
log file = /var/log/samba/log.%m | log file = /var/log/samba/log.%m | ||
− | + | # taille maximum d'un fichier de log | |
max log size = 1000 | max log size = 1000 | ||
− | + | # horodatage des actions loggées | |
debug timestamp = yes | debug timestamp = yes | ||
− | # option concernant les fichiers # | + | ## option concernant les fichiers ## |
guest account = nobody | guest account = nobody | ||
printing = cups | printing = cups | ||
printcap name = cups | printcap name = cups | ||
− | + | # oplock | |
oplocks = No | oplocks = No | ||
level2 oplocks = No | level2 oplocks = No | ||
Ligne 279 : | Ligne 257 : | ||
− | + | # fichier cache | |
hide files = /desktop.ini/ntuser.ini/NTUSER.*/ | hide files = /desktop.ini/ntuser.ini/NTUSER.*/ | ||
hide dot files = yes | hide dot files = yes | ||
− | + | # option pour la casse des noms de fichiers | |
case sensitive = No | case sensitive = No | ||
default case = lower | default case = lower | ||
preserve case = yes | preserve case = yes | ||
short preserve case = Yes | short preserve case = Yes | ||
− | + | # Table d'encodage des caractères (le même que sous windows) | |
Unix Charset = ISO8859-15 | Unix Charset = ISO8859-15 | ||
− | # | + | ## options LDAP ## |
passdb backend = ldapsam:ldap://127.0.0.1 | passdb backend = ldapsam:ldap://127.0.0.1 | ||
ldap suffix = dc=systea,dc=local | ldap suffix = dc=systea,dc=local | ||
ldap machine suffix = ou=computers | ldap machine suffix = ou=computers | ||
ldap user suffix = ou=people | ldap user suffix = ou=people | ||
− | ldap group suffix = ou= | + | ldap group suffix = ou=groups |
ldap admin dn = "cn=admin,dc=systea,dc=local" | ldap admin dn = "cn=admin,dc=systea,dc=local" | ||
ldap ssl = off | ldap ssl = off | ||
Ligne 302 : | Ligne 280 : | ||
enable privileges = Yes | enable privileges = Yes | ||
− | # profile et logon # | + | ## profile et logon ## |
− | logon path = \\%L\profiles\%U | + | logon path = |
− | logon drive = P: | + | logon home = |
− | logon home = \\%L\%U | + | #On peut commenter les 2lignes ci-dessus et décommenter |
− | + | #les 4 lignes ci-dessous pour que tous les utilisateurs | |
− | logon script = logon.bat | + | #aient un profil itinérant. Gosa permet une configuration différente par utilisateur. |
− | + | ;logon path = \\%L\profiles\%U | |
+ | ;logon drive = P: | ||
+ | ;logon home = \\%L\%U | ||
+ | # script à executer lorsque un utilisateur se connecte | ||
+ | ;logon script = logon.bat | ||
+ | |||
template shell = /bin/false | template shell = /bin/false | ||
winbind use default domain = Yes | winbind use default domain = Yes | ||
nt acl support = Yes | nt acl support = Yes | ||
+ | dos filemode= yes | ||
msdfs root = Yes | msdfs root = Yes | ||
− | #SMBLDAP-TOOLS | + | ## SMBLDAP-TOOLS ## |
add user script = /usr/sbin/smbldap-useradd -m "%u" | add user script = /usr/sbin/smbldap-useradd -m "%u" | ||
− | add machine script = /usr/sbin/smbldap-useradd -w "%u" | + | add machine script = /usr/sbin/smbldap-useradd -t 30 -w "%u" |
add group script = /usr/sbin/smbldap-groupadd -p "%g" | add group script = /usr/sbin/smbldap-groupadd -p "%g" | ||
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" | add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" | ||
Ligne 365 : | Ligne 349 : | ||
path = /home/Commun | path = /home/Commun | ||
</source> | </source> | ||
+ | |||
+ | Ne pas oblier de donner le mot de passe LDAP à samba : | ||
smbpasswd -w MDPLDAPADMIN | smbpasswd -w MDPLDAPADMIN | ||
+ | |||
Création des repertoires : | Création des repertoires : | ||
Ligne 372 : | Ligne 359 : | ||
/home/export/profile : Contient les profils windows de chaque utilisateur, ils sont créés automatiquement pour les nouveaux | /home/export/profile : Contient les profils windows de chaque utilisateur, ils sont créés automatiquement pour les nouveaux | ||
+ | |||
/home/Commun : Partage commun à tous les utilisateurs du domaine | /home/Commun : Partage commun à tous les utilisateurs du domaine | ||
Ligne 385 : | Ligne 373 : | ||
mkdir -p /home/Commun | mkdir -p /home/Commun | ||
− | |||
− | + | Démmarer ldap : | |
− | + | /etc/init.d/slapd start | |
− | + | ||
− | + | Puis peupler l'annuaire : | |
− | smbldap- | + | smbldap-populate -a root |
− | |||
− | + | Redémararer le serveur (conseillé) ou relancer les daemons : | |
+ | /etc/init.d/slapd stop | ||
+ | /etc/init.d/samba restart | ||
/etc/init.d/slapd start | /etc/init.d/slapd start | ||
+ | === Apache === | ||
+ | |||
+ | === Gosa === | ||
+ | http://IPSERVEUR/gosa | ||
+ | |||
+ | ==== Configuration ==== | ||
− | + | Creer le dossier : | |
+ | mkdir /etc/gosa/vacation | ||
+ | chmod 777 /etc/gosa/vacation/ | ||
− | + | Dans l'interface web de gosa dans préférence séléctionner toutes les propriétés et modifier : | |
− | + | SambaSID : SID du PDC | |
− | + | accountPrimaryAttribute : uid à la place de cn | |
+ | sambaMachineAccountRDN : cn=computers, | ||
− | |||
− | === Création d’un compte utilisateur === | + | ==== Création d’un compte utilisateur ==== |
creer utilisateur et activer l'extension UNIX | creer utilisateur et activer l'extension UNIX | ||
− | === | + | Dans l'onglet samba cocher la case le compte n'expire jamais |
− | ==== Créer un répertoire personnel pour chaque utilisateur lors d'une ouverture de session | + | |
+ | === ACL === | ||
+ | ==== Verification ==== | ||
+ | Vérifier que le noyau supporte les ACL : | ||
+ | cat /boot/config-2.6.32-5-amd64 | grep _ACL | ||
+ | |||
+ | Si la commande renvoi ceci, le noyau les supporte: | ||
+ | CONFIG_EXT3_FS_POSIX_ACL=y | ||
+ | CONFIG_EXT4_FS_POSIX_ACL=y | ||
+ | |||
+ | ==== Installation ==== | ||
+ | Installer les ACL : | ||
+ | aptitude install acl | ||
+ | |||
+ | Les partages réseau se trouvant dans /home ajouter '''acl''' aux options de montage : | ||
+ | UUID=546c1046-0cd1-46a3-acd3-fb5e39286436 /home ext4 defaults,acl 0 2 | ||
+ | |||
+ | Redémarrer ou taper: | ||
+ | mount -o defaults,acl /dev/md3 | ||
+ | |||
+ | |||
+ | Vérification : | ||
+ | mount -t ext4 | ||
+ | |||
+ | /dev/md2 on / type ext4 (rw,errors=remount-ro) | ||
+ | /dev/md3 on /home type ext4 (rw,acl) | ||
+ | |||
+ | |||
+ | Les lignes suivantes, à mettre dans smb.conf, permettent d'activer les ACL dans les partages SAMBA : | ||
+ | nt acl support = yes | ||
+ | dos filemode= yes | ||
+ | |||
+ | === Ajout dans le domaine === | ||
+ | ==== Linux ==== | ||
+ | net join -S IPCONTROLEURDEDOMAINE -U UTLISATEUR | ||
+ | |||
+ | ==== Windows 7 ==== | ||
+ | ===== Avant l'entrée dans le domaine ===== | ||
+ | Ajouter les clef de registre : | ||
+ | [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters] | ||
+ | "DomainCompatibilityMode"=dword:00000001 | ||
+ | "DNSNameResolutionRequired"=dword:00000000 | ||
+ | |||
+ | La methode la plus simple est de créer un fichier finissant par .reg et d'ajouter au debut : | ||
+ | Windows Registry Editor Version 5.00 | ||
+ | |||
+ | |||
+ | ''' Redemarer la machine avant de se connecter au domaine. ''' | ||
+ | |||
+ | |||
+ | ===== Problèmes ===== | ||
+ | Le démarage de la session d'un utilisateur du domaine est relativement long. Pour y remedier : <br/> | ||
+ | Lancer gpedit.msc. | ||
+ | Configuration de l'ordinateur | ||
+ | Modèles d'administration | ||
+ | Système | ||
+ | Profil des utilisateurs | ||
+ | Définir le temps d'attente maximum pour le réseau si un utilisateur a un profil utilisateur ou un répertoire d'acceuil distant itinérant | ||
+ | Définir à 0 secondes | ||
+ | |||
+ | === Créer un répertoire personnel pour chaque utilisateur lors d'une ouverture de session === | ||
http://damstux.free.fr/wiki/index.php?title=Tips_Samba_LDAP | http://damstux.free.fr/wiki/index.php?title=Tips_Samba_LDAP | ||
+ | |||
Dans la section [homes] de smb.conf | Dans la section [homes] de smb.conf | ||
on ajoute: | on ajoute: | ||
− | |||
/usr/local/sbin/mkhomedir.sh %U | /usr/local/sbin/mkhomedir.sh %U | ||
− | + | La section doit donc ressembler à ça : | |
− | |||
[homes] | [homes] | ||
− | comment = | + | comment = Répertoire personnel de %U |
− | + | valid users = %S | |
+ | create mask = 0700 | ||
+ | directory mask = 0700 | ||
root preexec = /usr/local/sbin/mkhomedir.sh %U | root preexec = /usr/local/sbin/mkhomedir.sh %U | ||
browseable = No | browseable = No | ||
− | + | writable = yes | |
− | |||
Ensuite on créé le fichier /usr/local/sbin/mkhomedir.sh | Ensuite on créé le fichier /usr/local/sbin/mkhomedir.sh | ||
+ | #!/bin/bash | ||
− | + | <source lang="bash"> | |
− | |||
if [ ! -e /home/$1 ]; then | if [ ! -e /home/$1 ]; then | ||
mkdir /home/$1 | mkdir /home/$1 | ||
Ligne 441 : | Ligne 497 : | ||
exit 0 | exit 0 | ||
+ | </source> | ||
+ | On donne ensuite les droits: | ||
+ | chown root:root /usr/local/sbin/mkhomedir.sh | ||
+ | chmod +x /usr/local/sbin/mkhomedir.sh | ||
+ | === TIPS === | ||
+ | ==== Scripts de démarage ==== | ||
+ | vim compta.bat | ||
+ | <source lang='dos'> | ||
+ | @echo off | ||
+ | if not exist "P:\" net use P: \\gosa-debian\compta /persistent:yes | ||
+ | if not exist "V:\" net use V: \\gosa-debian\commun /persistent:yes | ||
+ | </source> | ||
+ | aptitude install dos2unix | ||
− | + | Puis : | |
+ | unix2dos compta.bat | ||
+ | === test === | ||
− | + | testparm : test le fichier smb.conf | |
− | + | pdbedit -L : lister les uilisateurs se trouvant dans la base samba | |
+ | pdbedit -L -v -u USERGOSA | ||
+ | smbclient -U pbrun //192.168.37.153/pbrun | ||
+ | smbldap-groupshow gr_compta (au niveau samba) | ||
+ | getent passwd, getent group (au niveau unix) | ||
+ | |||
+ | smbldap-userlist : liste des utilisateurs | ||
+ | smbldap-usershow UTILISATEUR : voir les informations sur un utilisateur | ||
− | + | === reférences === | |
− | http://doc.fedora-fr.org/wiki/Configuration_d%27un_serveur_d%27authentification_Openldap_Samba <br/> | + | http://doc.fedora-fr.org/wiki/Configuration_d%27un_serveur_d%27authentification_Openldap_Samba : fedora samba ldap <br/> |
− | https://oss.gonicus.de/labs/gosa/wiki/DocumentationInstallingPluginInstallation <br/> | + | https://oss.gonicus.de/labs/gosa/wiki/DocumentationInstallingPluginInstallation : documentaion de gosa <br/> |
− | http://damstux.free.fr/wiki/index.php?title=PDC_Samba_LDAP <br/> | + | http://damstux.free.fr/wiki/index.php?title=PDC_Samba_LDAP : samba ldap pdc <br/> |
+ | http://monblog.system-linux.net/blog/2008/11/04/creer-un-controleur-principal-de-domaine-avec-samba-et-un-annuaire-ldap/comment-page-2/#comment-4261 : samba ldap pdc <br/> |
Version actuelle datée du 10 octobre 2012 à 09:26
GOsa² est un outil d’administration sous GPL, écrit en PHP et conçu pour administrer les comptes et les systèmes dans un arbre LDAP. Une série d’extensions existe déjà de base pour la gestion des personnes, des systèmes, des logiciels.
But :
Monter un contreur de domaine sous linux.Gosa² permet au client de créer et de modifier facilement les utilisateurs et les groupes via une interface web simple
Sommaire
Installation
Installation de ldap
aptitude install slapd db4.8-util ldap-utils /etc/init.d/slapd stop
Installation de samba
aptitude install samba smbfs samba-client smbldap-tools
Installation de gosa
Ajouter le dépot dans /etc/apt/sources.list
#Gosa deb http://oss.gonicus.de/pub/gosa/debian-squeeze/ ./
Puis installer les paquets :
aptitude update aptitude install gosa gosa-schema gosa-help-fr gosa-plugin-samba gosa-plugin-systems
Configuration de ldap
Ajouter les schemas de samba et gosa :
vim /etc/ldap/convert-file.conf # Configuration globale include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/nis.schema #for gosa include /etc/ldap/schema/gosa/gosystem.schema include /etc/ldap/schema/gosa/gofon.schema include /etc/ldap/schema/gosa/goto.schema include /etc/ldap/schema/gosa/goto-mime.schema include /etc/ldap/schema/gosa/gofax.schema include /etc/ldap/schema/gosa/goserver.schema include /etc/ldap/schema/gosa/samba3.schema include /etc/ldap/schema/gosa/gosa-samba3.schema
Convertir les schemas :
mkdir /tmp/ldif_output
slapcat -f /etc/ldap/convert-file.conf -F /tmp/ldif_output -n0 -s ""
rm /etc/ldap/slapd.d/cn=config/cn=schema/*
cp /tmp/ldif_output/cn\=config/cn\=schema/* /etc/ldap/slapd.d/cn\=config/cn\=schema/
chown openldap:openldap /etc/ldap/slapd.d/cn=config/cn=schema/*
NSS et PAM
Installation
Sur le poste qui acceptera des comptes gérés par LDAP, nous installons en premier les outils utiles à leurs communications.
aptitude install libnss-ldap
cela ammene à configurer 2 paquets libnss-ldap et libpam-ldap.
Identifiant uniforme de ressource (« URI ») du serveur LDAP : ldap://127.0.0.1
Nom distinctif (DN) de la base de recherche : dc=systea,dc=local
Version de LDAP à utiliser : 3
Compte LDAP pour le superutilisateur (« root ») : cn=admin,dc=systea,dc=local
Dans les 2 fichiers suivants :
vim /etc/libnss-ldap.conf
vim /etc/pam_ldap.conf
- Décommenter la ligne : host 127.0.0.1
Configuration de NSS
vim /etc/nsswitch.conf
Ajouter la reférence à ldap :
passwd: compat ldap group: compat ldap shadow: compat ldap
Configuration de PAM
source : http://wiki.debian.org/LDAP/PAM
mv /etc/pam.d/common-account /etc/pam.d/common-account.bk
vim /etc/pam.d/common-account
account sufficient pam_ldap.so account required pam_unix.so account sufficient pam_succeed_if.so account required pam_permit.so
mv /etc/pam.d/common-auth /etc/pam.d/common-auth.bk
vim /etc/pam.d/common-auth
auth sufficient pam_ldap.so use_first_pass auth sufficient pam_unix.so nullok_secure auth requisite pam_succeed_if.so auth required pam_deny.so
mv /etc/pam.d/common-password /etc/pam.d/common-password.bk
vim /etc/pam.d/common-password
password sufficient pam_ldap.so password sufficient pam_unix.so md5 obscure min=4 max=8 nullok try_first_pass password required pam_deny.so
mv /etc/pam.d/common-session /etc/pam.d/common-session.bk
vim /etc/pam.d/common-session
session required pam_limits.so session required pam_unix.so session optional pam_ldap.so
Création auto de /home
Pour la création automatique du répertoire lorsque qu'un utilisateur se connecte avec un compte unix se trouvant dans l'annuaire, Ajouter dans /etc/pam.d/common-session :
session required pam_mkhomedir.so skel=/etc/skel umask=0022
samba
Si besoin d'une interface pour gerer les partages :
apt-get install swat
Configuration de smbldap-tools
cd /etc/smbldap-tools
vim smbldap_bind.conf
masterDN="cn=admin,dc=systea,dc=local"
masterPw="MDPADMINLDAP"
slaveDN="cn=admin,dc=systea,dc=local"
slavePw="MDPADMINLDAP"
Récuperer le localSID du serveur. A mettre dans smbldap.conf
net getlocalsid
vim smbldap.conf
SID="S-1-5-21-2656711195-2971921737-1932468485"
masterLDAP="127.0.0.1"
masterPort="389"
ldap admin dn =cn=admin,dc=systea,dc=local
ldapTLS="0"
suffix="dc=systea,dc=local"
usersdn="ou=people,${suffix}"
computersdn="ou=computers,${suffix}"
groupsdn="ou=groups,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=SYSTEA,${suffix}"
scope="sub"
hash_encrypt="SSHA"
crypt_salt_format="%s"
userLoginShell="/bin/false"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
#Les mots de passe expirent dans 10ans
defaultMaxPasswordAge="3650"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
Donner les bons droit aux fichiers :
chmod 0644 /etc/smbldap-tools/smbldap.conf chmod 0600 /etc/smbldap-tools/smbldap_bind.conf
Configuration de samba
Éditer le fichier smb.conf pour paramétrer les connexions à notre annuaire LDAP:
vim /etc/samba/smb.conf
##PDC##
[global]
## identification du serveur ##
# nom du domaine
workgroup = SYSTEA
# nom du serveur dans le domain
netbios name = GOSA-DEBIAN
# description qui sera affichée chez les clients
server string = Serveur Samba %v sur %L
## controleur de domaine ##
# les clients peuvent s'authentifier sur ce serveur
domain logons = Yes
# le serveur fait office de serveur wins
wins support = Yes
# ce serveur sera toujours le serveur maitre avec un
# niveau de 255, les produits
# microsoft doivent être au alentour de 70 au maximum
os level = 77
# tiens à jour la liste de toutes les machines du domaine
# ce role doit etre accordé à la machine qui agit en
# tant que PDC
domain master = yes
# ce serveur est le serveur de son sous reseau
local master = yes
# astuce pour etre certain de devenir le local
# master browser de son sous reseau
prefered master = yes
# l'authentification est faite sur cette machine
security = user
# les mot de passe sont cryptés
encrypt passwords = true
# authorise les clients à synchroniser leur horloge
time server = yes
host msdfs = yes
# augmente les performance tcp/ip
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# methode de resolution des noms
name resolve order = wins hosts bcast
dns proxy = no
hosts allow = 192.168. 127.0.0
## journalisation ##
# niveau de log
log level = 2
# le log se fait par machine
log file = /var/log/samba/log.%m
# taille maximum d'un fichier de log
max log size = 1000
# horodatage des actions loggées
debug timestamp = yes
## option concernant les fichiers ##
guest account = nobody
printing = cups
printcap name = cups
# oplock
oplocks = No
level2 oplocks = No
kernel oplocks = No
# fichier cache
hide files = /desktop.ini/ntuser.ini/NTUSER.*/
hide dot files = yes
# option pour la casse des noms de fichiers
case sensitive = No
default case = lower
preserve case = yes
short preserve case = Yes
# Table d'encodage des caractères (le même que sous windows)
Unix Charset = ISO8859-15
## options LDAP ##
passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=systea,dc=local
ldap machine suffix = ou=computers
ldap user suffix = ou=people
ldap group suffix = ou=groups
ldap admin dn = "cn=admin,dc=systea,dc=local"
ldap ssl = off
ldap passwd sync = Yes
enable privileges = Yes
## profile et logon ##
logon path =
logon home =
#On peut commenter les 2lignes ci-dessus et décommenter
#les 4 lignes ci-dessous pour que tous les utilisateurs
#aient un profil itinérant. Gosa permet une configuration différente par utilisateur.
;logon path = \\%L\profiles\%U
;logon drive = P:
;logon home = \\%L\%U
# script à executer lorsque un utilisateur se connecte
;logon script = logon.bat
template shell = /bin/false
winbind use default domain = Yes
nt acl support = Yes
dos filemode= yes
msdfs root = Yes
## SMBLDAP-TOOLS ##
add user script = /usr/sbin/smbldap-useradd -m "%u"
add machine script = /usr/sbin/smbldap-useradd -t 30 -w "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
delete user script = /usr/sbin/smbldap-userdel "%u"
delete group script = /usr/sbin/smbldap-groupdel "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
passwd program = /usr/sbin/smbldap-passwd -u %u
[netlogon]
comment = Network Logon Service
path = /home/netlogon
guest ok = yes
writable = no
browseable = no
[profiles]
path = /home/export/profile
browseable = no
writable =yes
profile acls = yes
create mask = 0700
directory mask = 0700
guest ok = yes
[compta]
comment = Partage Compta
path = /home/compta
valid users = @gr_compta
read only = No
browseable = yes
writable = yes
[homes]
comment = Répertoire personnel de %U
valid users = %S
create mask = 0700
directory mask = 0700
browseable = No
writable = yes
[Commun]
comment = Repertoire commun
browseable = Yes
writeable = Yes
public = yes
path = /home/Commun
Ne pas oblier de donner le mot de passe LDAP à samba :
smbpasswd -w MDPLDAPADMIN
Création des repertoires :
/home/netlogon : Contient les éventuels scripts qui sont éxécutés à chaque connexion d'un utilisateur (.bat)
/home/export/profile : Contient les profils windows de chaque utilisateur, ils sont créés automatiquement pour les nouveaux
/home/Commun : Partage commun à tous les utilisateurs du domaine
/home/lenomdelutilisateur : Répertoire personnel de l'utilisateur
Création des répertoires:
mkdir -p /home/netlogon mkdir -p /home/export/profile mkdir -p /home/Commun
Démmarer ldap :
/etc/init.d/slapd start
Puis peupler l'annuaire :
smbldap-populate -a root
Redémararer le serveur (conseillé) ou relancer les daemons :
/etc/init.d/slapd stop /etc/init.d/samba restart /etc/init.d/slapd start
Apache
Gosa
Configuration
Creer le dossier :
mkdir /etc/gosa/vacation chmod 777 /etc/gosa/vacation/
Dans l'interface web de gosa dans préférence séléctionner toutes les propriétés et modifier :
SambaSID : SID du PDC accountPrimaryAttribute : uid à la place de cn sambaMachineAccountRDN : cn=computers,
Création d’un compte utilisateur
creer utilisateur et activer l'extension UNIX
Dans l'onglet samba cocher la case le compte n'expire jamais
ACL
Verification
Vérifier que le noyau supporte les ACL :
cat /boot/config-2.6.32-5-amd64 | grep _ACL
Si la commande renvoi ceci, le noyau les supporte:
CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT4_FS_POSIX_ACL=y
Installation
Installer les ACL :
aptitude install acl
Les partages réseau se trouvant dans /home ajouter acl aux options de montage :
UUID=546c1046-0cd1-46a3-acd3-fb5e39286436 /home ext4 defaults,acl 0 2
Redémarrer ou taper:
mount -o defaults,acl /dev/md3
Vérification :
mount -t ext4
/dev/md2 on / type ext4 (rw,errors=remount-ro) /dev/md3 on /home type ext4 (rw,acl)
Les lignes suivantes, à mettre dans smb.conf, permettent d'activer les ACL dans les partages SAMBA :
nt acl support = yes dos filemode= yes
Ajout dans le domaine
Linux
net join -S IPCONTROLEURDEDOMAINE -U UTLISATEUR
Windows 7
Avant l'entrée dans le domaine
Ajouter les clef de registre :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters] "DomainCompatibilityMode"=dword:00000001 "DNSNameResolutionRequired"=dword:00000000
La methode la plus simple est de créer un fichier finissant par .reg et d'ajouter au debut :
Windows Registry Editor Version 5.00
Redemarer la machine avant de se connecter au domaine.
Problèmes
Le démarage de la session d'un utilisateur du domaine est relativement long. Pour y remedier :
Lancer gpedit.msc.
Configuration de l'ordinateur Modèles d'administration Système Profil des utilisateurs Définir le temps d'attente maximum pour le réseau si un utilisateur a un profil utilisateur ou un répertoire d'acceuil distant itinérant Définir à 0 secondes
Créer un répertoire personnel pour chaque utilisateur lors d'une ouverture de session
http://damstux.free.fr/wiki/index.php?title=Tips_Samba_LDAP
Dans la section [homes] de smb.conf
on ajoute:
/usr/local/sbin/mkhomedir.sh %U
La section doit donc ressembler à ça :
[homes] comment = Répertoire personnel de %U valid users = %S create mask = 0700 directory mask = 0700 root preexec = /usr/local/sbin/mkhomedir.sh %U browseable = No writable = yes
Ensuite on créé le fichier /usr/local/sbin/mkhomedir.sh
#!/bin/bash
if [ ! -e /home/$1 ]; then
mkdir /home/$1
chown $1:"Domain Users" /home/$1
chmod 700 /home/$1
fi
exit 0
On donne ensuite les droits:
chown root:root /usr/local/sbin/mkhomedir.sh chmod +x /usr/local/sbin/mkhomedir.sh
TIPS
Scripts de démarage
vim compta.bat
@echo off
if not exist "P:\" net use P: \\gosa-debian\compta /persistent:yes
if not exist "V:\" net use V: \\gosa-debian\commun /persistent:yes
aptitude install dos2unix
Puis :
unix2dos compta.bat
test
testparm : test le fichier smb.conf pdbedit -L : lister les uilisateurs se trouvant dans la base samba pdbedit -L -v -u USERGOSA smbclient -U pbrun //192.168.37.153/pbrun smbldap-groupshow gr_compta (au niveau samba) getent passwd, getent group (au niveau unix)
smbldap-userlist : liste des utilisateurs smbldap-usershow UTILISATEUR : voir les informations sur un utilisateur
reférences
http://doc.fedora-fr.org/wiki/Configuration_d%27un_serveur_d%27authentification_Openldap_Samba : fedora samba ldap
https://oss.gonicus.de/labs/gosa/wiki/DocumentationInstallingPluginInstallation : documentaion de gosa
http://damstux.free.fr/wiki/index.php?title=PDC_Samba_LDAP : samba ldap pdc
http://monblog.system-linux.net/blog/2008/11/04/creer-un-controleur-principal-de-domaine-avec-samba-et-un-annuaire-ldap/comment-page-2/#comment-4261 : samba ldap pdc