Outils personnels

GOsa : PDC

De wikiGite

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. Une série d’extensions existe déjà de base pour la gestion des personnes, des systèmes, des logiciels.

But :
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

Installation

Ajouter le dépot:

#Gosa
deb http://oss.gonicus.de/pub/gosa/debian-squeeze/ ./

Installation de ldap :

apt-get install slapd ldap-utils
/etc/init.d/slapd stop

Puis :

apt-get update
apt-get install gosa gosa-schema gosa-help-fr samba gosa-plugin-samba smbldap-tools gosa-plugin-goto goto-common

Gosa ne fonctionne pas avec la nouvelle methode d'authentifaication de openldap, il faut donc repasser par la configuration de slapd.conf :

vim /etc/default/slapd
SLAPD_CONF="/etc/ldap/slapd.conf"

Configuration de ldap :

vim /etc/ldap/slapd.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
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

Les hashs SHA (userPassword) sont générés grâce à la commande :

slappasswd -h {sha}

Installation des paquets NSS et PAM

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

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


VERIFIER l'utilité : Dans les 2 fichiers suivants :

vim /etc/libnss-ldap.conf 
vim /etc/pam_ldap.conf
  • Ajouter 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

vim /etc/nsswitch.conf

ajouter 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


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"
net getlocalsid :  recuperer le localSID du serveur. A mettre dans smbldap.conf
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

É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, pour l'instant (2005) 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 

#option 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 = \\%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
 msdfs root = Yes

#SMBLDAP-TOOLS 
 add user script = /usr/sbin/smbldap-useradd -m "%u"
 add machine script = /usr/sbin/smbldap-useradd -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
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

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)

redémarer ldap :

/etc/init.d/slapd start


smbldap-populate -a root
/etc/init.d/slapd stopt
/etc/init.d/samba restart
/etc/init.d/slapd start

http://IPSERVEUR/gosa

Création d’un compte utilisateur

creer utilisateur et activer l'extension UNIX

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


Ca doit donner ca donc:

[homes]
comment = Home Directories
path = /home/%U
root preexec = /usr/local/sbin/mkhomedir.sh %U
browseable = No
writeable= 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

reférences :
http://doc.fedora-fr.org/wiki/Configuration_d%27un_serveur_d%27authentification_Openldap_Samba
https://oss.gonicus.de/labs/gosa/wiki/DocumentationInstallingPluginInstallation
http://damstux.free.fr/wiki/index.php?title=PDC_Samba_LDAP