Intergration d'une machine Ubuntu dans un domaine Windows
Par admin le mercredi, décembre 3 2008, 21:34 - Ubuntu - Lien permanent
A l'occasion d'un projet que j'ai eu a effectuer, j'ai du intergrer une machine sous linux dans un domaine avec environnement Active Directory.
J'ai creer le script ci-dessous pour l'intergration dans un domaine Active Directory.
il se sert de zenity qui permet d'afficher des boîtes de dialogue depuis des scripts shell.
Ce script est un essai il n'est pas terminer ! il contient des bugs surtout au niveau de l'affichage des questions posé par les utilitaires utilisé dans le script.
Dependances:
- Zenity
Bugs
- Insertion des mot de passe de l'administrateur du domaine dans kinit
#!/bin/bash faire_une_pause() { zenity --question --text="Voulez-vous continuer ?" case $? in 0) echo "good";; 1) exit 1;; esac } question () { if zenity --entry --title="renseignement" --text="$1" then echo "" else zenity --entry --title="renseignement" --text="$1" fi } information () { zenity --info --text="$texte" } #echo "USAGE : "$0" ServeurNTP Domaine" ( echo "# Serveur NTP (Network Time Protocol)" echo "10";sleep 5 SERVEUR_NTP=`question "entrer l'ip du serveur de temps"` mv /etc/default/ntpdate /etc/default/ntpdate.bak sed -e "s/^\(NTPSERVERS=\"\).*\(\"\)/\1"$SERVEUR_NTP"\2/" /etc/default/ntpdate.bak > /etc/default/ntpdate echo "# Mise en place d'un nom de domaine pleinement qualifié" echo "20";sleep 5 faire_une_pause domaine=`question "Entrer le domaine (avec le .)"` mv /etc/hosts /etc/hosts.bak sed -e "s/^\(127\.0\.0\.1\s\).*$/\1\t"`hostname`"."$domaine"\t"`hostname`"/" /etc/hosts.bak > /etc/hosts echo "# Installation des programmes nécessaires" echo "30";sleep 5 echo " "$domaine" "$domaine" " > krb5 apt-get -y install krb5-user < krb5 echo "# Intégration de la machine au domaine Active Directory" faire_une_pause echo "# Configuration de l'authentification" mv /etc/krb5.conf /etc/krb5.conf.bak DOMAINE=`echo $domaine | tr '[:lower:]' '[:upper:]'` DOMAINE_court=`echo "$DOMAINE" | awk -F "." '{ $2 = "" ; print $0 }'` NOM_CONTROLEUR=`question "entrer le nom du controleur de domaine"` echo " [logging] default = FILE10000:/var/log/krb5lib.log [libdefaults] ticket_lifetime = 24000 default_realm = "$DOMAINE" default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5 aes256-cts arcfour-hmac-md5 default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5 aes256-cts arcfour-hmac-md5 [realms] "$DOMAINE" = { kdc = "$NOM_CONTROLEUR"."$domaine" admin_server = "$NOM_CONTROLEUR"."$domaine" default_domain = "$DOMAINE" } [domain_realm] ."$domaine" = "$DOMAINE" "$domaine" = "$DOMAINE" " > /etc/krb5.conf echo "# Tests de la configuration" echo "30";sleep 5 faire_une_pause utilisateur=`question "Taper un login present dans le domaine"` motdepasse=`question "Entrer le mot de passe du login"` faire_une_pause texte="voir la fenetre shell pour taper le mot de passe" information kinit "$utilisateur" zenity --info --text="`klist`" faire_une_pause echo "#Installation et configuration de Samba et WinBind" echo "40";sleep 5 faire_une_pause apt-get -y install samba winbind mv /etc/samba/smb.conf /etc/samba/smb.conf.bak echo " [global] security = ads realm = "$DOMAINE" password server = "$NOM_CONTROLEUR"."$domaine" workgroup = "$DOMAINE_court" winbind separator = + idmap uid = 10000-29999 idmap gid = 10000-29999 winbind enum users = yes winbind enum groups = yes winbind use default domain = yes template homedir = /home/%D/%U template shell = /bin/bash client use spnego = yes # empêche le client de devenir maitre explorateur domain master = no local master = no preferred master = no os level = 0 " > /etc/samba/smb.conf sudo mkdir /home/$domaine sudo chmod 777 /home/$domaine /etc/init.d/samba restart /etc/init.d/winbind restart echo "# Intergration de `hostname` dans le domaine" echo "50";sleep 5 faire_une_pause texte="voir la fenetre shell pour taper le mot de passe" information zenity --info --text="`net join -U $utilisateur -S $NOM_CONTROLEUR`" zenity --info --text=`hostname`" fait maintenant parti du domaine Windows 2003 : "$DOMAINE" !" /etc/init.d/winbind restart echo "# Configuration de l'authentification" echo "60";sleep 5 faire_une_pause mv /etc/nsswitch.conf /etc/nsswitch.conf.bak echo " passwd: compat winbind group: compat winbind shadow: compat hosts: files dns wins networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis " > /etc/nsswitch.conf echo "# Configuration de PAM" echo "70";sleep 5 faire_une_pause mv /etc/pam.d/common-account /etc/pam.d/common-account.bak echo " account sufficient pam_winbind.so account sufficient pam_unix.so " > /etc/pam.d/common-account mv /etc/pam.d/common-auth /etc/pam.d/common-auth.bak echo " auth sufficient pam_winbind.so auth sufficient pam_unix.so nullok_secure use_first_pass " > /etc/pam.d/common-auth #mv /etc/pam.d/common-password /etc/pam.d/common-password.bak #echo " #password required pam_unix.so nullok obscure min=4 max=50 md5 #" > /etc/pam.d/common-password mv /etc/pam.d/common-session /etc/pam.d/common-session.bak echo " session required pam_unix.so session required pam_mkhomedir.so umask=0022 skel=/etc/skel " > /etc/pam.d/common-session mv /etc/pam.d/sudo /etc/pam.d/sudo.bak echo " auth sufficient pam_winbind.so auth required pam_unix.so use_first_pass " > /etc/pam.d/sudo echo "# Teste de connexion diverse" echo "80";sleep 5 faire_une_pause sudo /etc/init.d/samba restart sudo /etc/init.d/winbind restart echo "# Listes des utilisateurs :" faire_une_pause texte=`wbinfo -u` information echo "# Listes des groupes :" faire_une_pause texte=`wbinfo -g` information echo "# Tests du module nsswitch..." faire_une_pause sudo getent passwd texte=`getent group` information echo "100";sleep 5 echo "# Redémarrage (à cause de certains services)" faire_une_pause sudo reboot ) |zenity --progress \ --title="Mise à jour des journaux système" \ --text="Analyse des journaux de mail..." \ --percentage=0 if [ "$?" = -1 ] ; then zenity --error \ --text="Mise à jour annulée." fi