Outils personnels

GOsa : PDC : Différence entre versions

De wikiGite

(Installation)
 
(32 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
EN CONSTRUCTION
 
 
 
 
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/>
S'autentifier sur samba par des groupes et des utilisateurs se trouvant dans un annuaire openldap .Gosa² permet au client de créer et de modifier facilement les utilisateurs et les groupes<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
  
Installation de ldap :
+
=== Configuration de ldap ===
apt-get install slapd ldap-utils
 
/etc/init.d/slapd stop
 
 
 
Puis :
 
  
apt-get update
+
Ajouter les schemas de samba et gosa :
  apt-get install gosa gosa-schema gosa-help-fr samba gosa-plugin-samba smbldap-tools gosa-plugin-goto goto-common
+
  vim /etc/ldap/convert-file.conf
 
   
 
   
Gosa ne fonctionne pas avec la nouvelle methode d'authentifaication de openldap, il faut donc repasser par la configuration de slapd.conf :
+
# Configuration globale
  vim /etc/default/slapd
+
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
  
SLAPD_CONF="/etc/ldap/slapd.conf"
 
 
Configuration de ldap :
 
vim /etc/ldap/slapd.conf
 
  
 +
Convertir les schemas :
 
<source lang="bash">
 
<source lang="bash">
# Configuration globale
+
mkdir /tmp/ldif_output
include /etc/ldap/schema/core.schema
+
slapcat -f /etc/ldap/convert-file.conf -F /tmp/ldif_output -n0 -s ""
include /etc/ldap/schema/cosine.schema
+
rm /etc/ldap/slapd.d/cn=config/cn=schema/*
include /etc/ldap/schema/inetorgperson.schema
+
cp /tmp/ldif_output/cn\=config/cn\=schema/* /etc/ldap/slapd.d/cn\=config/cn\=schema/
include /etc/ldap/schema/nis.schema
+
chown openldap:openldap /etc/ldap/slapd.d/cn=config/cn=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
 
pidfile /var/run/slapd/slapd.pid
 
argsfile /var/run/slapd/slapd.args
 
loglevel stats
 
modulepath /usr/lib/ldap
 
moduleload back_hdb
 
 
# Database
 
database hdb
 
suffix "dc=systea,dc=local"
 
rootdn "cn=admin,dc=systea,dc=local"
 
rootpw {SHA}Y6eedHXkjVaXcPbzDsALD4UohLI=
 
directory /var/lib/ldap
 
 
index  objectClass,cn eq
 
index  sambaSID eq,sub
 
index  sambaPrimaryGroupSID eq
 
index  sambaDomainName eq
 
 
# ACLs
 
#samba
 
access to attrs=userPassword,sambaPwdLastSet,sambaPwdMustChange,sambaPwdCanChange,shadowMax,shadowExpire
 
        by dn="cn=admin,dc=systea,dc=local" write
 
        by anonymous auth
 
        by self write
 
        by * none
 
access to attrs=sambaLmPassword,sambaNtPassword
 
        by dn="cn=admin,dc=systea,dc=local" write
 
        by anonymous auth
 
        by self write
 
        by * none
 
#Autorisation générique
 
  access to dn="ou=(people|groups|computers),dc=systea,dc=local"
 
        by dn="cn=admin,dc=systea,dc=local" write
 
        by * read
 
  access to *
 
        by dn="cn=admin,dc=systea,dc=local" =wrscx
 
        by * read
 
        by anonymous auth
 
 
</source>
 
</source>
Les hashs SHA (userPassword) sont générés grâce à la commande :
 
slappasswd -h {sha}
 
  
=== Installation des paquets NSS et PAM ===
 
  
 +
=== 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.
  apt-get install libnss-ldap
+
  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 100 : 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/>
  
 
+
VERIFIER l'utilité :
 
 
Dans les 2 fichiers suivants :
 
Dans les 2 fichiers suivants :
  
Ligne 108 : Ligne 73 :
 
  vim /etc/pam_ldap.conf
 
  vim /etc/pam_ldap.conf
  
* Ajouter la ligne : host 127.0.0.1
+
* Décommenter la ligne : host 127.0.0.1
* On peut décommenter et modifier les lignes :
 
nss_base_passwd ou=people,dc=systea,dc=local?one
 
nss_base_shadow ou=people,dc=systea,dc=local?one
 
nss_base_group ou=groups,dc=systea,dc=local?one
 
 
 
  
 
==== Configuration de NSS ====
 
==== Configuration de NSS ====
 
vim /etc/nsswitch.conf
 
vim /etc/nsswitch.conf
  
ajouter reférence à ldap :
+
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 133 : 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 141 : 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 162 : 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 168 : Ligne 135 :
 
   
 
   
  
 +
==== Configuration de smbldap-tools ====
  
 
  cd /etc/smbldap-tools
 
  cd /etc/smbldap-tools
Ligne 179 : Ligne 147 :
 
</source>
 
</source>
  
net getlocalsid :  recuperer le localSID du serveur. A mettre dans smbldap.conf
+
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 216 : Ligne 186 :
 
  chmod 0600 /etc/smbldap-tools/smbldap_bind.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 222 : Ligne 194 :
 
##PDC##
 
##PDC##
 
[global]
 
[global]
# identification du serveur #
+
## identification du serveur ##
  ; nom du domaine
+
  # nom du domaine
 
  workgroup = SYSTEA
 
  workgroup = SYSTEA
  ; nom du serveur dans le domain
+
  # nom du serveur dans le domain
 
  netbios name = GOSA-DEBIAN
 
  netbios name = GOSA-DEBIAN
  ; description qui sera affichée chez les clients
+
  # 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
+
  # les clients peuvent s'authentifier sur ce serveur
 
  domain logons = Yes
 
  domain logons = Yes
  ; le serveur fait office de serveur wins
+
  # le serveur fait office de serveur wins
 
  wins support = Yes
 
  wins support = Yes
 
   
 
   
  ; ce serveur sera toujours le serveur maitre avec un
+
  # ce serveur sera toujours le serveur maitre avec un
  ; niveau de 255, pour l'instant (2005) les produits
+
  # niveau de 255, les produits
  ; microsoft doivent être au alentour de 70 au maximum
+
  # 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
+
  # tiens à jour la liste de toutes les machines du domaine
  ; ce role doit etre accordé à la machine qui agit en
+
  # ce role doit etre accordé à la machine qui agit en
  ; tant que PDC
+
  # tant que PDC
 
  domain master = yes
 
  domain master = yes
  ; ce serveur est le serveur de son sous reseau
+
  # ce serveur est le serveur de son sous reseau
 
  local master = yes
 
  local master = yes
  ; astuce pour etre certain de devenir le local
+
  # astuce pour etre certain de devenir le local
  ; master browser de son sous reseau
+
  # master browser de son sous reseau
 
  prefered master = yes
 
  prefered master = yes
  ; l'authentification est faite sur cette machine
+
  # l'authentification est faite sur cette machine
 
  security = user
 
  security = user
  ; les mot de passe sont cryptés
+
  # les mot de passe sont cryptés
 
  encrypt passwords = true
 
  encrypt passwords = true
  ; authorise les clients à synchroniser leur horloge
+
  # authorise les clients à synchroniser leur horloge
 
  time server = yes
 
  time server = yes
 
  host msdfs = yes
 
  host msdfs = yes
  ;augmente les performance tcp/ip
+
  # 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
+
  # methode de resolution des noms
 
  name resolve order = wins hosts bcast
 
  name resolve order = wins hosts bcast
 
   
 
   
Ligne 264 : Ligne 236 :
 
  hosts allow = 192.168. 127.0.0
 
  hosts allow = 192.168. 127.0.0
  
# journalisation #
+
## journalisation ##
  ; niveau de log
+
  # niveau de log
 
  log level = 2
 
  log level = 2
  ; le log se fait par machine
+
  # 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
+
  # taille maximum d'un fichier de log
 
  max log size = 1000
 
  max log size = 1000
  ; horodatage des actions loggées
+
  # 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
+
  # oplock
 
  oplocks = No
 
  oplocks = No
 
  level2 oplocks = No
 
  level2 oplocks = No
Ligne 285 : Ligne 257 :
  
 
   
 
   
  ; fichier cache
+
  # 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
+
  # 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)
+
  # Table d'encodage des caractères (le même que sous windows)
 
  Unix Charset = ISO8859-15  
 
  Unix Charset = ISO8859-15  
  
#option LDAP
+
## 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
Ligne 308 : 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
  ; script à executer lorsque un utilisateur se connecte
+
#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 371 : 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 378 : 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 391 : Ligne 373 :
 
  mkdir -p /home/Commun
 
  mkdir -p /home/Commun
  
test :
 
  
testparm : test le fichier smb.conf
+
Démmarer ldap :
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)
 
 
 
redémarer ldap :
 
 
  /etc/init.d/slapd start
 
  /etc/init.d/slapd start
  
 
+
Puis peupler l'annuaire :
 
  smbldap-populate -a root
 
  smbldap-populate -a root
  
  /etc/init.d/slapd stopt
+
Redémararer le serveur (conseillé) ou relancer les daemons :
 +
  /etc/init.d/slapd stop
 
  /etc/init.d/samba restart
 
  /etc/init.d/samba restart
 
  /etc/init.d/slapd start
 
  /etc/init.d/slapd start
  
 +
=== Apache ===
 +
 +
=== Gosa ===
 
http://IPSERVEUR/gosa
 
http://IPSERVEUR/gosa
  
=== Création d’un compte utilisateur ===
+
==== 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
 
creer utilisateur et activer l'extension UNIX
  
==== Créer un répertoire personnel pour chaque utilisateur lors d'une ouverture de session ====
+
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 : <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
  
  
Ca doit donner ca donc:
+
La section doit donc ressembler à ça :
 
 
 
  [homes]
 
  [homes]
  comment = Home Directories
+
  comment = Répertoire personnel de %U
  path = /home/%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
  writeable= yes
+
  writable = yes
 
 
  
  
 
Ensuite on créé le fichier /usr/local/sbin/mkhomedir.sh
 
Ensuite on créé le fichier /usr/local/sbin/mkhomedir.sh
 +
#!/bin/bash
  
#!/bin/bash
+
<source lang="bash">
 
 
  if [ ! -e /home/$1 ]; then
 
  if [ ! -e /home/$1 ]; then
 
  mkdir /home/$1
 
  mkdir /home/$1
Ligne 446 : 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
  
On donne ensuite les droits:
+
Puis :
 +
unix2dos compta.bat
  
 +
=== test ===
  
  chown root:root /usr/local/sbin/mkhomedir.sh
+
  testparm : test le fichier smb.conf
  chmod +x /usr/local/sbin/mkhomedir.sh
+
  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 :'''<br/>
+
=== 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

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

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

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