Outils pour utilisateurs

Outils du site


samba4
no way to compare when less than two revisions

Différences

Ci-dessous, les différences entre deux révisions de la page.


Révision précédente
samba4 [2020/09/10 14:34] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Samba 4 et NFSv4 ======
  
 +- auteur : Jessica Kiragossian - 
 +
 +Samba 4 prend en charge d’une manière transparente des domaines Active Directory, en implémentant en natif les protocoles tels que LDAP, Kerberos, RPC et SMB 3. En fait, Samba 4 est l’Active Directory, qui est composé des protocoles : LDAP, Kerberos et DNS. L’Active Directory permet aux administrateurs système Windows de gérer en toute sécurité les objets d'annuaire d'une infrastructure de base de données évolutive et centralisée. Les objets (utilisateurs, systèmes, groupes, imprimantes, applications) sont stockées selon une hiérarchie composée de nœuds, d’arbres, de forêts et domaines. 
 +
 +
 +
 +===== 1)Configuration du proxy sur les machines =====
 +
 +on configure le proxy :
 +- soit à l'installation d'Ubuntu
 +
 +- soit après l'installation où on crée le fichier "01proxy" :
 +<code bash>sudo nano /etc/apt/apt.conf.d/01proxy</code>
 +on ajoute à ce fichier les lignes suivantes :
 +<code bash>Acquire::http::proxy "http://ifcache:3128";
 +Acquire::ftp::proxy "http://ifcache:3128";</code>
 +avec "ifcache" le nom du proxy et "3128" son port.
 +
 +===== 2)mise à jour et installation openssh-server sur les machines =====
 +on effectue les mises à jours :
 +<code bash>sudo apt-get update
 +sudo apt-get upgrade</code>
 +
 +on installe openssh-server pour pouvoir ouvrir plusieurs fenêtres par la suite :
 +<code bash>sudo apt-get install openssh-server</code>
 +
 +on peut changer le mot de passe de root :
 +<code bash>sudo passwd root</code>
 +
 +===== 3)installation de Samba 4 sur le serveur =====
 +
 +Tout d'abord, j'ai installé Samba 4 par compilation, en installant les librairies dont Samba 4 a besoin et en chargeant la version 4.1.0 via la commande git, qui est un logiciel de gestion de versions décentralisé. 
 +
 +on installe les paquets dont Samba 4 a besoin : <code bash># apt-get install build-essential, libacl1-dev, python-dev, libldap2-dev, pkg-config, gdb, libgnutls-dev, libblkid-dev, libreadline-dev, python-dnspython, libpopt-dev, libbsd-dev, attr, docbook-xsl, libcups2-dev, git </code>
 +
 +on va devoir configurer git pour télécharger samba4 :
 +<code bash>sudo git config --global http.proxy http://ifcache:3128/</code>
 +
 +la dernière commande crée un fichier .gitconfig dans ~ contenant l'information sur le proxy : 
 +<code bash> [http] 
 +     proxy = http://ifcache:3128/ </code>
 +
 +on peut maitenant copier samba dans le dossier "/usr/src/samba4"
 +<code bash>sudo git clone http://git.samba.org/samba.git /usr/src/samba4/</code>
 +le téléchargement peut prendre 1 à 2 minutes.
 +
 +on se place dans le dossier samba4 crée :
 +<code bash>cd /usr/src/samba4/</code>
 +
 +après le téléchargement, on choisit la dernière version 4.1.7 : 
 +<code bash>sudo git checkout tags/samba-4.1.7</code>
 +
 +on peut maintenant compiler samba 4.1.7 : 
 +<code bash>sudo ./configure --enable-debug
 +sudo make
 +sudo make install</code>
 +la compilation prend plusieurs minutes.
 +
 +on doit rajouter les chemins PATH suivants dans /etc/sudoers et /etc/environment : 
 +<code bash> :/usr/local/samba/sbin:/usr/local/samba/bin</code>
 +
 +J'ai choisi de ne pas l'installer avec le paquet « samba4 » en accord avec le service informatique qui gèrera les mises à jour de la version de Samba car la version installée par le paquet est 4.0.0.
 +
 +Après l'installation, le répertoire d'installation "/usr/local/samba/" a été créé.
 +
 +Il contient les répertoires suivants :
 +
 +/bin : les exécutables utiles pour l'administration du serveur.
 +
 +/etc : le fichier de configuration de samba smb.conf.
 +
 +/lib : toutes les librairies.
 +
 +/include : les fichiers d'en-tête.
 +
 +/private : la base de données du serveur et la configuration du domaine AD.
 +
 +/var : la configuration annexe du serveur (GPO, ACL, etc.).
 +
 +/sbin : le démon principal samba.
 +
 +/share : les fichiers d'initialisation du domaine.
 +
 +===== 4)configuration réseau du serveur =====
 +
 +modifier la configuration IP de la machine : 
 +<code bash>sudo nano /etc/network/interfaces</code>
 +<code bash>iface eth0 inet static
 +address 10.0.2.15
 +netmask 255.255.255.0
 +gateway 10.0.2.1
 +dns-nameservers 10.0.2.15
 +dns-search krb</code>
 +
 +redémarrer la machine pour prendre en compte les modifications : 
 +<code bash>sudo reboot</code>
 +
 +on vérifie le contenu du fichier resolv.conf :
 +<code bash>sudo nano /etc/resolv.conf</code>
 +<code bash>nameserver 10.0.2.15
 +search krb</code>
 +
 +===== 5)initialisation du domaine sur le serveur =====
 +
 +on monte la partition :
 +<code bash>sudo mount / -o remount,acl,user_xattr,barrier=1</code>
 +
 +et modifie l'entrée dans /etc/fstab : 
 +<code bash>/dev/mapper/samba--vg-root / ext4 errors=remount-ro,defaults,acl,user_xattr,barrier=1 0 1</code>
 +
 +on configure le domaine de samba grace à l'outil "samba-tool"
 +<code bash>sudo /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --use-xattrs=yes --realm=KRB --domain=AD --adminpass=P@ssword --server-role=dc</code>
 +
 +"use-rfc2307" : utiliser l'extension LDAP rfc2307 pour renseigner les options Unix de l'AD et avoir des UID / GID correctement renseigné entre les serveurs du domaine.
 +
 +"use-xattrs=yes" : utiliser les attributs étendus.
 +
 +"realm=KRB" : le royaume et domaine DNS est KRB.
 +
 +"domain=AD" : le domaine windows est AD.
 +
 +"adminpass=P@ssword" : le mot de passe de l'administrator est P@ssword.
 +
 +"server-role=dc" : le role du serveur est controleur de domaine Active Directory.
 +
 +La configuration de Samba 4 « smb.conf » est générée automatiquement lors de la configuration du domaine.
 +
 +si on veut reconfigurer le domaine samba via samba-tool, il faut supprimer l'ancienne configuration et l'ancienne base de données : 
 +<code bash># rm -r /usr/local/samba/private/*
 +#rm /usr/local/samba/etc/smb.conf</code>
 +
 +===== 6)DNS =====
 +L'Active Directory est fortement basé sur un service DNS actif qui est sécurisé par défaut. En effet, il permet aux clients de trouver leur DC. De plus, « SAMBA_INTERNAL » n'accepte que les mises à jour DNS sécurisées via Kerberos. Le serveur DNS interne est intégré dans Samba et utilise l’AD comme backend. En outre, il est la solution DNS par défaut lors de l’approvisionnement et la mise à niveau d'un contrôleur AD Samba.
 +
 +modifier le fichier smb.conf et mettre l'adresse gateway: 
 +<code bash>sudo nano /usr/local/samba/etc/smb.conf</code>
 +<code bash>dns forwarder = 10.0.2.1</code>
 +
 +on va lancer Samba 4 et verifier son bon fonctionnement DNS.
 +
 +lancer samba en mode debug : 
 +<code bash>sudo /usr/local/samba/sbin/samba -i -M single -d 3</code>
 +
 +pour verifier le service ldap : 
 +<code bash>$ host -t SRV _ldap._tcp.krb.
 +_ldap._tcp.krb has SRV record 0 100 389 samba.krb.</code>
 +
 +pour verifier le service Kerberos : 
 +<code bash>$ host -t SRV _kerberos._udp.krb.
 +_kerberos._udp.krb has SRV record 0 100 88 samba.krb.</code>
 +
 +pour verifier le nom de la machine samba : 
 +<code bash>host -t A samba.krb.
 +samba.krb has address 10.0.2.15</code>
 +
 +si l'adresse retourner n'est pas la bonne alors on met à jour le dns via la commande samba-tool : 
 +<code bash>samba-tool dns update 127.0.0.1 samba <old dns address> <new dns address></code>
 +
 +on peut verifier les information de notre samba : 
 +<code bash>sudo samba-tool domain info 127.0.0.1 
 +Forest : krb 
 +Domain : krb 
 +Netbios domain : AD 
 +DC name : samba.krb 
 +DC netbios name : SAMBA 
 +Server site : Default-First-Site-Name 
 +Client site : Default-First-Site-Name </code> 
 +
 +===== 7)NTP =====
 +
 +Maintenant que le DNS fonctionne, il faut configurer le service NTP pour qu'ensuite les tickets Kerberos créés soient synchronisés avec Samba 4.
 +
 +on va d'abord installer le service NTP sur le serveur : 
 +<code bash>sudo apt-get install ntp</code>
 +
 +on modifie le fichier "/etc/ntp.conf" :
 +<code bash>sudo  nano /etc/ntp.conf</code>
 +
 +en ajoutant le script suivant pour synchroniser automatiquement le serveur samba et les clients : 
 +<code bash># ntp sur lui meme
 +server 127.127.1.0 
 +# l'horloge système de samba est la source de temps avec un niveau hiérarchique de 12.
 +# Le niveau stratum le plus précis est le stratum 0 et est réservé aux horloges atomiques. 
 +# Le niveau suivant, Stratum 1, est réservé aux serveurs NTP locaux : les serveurs horloges 
 +# atomiques. Les Stratum 2 à 15 sont les serveurs NTP connectés.
 +fudge 127.127.1.0 stratum 12
 +
 +# emplacement des signatures. Samba4 crée un socket que NTP peut utiliser pour avoir ses
 +# réponses signés. L'emplacement par défaut est contrôlé par la directive 
 +# "NTP signd socket directory" dans la configuration de Samba4 : "smb.conf".
 +NTPsigndsocket /usr/local/samba/var/lib/NTP_signd/
 +
 +# les clients Active Directory ont besoin d'un serveur MS-SNTP 
 +# qui signe de manière crypté les réponses
 +restrict default mssNTP
 +</code>
 +
 +===== 8)Kerberos 5  =====
 +
 +Le NTP étant configuré il est possible de faire du Kerberos. Samba 4 utilise l'implémentation Heimdal, de ce fait j'ai installé l'outil heimdal-clients pour pouvoir configurer Kerberos 5. Il est nécessaire de configurer Kerberos pour pouvoir tester par la suite NFSv4. 
 +
 +<code bash>sudo apt-get install heimdal-clients</code>
 +
 +on configure Kerberos : 
 +<code bash>realm : KRB 
 +serveur Kerberos du royaume : samba.krb 
 +serveur administratif du royaume Kerberos : samba.krb</code>
 +
 +on va modifier le fichier /etc/krb5.conf : 
 +<code bash>[libdefaults]
 +   allow_weak_crypto = tue
 +[domain realm]
 +  .krb = KRB
 +  krb = KRB</code>
 +
 +on va tester le service Kerberos :
 +
 +-ajouter un utilisateur au domaine : 
 +<code bash>sudo /usr/local/samba/bin/samba-tool user add tutu
 +new Password: *****
 +Retype Password: *****
 +User 'tutu' created successfully</code>
 +attention a bien mettre un mot de passe a plus de 7 caractères et complexe sinon le message d'erreur suivant s'affiche :
 +<code bash>ERROR(ldb): Failed to add user 'tutu':  - 0000052D: Constraint violation - check_password_restrictions: the password does not meet the complexity criteria!
 +</code>
 +
 +-générer la keytab : 
 +<code bash>sudo /usr/local/samba/bin/samba-tool domain exportkeytab /etc/krb5.keytab</code>
 +
 +on initialise le ticket de tutu :
 +<code bash>kinit tutu
 +tutu@KRB's Password:</code>
 +
 +on vérifie l'existance de ce ticket :
 +<code bash>klist
 +Credentials cache: FILE:/tmp/krb5cc_1000
 +        Principal: tutu@KRB
 +
 +  Issued                Expires               Principal
 +May 14 15:27:21 2014  May 15 01:27:15 2014  krbtgt/KRB@KRB
 +</code>
 +
 +si le kinit ne fonctionne pas : 
 +<code bash>kinit tutu
 +tutu@KRB's Password: 
 +kinit: Preauthentication failed while getting initial credentials</code>
 +
 +alors changer le mot de passe de l'utilisateur : 
 +<code bash>sudo samba-tool user setpassword tutu
 +New Password: 
 +Changed password OK</code>
 +
 +on reteste : 
 +<code bash>sudo kinit tutu
 +Password for tutu@KRB: 
 +sudo klist
 +Credentials cache: FILE:/tmp/krb5cc_1000
 +        Principal: tutu@KRB
 + 
 +  Issued                Expires               Principal
 +May  7 14:57:26 2014  May  8 00:57:22 2014  krbtgt/KRB@KRB
 +</code>
 +
 +===== 9)configuration du backup   =====
 +
 +le script de sauvegarde de samba n'est pas installé.
 +il faut donc recopier l'executable source samba_backup et y définir des droits d'accès : 
 +<code bash>sudo cp /usr/src/samba4/source4/scripting/bin/samba_backup /usr/sbin
 +sudo chown root:root /usr/sbin/samba_backup
 +sudo chmod 750 /usr/sbin/samba_backup
 +</code>
 +
 +on crée le dossier de backups spécifié dans le $WHERE de samba_backup : 
 +<code bash>sudo mkdir /usr/local/backups
 +sudo chmod 750 /usr/local/backups</code>
 +
 +tester le backup : 
 +<code bash>sudo /usr/sbin/samba_backup</code>
 +
 +les fichiers suivants apparaissent dans le repertoire "/usr/local/backups"
 +<code bash>etc.{time}.tar.bz2
 +samba4_private.{time}.tar.bz2
 +sysvol.{time}.tar.bz2
 +</code>
 +
 +pour que le temps affiche la date et l'heure on modifie le fichier "samba_backup" :
 +<code bash>WHEN=`date +%d%m%y%H%M`</code>
 +
 +éditer le backup : 
 +<code bash>sudo crontab -e</code>
 +et ajouter la ligne suiante pour qu'il s'effectue toute les heures : 
 +<code bash>0 * * * * /usr/sbin/samba_backup</code>
 +
 +on vérifie le contenu de : 
 +<code bash>sudo cd /usr/local/backups/
 +sudo ll
 +
 +</code>
 +
 +===== 10)configuration du partage de dossiers samba sur le serveur =====
 +
 +on modifie le fichier "/usr/local/samba/etc/smb.conf"
 +<code bash>  
 +# Global parameters
 +[global]
 +        # domaine DNS Windows 
 +        workgroup = AD
 +        # royaume Kerberos et nom du domaine DNS Linux
 +        realm = KRB
 +        # nom de la machine du serveur Samba 4
 +        netbios name = SAMBA
 +        #  rôle de la machine
 +        server role = active directory domain controller
 +        # DNS de relais : passerelle du serveur Samba 4
 +        dns forwarder = 10.0.2.1
 +        #  norme RFC2307 est utilisée par le serveur Samba 4 pour pouvoir 
 +        # ajoute les attributs Unix des utilisateurs Linux
 +        idmap_ldb:use rfc2307 = yes
 +[home]
 +        # commentaire du répertoire 
 +        comment = Home Directory
 +        # chemin où se trouve le dossier
 +        path = /home/samba/home
 +        # pas uniquement lisible
 +        read only = no
 +[profiles]
 +        # commentaire du répertoire 
 +        comment = Users profiles
 +        # chemin où se trouve le dossier
 +        path = /home/samba/profiles
 +        # pas uniquement lisible
 +        read only = no
 +[partage]
 +        # commentaire du répertoire 
 +        comment = input
 +        # chemin où se trouve le dossier
 +        path = /home/samba/partage
 +        # pas uniquement lisible
 +        read only = no
 +        # tous les droits sont accordés au super-utilisateur et aux utilisateurs sur ce répertoire
 +        create mask = 0770
 +[netlogon]
 +        path = /usr/local/samba/var/locks/sysvol/krb/scripts
 +        read only = No
 +[sysvol]
 +        path = /usr/local/samba/var/locks/sysvol
 +        read only = No  
 +</code>
 +
 +Le répertoire “netlogon” est partagé d'office lors de l'installation de Samba 4. C'est dans ce répertoire que le système met les scripts, les commandes à exécuter lors de la connexion, etc.
 +
 +Le répertoire « sysvol » est un répertoire partagé qui stocke la copie serveur des fichiers publics du domaine, qui sont répliqués entre tous les contrôleurs de domaine du domaine.
 +
 +
 +il faut créer les dossiers de partage nommés ci-dessus : 
 +<code bash>sudo mkdir /home/samba
 +sudo mkdir /home/samba/home
 +sudo mkdir /home/samba/profiles
 +sudo mkdir /home/samba/partage
 +sudo chmod 1777 /home/samba/profiles
 +</code>
 +
 +===== 11)joindre un poste windows 7 au domaine Samba 4 =====
 +
 +Dans notre cas, le poste Windows 7 va servir à configurer les profiles itinérants grâce à l'outil RSAT qui intègre l'Active Directory. 
 +l'outil RSAT se trouve à l'adresse : http://www.microsoft.com/en-us/download/details.aspx?id=7887
 +
 +==== a)configuration réseaux ====
 +
 +on configure l'adresse IP de la machine windows 7 pour qu'elle soit dans le meme réseau que le serveur : 
 +<code bash>address IP : 10.0.2.10
 +netmask : 255.255.255.0
 +gateway : 10.0.2.1
 +DNS : 10.0.2.15</code>
 +
 +on teste la connexion entre les deux machines : 
 +
 +-à partir du poste windows :
 +<code bash>C:\Users\administrator>ping 10.0.2.15
 +Ping 10.0.2.15 with 32 bytes of data:
 +Reply from 10.0.2.15: bytes=32 time<1ms TTL=64</code>
 +
 +-à partir du poste linux :
 +<code bash>$ ping 10.0.2.10
 +PING 10.0.2.10 (10.0.2.10) 56(84) bytes of data.
 +64 bytes from 10.0.2.10: icmp_req=1 ttl=64 time=0.040 ms</code>
 +
 +on peut maintenant ajouter la machine au domaine "KRB" : aller dans les propriétés de la machine puis dans "change settings" modifier le nom de domaine et mettre "AD". un mot de passe pour l'administrateur est demandé pour accéder au domaine AD. 
 +
 +La machine va redémarrer. 
 +
 +==== b)configuration ntp ====
 +
 +notre machine windows 7 étant dans le même domaine que notre serveur samba, on peut y configurer le NTP pour qu'elle se synchronise avec Samba4. Pour se faire il faut executer en tant qu'administrateur (cmd>clic droit> executer en tant qu'administrateur) les commandes suivantes : 
 +<code bash>C:\Windows\system32>w32tm /config /syncfromflags:domhier
 +The command completed successfully.
 +C:\Windows\system32>w32tm /config /update
 +The command completed successfully.
 +C:\Windows\system32>w32tm /resync /nowait
 +Sanding resync command to local computer
 +The command completed successfully.</code>
 +
 +==== c)installation de l'outil RSAT ====
 +
 +l'outil RSAT (Remote Server Administrative Tools) installe les outils d'administration serveur windows.
 +
 +on télécharge l'outil à l'adresse : http://www.microsoft.com/en-us/download/details.aspx?id=7887.
 +
 +après l'installation, il faut suivre la doc RSAT et installer les outils dont on a besoins : Role administration Tools, Server Manager, Group Policy Management Tools. 
 +
 +==== d)configuration des profils itinérants ====
 +
 +on se connecte sous le compte "administrator" et on lance l'active directory via la commande dsa.msc. 
 +
 +on configure les profiles itinerants : 
 +dans le dossier "Users" sélectionner "tutu". dans l'onglet "Profile" de ses proprieties ajouter le chemin du profile et celui du home :
 +<code bash>User profile
 +Profile path: \\samba.krb\profiles\%username%</code>
 +<code bash>Home folder
 +Connect: H: to \\samba.krb\home\%username%</code>
 +
 +Après l'ajout du chemin du home on peut remarquer que le dossier "tutu" apparait sur le serveur :
 +<code bash>$ cd /home/samba/home/
 +/home/samba/home$ ll
 +total 16
 +drwxr-xr-x  3 root    root  4096 mai   15 11:41 ./
 +drwxr-xr-x  5 root    root  4096 mai   14 16:22 ../
 +drwxrwxr-x+ 2 3000000 users 4096 mai   15 11:41 tutu/
 +</code>
 +
 +on ajoute un groupe dans le dossier "Users" que l'on nomme "user_unix". dans ses proprieties on rajoute le membre "tutu" dans l'onglet "Members" et on active les attributs unix dans l'onglet "UNIX attributes" en sélectionnant le NIS domain "ad".
 +
 +on active les attributs Unix dans l'onglet "UNIX attributes" en sélectionnant le NIS domain "ad" et en ajoutant un "primary group" user_unix. 
 +
 +==== e)configuration des droits des dossiers de partage ====
 +
 +partage du dossier "/home/samba/home" indiqué dans le fichier "smb.conf" :
 +lancer l'outil "Computer Management" :
 +on change de machine à manager : clic droit sur "Computer Management (Local)">"Connect to another computer", on saisie 10.0.2.15.
 +
 +dans "System Tools/Shared Folders/Shares" sélectionner le dossier "home" et modifier les permissions de ce dossier dans ses proprieties de la manière suivante :
 +
 +dans l'onglet "Share Permissions" ajouter les groupes : 
 +<code bash>Authenticated Users
 +Domain Admins 
 +SYSTEM</code>
 +on accorde à ses groupes un contrôle total : Full Control, et supprimer le groupe "everyone".
 +
 +dans "System Tools/Shared Folders/Shares" sélectionner le dossier "profiles" et modifier les permissions de ce dossier dans ses proprieties de la manière suivante :
 +dans l'onglet "Security" on ajoute les groupes : 
 +<code bash>Authenticated Users
 +Domain Admins 
 +SYSTEM
 +Administrators</code>
 +ayant les droits suivants:
 +<code bash>Domain Users :  Traverse folder/execute file, List folder/read data, Create folder/append data
 +Administrator :  Full Control</code>
 +
 +pour "Authenticated Users" modifier le champ d'application des droits dans "advanced" : this folder only.
 +
 +on supprime les groupes :
 +<code bash>Everyone
 +CREATOR GROUP
 +Account Unknown</code>
 +
 +dans "System Tools/Shared Folders/Shares" sélectionner le dossier "partage" et accroder tous les droits à "Authenticated Users".
 +==== f)tests sous windows ====
 +
 +nous allons nous connecter en tant que "tutu" sous windows 7.
 +
 +après authentification, le dossier "tutu" a été créé dans le repertoire "C:\Users" et le disque \\samba.krb\home a été monté.
 +
 +si le dossier créé est temporaire alors le profil itinerant ne se synchronise pas.
 +pour que le profil itinerant se synchronise correctement faire :
 +sous "cmd" saisir "regedit" puis supprimer la clé de l'utilisateur en mode temporaire dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\.
 +redémarrer le poste et se reconnecter.
 +
 +on va créer un autre utilisateur titi via dsa.msc : clic droit sur le dossier "Users" et "New User". on effectue les même modifications au profil que celles faites sur "tutu".
 +
 +on va verifier les droits d'accès des dossiers partagés :
 +l'utilisateur tutu n'a pas accès aux dossiers "home" et "profiles" de "titi". il peut ajouter un dossier ou un fichier dans le dossier "partage"
 +
 +on va créer un dossier "bibli" dans le dossier "partage" sous windows. seul les utilisateurs appartenant au groupe "bibli" pourront avoir accès à ce dossier.
 +
 +on lance dsa.msc et on crée le groupe bibli dans le dossier "Users". on active les attributs unix et on ajoute l'utilisateur titi comme membre du groupe.
 +
 +on modifie les droits d'accès à ce dossier : seul le groupe bibli a tous les droits, il faut donc supprimer l'héritage des droits du dossier "partage".
 +
 +titi a bien accès au dossier car il appartient au groupe contrairement à tutu qui n'a aucun droits sur le dossier.
 +==== g)test synchronisation ====
 +
 +Ce test permet de comprendre comment se passe la synchronisation du profil sous Windows. 
 +
 +nous allons ajouter un fichier iso de 676Mo sous le profile titi et verifier la synchronisation.
 +
 +à partir de samba on effectue la commande "ifconfig" :
 +<code bash>RX bytes:13343078 (13.3 MB)  TX bytes:6666973 (6.6 MB)</code>
 +
 +on ajoute le fichier iso et on se déconnecte pour mettre à jour le profile.
 +
 +sur samba on effectue à nouveau la commande "ifconfig" :
 +<code bash>RX bytes:735903644 (735.9 MB)  TX bytes:9156483 (9.1 MB)</code>
 +
 +on remarque que le fichier iso a bien été ajouté  car on passé de 13MB à 735MB.  
 +
 +on se connecte sous titi et on refait un ifconfig à partir de samba :
 +<code bash>RX bytes:736138088 (736.1 MB)  TX bytes:9408612 (9.4 MB)</code>
 +
 +Contrairement à la version 3 de Samba, à la fermeture de la session  seuls les éléments modifiés sont sauvegardés sur le serveur.  Lors de la connexion, les éléments modifiés du profil de l’utilisateur sont chargés.
 +
 +===== 12)SSSD sur le serveur =====
 +
 +J'ai décidé d'utiliser l'outil SSSD, grâce au cache, pour l'authentification des utilisateurs car il est facile et rapide à configurer. Il peut récupérer les données de POSIX (UID / GID, répertoire personnel, Shell, etc.) de l'Active Directory si le domaine  a été approvisionné avec l'option – rfc2307, ce qui permet une gestion centralisée des données POSIX dans AD avec les outils communs et les mêmes ID sur chaque machine. De plus, il n'a pas besoin que la machine soit jointe au domaine. Seules les connexions LDAP et Kerberos sont utiles.
 +
 +SSSD est installé sur le serveur, mais également sur les postes clients Linux pour pouvoir faire du NFSv4.
 +
 +on va installer sssd et sssd-tools pour permettre aux clients de s'authentifier :
 +<code bash>sudo apt-get install sssd
 +sudo apt-get install sssd-tools</code>
 +
 +on créer le fichier /etc/sssd/sssd.conf : 
 +<code bash>[sssd]
 +        services = nss, pam
 +        config_file_version = 2
 +        domains = default
 + 
 +[nss]
 + 
 +[pam]
 + 
 +[domain/default]
 +        id_provider = ldap
 +        ldap_schema = rfc2307bis
 +        ldap_referrals = false
 +        ldap_uri = ldap://samba.krb
 +        ldap_search_base = dc=krb
 +        ldap_force_upper_case_realm = true
 + 
 +        access_provider = simple
 +        auth_provider = krb5
 +        chpass_provider = krb5
 +        ldap_sasl_mech = GSSAPI
 +        ldap_sasl_authid = samba$@KRB
 +        krb5_realm = KRB
 +        krb5_server = samba.krb
 +        krb5_kpasswd = samba.krb
 +        ldap_krb5_keytab = /etc/krb5.sssd.keytab
 + 
 +        ldap_user_object_class = user
 +        ldap_user_name = sAMAccountName
 +        ldap_user_home_directory = unixHomeDirectory
 +        ldap_user_principal = userPrincipalName
 +        ldap_user_shell = loginShell
 +        
 +        ldap_group_object_class = group
 +</code>
 +
 +attribuer les droits suivants au fichier /etc/sssd/sssd.conf :
 +<code bash>sudo chmod 0600 /etc/sssd/sssd.conf</code>
 +
 +ensuite on configure le fichier /etc/nsswitch.conf : 
 +<code bash>passwd:     files sss
 +group:      files sss
 +</code>
 +
 +on redemarre le service sssd :
 +<code bash>sudo /etc/init.d/sssd restart</code>
 +
 +on peut mettre à jour le cache :
 +<code bash>sudo sss_cache -UG</code>
 +ou
 +<code bash>sudo sss_cache -d KRB</code>
 +
 +on génère la keytab :
 +<code bash>sudo samba-tool domain exportkeytab /etc/krb5.sssd.keytab --principal=samba$</code>
 +
 +on vérifie le contenu de la keytab : 
 +<code bash>sudo ktutil -k /etc/krb5.sssd.keytab list
 +[sudo] password for jessica:
 +FILE:/etc/krb5.sssd.keytab:
 + 
 +Vno  Type              Principal         Aliases
 +  1  des-cbc-crc       samba$@KRB
 +  1  des-cbc-md5       samba$@KRB
 +  1  arcfour-hmac-md5  samba$@KRB
 +</code>
 +
 +on initialise la keytab : 
 +<code bash>sudo kinit -k -t /etc/krb5.sssd.keytab samba\$@KRB</code>
 +
 +on vérifie que le kinit a été pris en compte :
 +<code bash>sudo klist
 +Credentials cache: FILE:/tmp/krb5cc_0
 +        Principal: samba$@KRB
 + 
 +  Issued                Expires               Principal
 +May  7 13:49:47 2014  May  7 23:49:47 2014  krbtgt/KRB@KRB
 +May  7 13:51:22 2014  May  7 23:49:47 2014  ldap/samba.krb@KRB</code>
 +
 +on effectue une recherche ldap pour  verifier le contenu LDAP :
 +<code bash>sudo /usr/bin/ldapsearch -H ldap://samba.krb -Y GSSAPI -N -b DC=krb
 +SASL/GSSAPI authentication started
 +SASL username: samba$@KRB
 +SASL SSF: 56
 +SASL data security layer installed.
 +# extended LDIF
 +#
 +# LDAPv3
 +# base <DC=krb> with scope subtree
 +# filter: (objectclass=*)
 +# requesting: ALL
 +#
 +...
 +# search reference
 +ref: ldap://krb/CN=Configuration,DC=krb
 + 
 +# search reference
 +ref: ldap://krb/DC=DomainDnsZones,DC=krb
 + 
 +# search reference
 +ref: ldap://krb/DC=ForestDnsZones,DC=krb
 + 
 +# search result
 +search: 4
 +result: 0 Success
 + 
 +# numResponses: 276
 +# numEntries: 272
 +# numReferences: 3</code>
 +
 +tester la configuration nsswitch.conf : 
 +<code bash>sudo getent passwd tutu
 +tutu:*:10000:1000:tutu:/home/tutu:/bin/sh</code>
 +
 +
 +===== 13)poste client linux =====
 +
 +on va installer un poste client sous Ubuntu 12.04 pour tester la connexion des utilisateurs AD et l'accès aux dossiers de partage.
 +
 +on configure le proxy comme sur le serveur samba et on installe openssh-server pour pouvoir récupérer les keytabs.
 +
 +sur ce poste nous allons installer heimdal-clients, sssd et sssd-tools. 
 +
 +la configuration de sssd et sssd-tools est la même que celle du serveur samba dans la pratie précedente.
 +
 +on modifie la configuration réseau de la machine cliente :
 +<code bash>sudo nano /etc/network/interfaces
 +iface eth0 inet static
 +address 10.0.2.16
 +netmask 255.255.255.0
 +gateway 10.0.2.1
 +dns-nameservers 10.0.2.15
 +dns-search krb</code>
 +
 +on redémarre la machine pour prendre en compte les changements effectués.
 +
 +grâce à openssh on va copier la keytab krb5.sssd.keytab de samba.
 +sur le serveur samba on envoie cette clé au client :
 +<code bash>sudo scp /etc/krb5.sssd.keytab jessica@10.0.2.16:/tmp</code>
 +
 +sur le client on copie la clé dans le dossier "etc" :
 +<code bash>sudo cp /tmp/krb5.keytab /etc</code>
 +
 +on met à jour le cache : 
 +<code bash>sudo sss_cache -d KRB</code>
 +
 +on teste ldap :
 +<code bash>sudo getent passwd tutu
 +tutu:*:10000:10000:tutu:/home/tutu:/bin/sh
 +sudo getent passwd titi
 +titi:*:10001:10000:titi:/home/titi:/bin/sh</code>
 +
 +===== 14)NFSv4=====
 +
 +on va configurer notre serveur samba 4 pour qu'il intègre nfs4.
 +==== a)sur le serveur de Samba4 ====
 +
 +on va créer un utilisateur nfs-user pour le service nfs :
 +<code bash>sudo samba-tool user add nfs-user
 +sudo samba-tool user setexpiry nfs-user --noexpiry</code>
 +
 +créer le service nfs et générer sa keytab :
 +<code bash>sudo samba-tool spn add nfs/samba.krb nfs-user
 +sudo samba-tool domain exportkeytab /etc/krb5.keytab --principal=nfs/samba.krb
 +sudo samba-tool domain exportkeytab /etc/krb5.keytab --principal=nfs/SAMBA$</code>
 +
 +on copie cette keytab sur le client :
 +<code bash>scp /etc/krb5.keytab 10.0.2.16:/etc/</code>
 +
 +Pour que le service NFSv4 fonctionne sur le serveur, l'outil nfs-kernel-server doit être installé et configuré comme suit car le montage NFSv4 se fait par authentification Kerberos 5.
 +
 +modifier le fichier /etc/default/nfs-kernel-server : 
 +<code bash>NEED_SVCGSSD = yes</code>
 +
 +faire les exports des homes dans le fichier /etc/exports avec une protection Kerberos : 
 +<code bash># export du répertoire /home/samba/home sécurisé kerberos 5
 +# avec droits écriture, compatible pour toutes versions, non synchronisé, 
 +# pas de vérification d'appartenance et UID / GID du compte anonyme 65534
 +/home/samba/home gss/krb5(rw,insecure,fsid=0,async,no_subtree_check,anonuid=65534,anongid=65534)</code>
 +
 +pour verifier que les exports ont été pris en compte : 
 +<code bash>sudo exportfs -v</code>
 +
 +modifier le fichier /etc/idmapd.conf : 
 +<code bash>Domain = krb</code>
 +
 +redémarrer les services: 
 +<code bash>sudo service nfs-kernel-server restart
 +sudo idmapd restart</code>
 +==== b)sur le client Linux ====
 +
 +Pour que le service NFSv4 fonctionne sur le poste client Linux, l'outil nfs-common doit être installé.
 +
 +Sur le poste client Linux, j'ai installé « samba4-clients » pour pouvoir utiliser la commande « net ads » qui permet d'ajouter la machine cliente au domaine et de créer automatiquement  une keytab pour la machine.
 +
 +La configuration de samba4-clients (/etc/samba/smb.conf) est la suivante :
 +<code bash># nom de domaine Windows 
 +workgroup = AD
 +#nom de domaine Kerberos et DNS
 +realm = KRB
 +# sécurité par Active Directory Security
 +security = ADS
 +</code>
 +
 +modifier le fichier /etc/hosts pour permettre l'ajout de la machine au domaine :
 +<code bash>127.0.1.1  nfs4-client.krb  nfs4-client
 +10.0.2.15  samba.krb  samba</code>
 +
 +on joint la machine au domaine :
 +<code bash>sudo net ads join -U administrator</code>
 +
 +on rajoute au fichier smb.conf :
 +<code bash># méthode Kerberos par système de keytab
 +kerberos method = system keytab
 +</code>
 +
 +on crée la keytab de la machine cliente :
 +<code bash>sudo net ads keytab create -U administrator</code>
 +
 +cela crée le fichier /tmp/krb5cc_machine_KRB :
 +<code bash>sudo klist -c /tmp/krb5cc_machine_KRB
 +Credentials cache: FILE:/tmp/krb5cc_machine_KRB
 +        Principal: NFS4-CLIENT$@KRB
 +
 +  Issued                Expires               Principal
 +May 19 15:59:34 2014  May 20 01:59:34 2014  krbtgt/KRB@KRB
 +May 19 15:59:34 2014  May 20 01:59:34 2014  nfs/samba.krb@
 +May 19 15:59:34 2014  May 20 01:59:34 2014  nfs/samba.krb@KRB</code>
 +
 +monter les homes : 
 +<code bash>sudo mount -t nfs4 -o sec=krb5 10.0.2.15:/ /home/</code>
 +
 +Pour que les utilisateurs aient leur répertoire personnel monté automatiquement, j'ai installé l'outil « autofs ». Autofs contôle les opérations des démons d'automount qui montent automatiquement des systèmes de fichiers quand ils sont employés et les démontent après une période d'inactivité.
 +
 +on modifie le fichier /etc/auto.master : 
 +<code bash>/home /etc/auto.home</code>
 +
 +on créer le fichier /etc/auto.home et on ajoute :
 +<code bash>* -fstype=nfs4,rw,user,sec=krb5 10.0.2.15:/&</code>
 +
 +on modifie le fichier /etc/default/autofs :
 +<code bash>LDAP_URI="ldap://samba.krb"
 +SEARCH_BASE="c=krb"</code>
 +
 +sur le serveur samba on créer le dossier home "tutu" et on y crée le fichier tutu.txt.
 +on ajoute dans ce fichier le contenu : tututu.
 +
 +sur la machine cliente, on se connecte sous tutu pour verifier que ca marche :
 +<code bash>$ su tutu
 +Mot de passe :
 +$ bash
 +tutu@nfs4-client:~$ nano /home/tutu/tutu.txt
 +tututu
 +</code>
 +
 +Lors du montage aucun mot de passe n'est demandé car le serveur fait confiance au ticket généré par SSSD sur le client NFSv4. 
 +
 +Pour vérifier ce raisonnement j'ai démonté le montage du répertoire personnel et j’ai détruis le ticket de la machine "krb5cc_machine_KRB". Le montage n'est plus possible.
 +
 +Ainsi, il y a deux niveaux d'authentification : le premier concerne l'authentification de la machine et le deuxième l'authentification de l'utilisateur.
 +
 +===== 15)Apache et LDAP =====
 +
 +L’Institut Fourier utilise le service Web avec l’annuaire LDAP existant. Pour tester le service Web Apache avec LDAP, on configure Apache et on le teste sur le navigateur.
 +
 +installer Apache2 et mettre en place les modules d'authentificattion LDAP sur le client Linux : 
 +<code bash>sudo a2enmod ldap auth_basic authnz_ldap authz_user</code>
 +
 +on créer le dossier /var/www/ldap.
 +
 +on configure apache : 
 +<code bash>sudo nano /etc/apache2/sites-enabled/000-default</code>
 +
 +on modifie ce fichier comme suit : 
 +<code bash><Directory /var/www/ldap>
 +        AuthType basic
 +        AuthName "test_apache"
 +        AuthBasicProvider ldap
 +        AuthLDAPBindDN cn=administrator,cn=Users,dc=krb
 +        AuthLDAPBindPassword "P@ssword"
 +        AuthLDAPURL "ldap://samba.krb:389/cn=Users,dc=krb?sAMAccountName?sub?(objectClass=*)"
 +        require valid-user
 +<Directory></code>
 +
 +redemarrer apache : 
 +<code bash>sudo /etc/init.d/apache2 restart</code>
 +
 +on teste via le navigateur : 
 +<code bash>http://10.0.2.14/ldap</code>
 +
 +Lors du test un login et un mot de passe sont demandés pour pouvoir accéder au dossier ldap sur Apache et ça fonctionne.
 +
 + 
 +===== 16)Scripts =====
 +
 +On écrit des scripts pour faciliter la création des utilisateurs et des groupes et ainsi activer les attributs Linux. En effet, les attributs Unix ne sont pas activés lorsqu’un utilisateur ou groupe est créé par l’outil « samba-tool ». L’outil samba-tool active les attributs Windows par défaut. Le problème c’est que si ces attributs ne sont pas activés l’authentification des utilisateurs sur un poste linux ne fonctionne pas.
 +
 +l'outil "wbinfo" permet de récupérer des éléments de la base LDAP.
 +
 +==== a)Script lancement samba automatique ====
 +
 +on crée le fichier "samba4" que l'on place dans le repertoire "/etc/init.d/" pour qu'il se lance automatiquement.
 +
 +on ajoute le contenu suivant à ce fichier :
 +<code bash> #! /bin/sh
 +### BEGIN INIT INFO
 +# Provides: samba
 +# Required-Start: $network $local_fs $remote_fs
 +# Required-Stop: $network $local_fs $remote_fs
 +# Default-Start: 2 3 4 5
 +# Default-Stop: 0 1 6
 +# Short-Description: start Samba daemons
 +### END INIT INFO
 +#
 +# Start/stops the Samba daemon (samba).
 +# Adapted from the Samba 3 packages.
 +#
 +
 +SAMBAPID=/var/run/samba/samba.pid
 +
 +# clear conflicting settings from the environment
 +unset TMPDIR
 +# See if the daemon and the config file are there
 +test -x /usr/local/samba/sbin -a -r /usr/local/samba/etc/ || exit 0
 +
 +. /lib/lsb/init-functions
 +
 +case "$1" in
 +start)
 +log_daemon_msg "Starting Samba 4 daemon" "samba"
 +if ! start-stop-daemon --start --quiet --oknodo --exec /usr/local/samba/sbin/samba -- -D; then
 +log_end_msg 1
 +exit 1
 +fi
 +
 +log_end_msg 0
 +;;
 +stop)
 +log_daemon_msg "Stopping Samba 4 daemon" "samba"
 +
 +start-stop-daemon --stop --quiet --name samba $SAMBAPID
 +# Wait a little and remove stale PID file
 +sleep 1
 +if [ -f $SAMBAPID ] && ! ps h `cat $SAMBAPID` > /dev/null
 +then
 +# Stale PID file (samba was succesfully stopped),
 +# remove it (should be removed by samba itself IMHO.)
 +rm -f $SAMBAPID
 +fi
 +
 +log_end_msg 0
 +;;
 +restart|force-reload)
 +$0 stop
 +sleep 1
 +$0 start
 +;;
 +*)
 +echo "Usage: /etc/init.d/samba {start|stop|restart|force-reload}"
 +exit 1
 +;;
 +esac
 +
 +exit 0 
 +</code>
 +
 +on modifie les droits du fichier :
 +<code bash>sudo chmod 755 /etc/init.d/samba4</code>
 +
 +on met à jour les autostarts :
 +<code bash>sudo update-rc.d samba4 defaults</code>
 +
 +==== b)Script : ajouter un groupe ====
 +
 +on regarde les attributs unix dans la base LDAP :
 +<code bash>$ ldapsearch -H ldap://samba.krb -Y GSSAPI -N -b DC=krb "(&(objectClass=group)(sAMAccountName=*))"</code>
 +
 +
 +on crée le fichier “samba4group” executable :
 +<code bash>sudo nano /usr/local/samba/bin/samba4group</code>
 +
 +on rend le fichier exécutable: 
 +<code bash>sudo chmod +x samba4group</code>
 +
 +son contenu :
 +<code bash>#!/bin/bash
 +#creates a posix group suitable for containing Linux users
 +#usage samba4group <name>
 +echo "Creating s4 posix group "$1
 +samba-tool group add $1
 +#get the gid
 +strgid=$(wbinfo --group-info=$1)
 +gid=$(echo $strgid | cut -d ":" -f 3)
 +#add the posix attributes to the group
 +echo "dn: cn=$1,cn=Users,dc=krb
 +changetype: modify
 +add:mssFU30NisDomain
 +mssFU30NisDomain: ad
 +-
 +add: gidnumber
 +gidnumber: $gid
 +-
 +add: mssFU30Name
 +mssFU30Name: $1" > /tmp/$1
 +ldbmodify --url=/usr/local/samba/private/sam.ldb -b dc=krb /tmp/$1
 +rm /tmp/$1</code>
 +
 +==== c)Script : ajouter un utilisateur ====
 +
 +Le script crée un utilisateur Windows et Linux avec un groupe primaire Unix associé.
 +
 +on crée le fichier “samba4user” executable :
 +<code bash>sudo nano /usr/local/samba/bin/samba4user</code>
 +
 +on rend le fichier exécutable: 
 +<code bash>sudo chmod +x samba4user</code>
 +
 +son contenu :
 +<code bash> #!/bin/bash
 +#creates a s4 user, posix-ifies him, places him in a posix group
 +#sets his windows primaryGroup=posixGroup and set's some common
 +#defaults for logging onto windows
 +#usage samba4user <user> <group>
 +echo "Creating s4 posix user "$1
 +echo "Please enter pwd for "$1
 +samba-tool user add $1
 +sleep 2
 +#get the uid
 +struid=$(wbinfo -i $1)
 +uid=$(echo $struid | cut -d ":" -f 3)
 +#get the gid
 +strgid=$(wbinfo --group-info=$2)
 +gid=$(echo $strgid | cut -d ":" -f 3)
 +#get the group from the sid
 +strsid=$(wbinfo --gid-to-sid=$gid)
 +primarygid=$(echo $strsid | cut -d "-" -f 8)
 +strwg=$(echo $struid | cut -d "\\" -f 1)
 +#add the posix attributes to the user
 +echo "dn: CN=$1,CN=Users,DC=krb
 +changetype: modify
 +add: msSFU30NisDomain
 +msSFU30NisDomain: ad
 +-
 +add: uidnumber
 +uidnumber: $uid
 +-
 +add: gidnumber
 +gidnumber: $gid
 +-
 +add:unixhomedirectory
 +unixhomedirectory: /home/$1
 +-
 +add:msSFU30Name
 +msSFU30Name: $1
 +-
 +add:uid
 +uid: $1
 +-
 +add: loginshell
 +loginshell: /bin/sh" > /tmp/$1
 +
 +ldbmodify --url=/usr/local/samba/private/sam.ldb -b dc=krb /tmp/$1
 +samba-tool group addmembers $2 $1
 +
 +#set the user to the posix group
 +echo "dn: CN=$1,CN=Users,DC=krb
 +changetype: modify
 +replace: primarygroupid
 +primarygroupid: $primarygid" > /tmp/$1
 +echo "sleeping. . ."
 +sleep 5
 +
 +#add the posix attributes to the group
 +echo "dn: CN=$2,CN=Users,DC=krb
 +changetype: modify
 +add: msSFU30PosixMember
 +msSFU30PosixMember: CN=$1,CN=Users,DC=krb
 +-
 +add:memberuid
 +memberuid: $1" > /tmp/$1
 +
 +ldbmodify --url=/usr/local/samba/private/sam.ldb -b dc=krb /tmp/$1
 +mkdir /home/samba/home/$1
 +chown -R $1:$2 /home/samba/home/$1
 +rm /tmp/$1
 +hostname=$(hostname -s)
 +echo "dn: CN=$1,CN=Users,DC=krb
 +changetype: modify
 +add: profilePath
 +profilePath: \\\\$hostname\\profiles\\$1
 +-
 +add: homeDrive
 +homeDrive: Z:
 +-
 +add: homeDirectory
 +homeDirectory: \\\\$hostname\\home\\$1" > /tmp/$1
 +echo "sleeping. . ."
 +sleep 5
 +ldbmodify --url=/usr/local/samba/private/sam.ldb -b dc=krb /tmp/$1
 +echo "New user: "  $1 "POSIX-ified as follows:"
 +echo "uid " $uid
 +echo "gid " $gid
 +echo "primaryGroupID " $primarygid " :$2"
 +echo "getent passwd $1"
 +echo $(getent passwd $1)
 +echo "sid " $(wbinfo --gid-to-sid=$gid)
 +db=/usr/local/samba/private/sam.ldb
 +ldbsearch --url=$db cn=$1 | grep \\\\$hostname
 +ldbsearch --url=$db cn=$1 | grep homeDrive
 +rm /tmp/$1
 +</code>
 +
 +==== d)Script : ajouter un groupe à un utilisateur ====
 +
 +Le script permet d’ajouter un groupe à l’utilisateur.
 +
 +on crée le fichier “samba4usergroup” executable :
 +<code bash>sudo nano /usr/local/samba/bin/samba4usergroup</code>
 +
 +on rend le fichier exécutable: 
 +<code bash>sudo chmod +x samba4usergroup</code>
 +
 +<code bash>#!/bin/bash
 +#add a posix group to a s4 user
 +#usage samba4usergroup <user> <group>
 +
 +echo "Adding s4 posix group "$2 "to s4 posix user "$1
 +#get the sid
 +sid=$(wbinfo --name-to-sid="$1")
 +usersid=$(echo "$sid" | cut -d " " -f1)
 +echo "found $1 sid= $usersid" 
 +
 +ldbmodify --url=/usr/local/samba/private/sam.ldb -b dc=krb /tmp/$1
 +samba-tool group addmembers $2 $1
 + 
 +#add the posix attributes to the group
 +echo "dn: CN=$2,CN=Users,DC=krb
 +changetype: modify
 +add: msSFU30PosixMember
 +msSFU30PosixMember: CN=$1,CN=Users,DC=krb
 +-
 +add:memberuid
 +memberuid: $1" > /tmp/$1
 +ldbmodify --url=/usr/local/samba/private/sam.ldb -b dc=krb /tmp/$1
 +rm /tmp/$1
 +</code>
 +
 +==== e)Script : supprimer un utilisateur ====
 +
 +Pour pouvoir supprimer un utilisateur appartenant à des groupes, il faut récupérer les noms des groupes auquel il appartient.
 +
 +on crée le fichier “samba4usergroup” executable :
 +<code bash>sudo nano /usr/local/samba/bin/samba4userdelete</code>
 +
 +on rend le fichier exécutable: 
 +<code bash>sudo chmod +x samba4userdelete</code>
 +
 +Le dernier script permet de supprimer un utilisateur :
 +<code bash>#!/bin/sh
 +#deletes a user and his home and profile folder
 +#deletes a user who belongs to groups
 +#tidies up idmap.ldb
 +#usage samba4userdelete <user>
 +
 +echo "Deleting user $1"
 +#get the sid
 +sid=$(wbinfo --name-to-sid="$1")
 +usersid=$(echo "$sid" | cut -d " " -f1)
 +echo "found $1 sid= $usersid"
 +#get the groups of user
 +groups=$(wbinfo --user-groups="$1")
 +#count the number of groups
 +nb=$(echo "$groups"|wc -l)
 +echo "nb=$nb"
 +#compteur=number - 1
 +cpt=$(($nb - 1))
 +echo "cpt=$cpt"
 +
 +#debut boucle
 +for i in $(seq 1 "$cpt")
 + do
 +    gid=$(echo "$groups" | cut -d "
 +" -f $(($i+1)))
 +    echo "found gid= $gid"
 +    name=$(wbinfo --gid-info="$gid" | cut -d ":" -f 1 | cut -d"\\" -f 2)
 +    echo "name=$name"
 +ldbmodify --url=/usr/local/samba/private/sam.ldb -b dc=krb /tmp/$1
 +echo "dn: CN=$name,CN=Users,DC=krb
 +changetype: modify
 +delete: msSFU30PosixMember
 +msSFU30PosixMember: CN=$1,CN=Users,DC=krb" > /tmp/$1
 +ldbmodify --url=/usr/local/samba/private/sam.ldb -b dc=krb /tmp/$1
 +rm /tmp/$1
 +
 +ldbmodify --url=/usr/local/samba/private/sam.ldb -b dc=krb /tmp/$1
 +echo "dn: CN=$name,CN=Users,DC=krb
 +changetype: modify
 +delete: memberUid
 +memberUid: $1" > /tmp/$1
 +ldbmodify --url=/usr/local/samba/private/sam.ldb -b dc=krb /tmp/$1
 +rm /tmp/$1
 +done
 +
 +ldbdel --url=/usr/local/samba/private/idmap.ldb CN=$usersid
 +samba-tool user delete $1
 +rm -r /home/samba/home/$1
 +rm -r /home/samba/profiles/$1
 +echo "$1 deleted"</code>
samba4.txt · Dernière modification : 2020/09/10 14:34 de 127.0.0.1