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
Sommaire
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
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