Articles Tagués ‘manuel’

1. Gestion des utilisateurs sous Unix/Linux

Unix est multi-utilisateurs. Pour cette raison, tout le monde ne peut pas tout faire, à part l’administrateur système (traditionnellement nommé root), qui à le droit de lire et d’écrire tous les fichiers de tous les répertoires.

Chaque utilisateur est désigné de manière unique par son login (son « nom »). De plus, chaque utilisateur appartient à un ou plusieurs groupes. Par exemple, sous Red Hat Linux, chaque utilisateur est par défaut seul membre de son groupe personnel et membre du groupe users. Ainsi, sur ma machine, j’ai un utilisateur damien qui est membre des groupes damien et users. L’intêret d’avoir chaque utilisateur unique membre d’un groupe dépasse le cadre de cet article.

Un fichier ou un répertoire appartient toujours à un utilisateur et à un groupe. D’autre part, un fichier peut être accessible en lecture, en écriture et en exécution. Les permissions sont distinctes pour l’utilisateur propriétaire du fichier, pour le groupe propriétaire et pour le reste du monde. Ces permissions sont affichées par la commande ls quand on lui passe l’option -l:

-rw-r--r--  1 damien   users  297 Jun 07 10:31 toto

Cette ligne signifie que le fichier toto appartient à l’utilisateur damien et au groupe users, avec les droits -rw-r--r--. Les autres valeurs (1, 297 et la date) ne nous intéressent pas ici.

Décryptage des droits -rw-r–r– : le premier caractère représente le type de fichier: « – » pour un fichier normal, « d » pour un répertoire, « p » pour un tube, « b » ou « c » pour un périphérique, « l » pour un lien symbolique.

Les trois suivants représentent les droits de l’utilisateur propriétaire du fichier.

  • « r » représente le droit de lecture,
  • « w » le droit d’écriture
  • « x » le droit d’exécution

Ici, « rw- » signifie que l’utilisateur damien peut lire et écrire dans le fichier, mais pas l’exécuter.
Les trois caractères suivants représentent les permissions du groupe; ici, tous les membres du groupe users peuvent lire le fichier, mais pas y écrire.
Enfin, les trois derniers caractères ont une signification analogue pour le reste du monde.

Une astruce mnémotechnique : pensez au prénom HUGO et vous retrouverez UGO : User, Group, Other

Une petite nuance pour les répertoires: si un utilisateur a le droit d' »exécution » sur un répertoire, cela signifie qu’il peut y entrer avec la commande cd ou équivalent.

Comment fixer les droits : on a vu que les droits d’accès sont fixés pour UGO et sont en rwx.

  rwx
  ||+-- 1
  |+--- 2
  +---- 4

Ainsi, fixer les droits sur un répertoire ou un fichier peut être synthétiser par en additionnant les valeurs pour chaque UGO.

Par exemple, un groupe « rwx » est représenté par 4+2+1=7. Un groupe « r– » par 4+0+0=4. Un groupe « –x » par 0+0+1=1. Ainsi, les permissions rw-r--r-- de notre fichier toto s’écrivent 644.

Fixer les droits :

chmod 644 toto

2. Setuid sur un script Shell ou un programme

Rappel : une ligne de commande précédée par $ indique un utilisateur lambda. Une ligne de commande précédée par # indique que cette commande est exécutée par l’utilisateur ROOT

Dans l’exemple ci-dessous, on modifie les droits du script monshell.sh par un SETUID=4 (on fixe l’utilisateur d’exécution à ROOT) :

# chown root:root monshell.sh
# chmod 4755 monshell.sh
# exit
$ ./monshell.sh

L’utilisateur exécute ici le script monshell.sh avec les droits ROOT et ce, bien que n’étant pas dans le groupe ROOT !

1. Pourquoi mettre en oeuvre un serveur DHCP ?

DHCP signifie Dynamic Host Configuration Protocol.

Il s’agit d’un protocole qui permet à un ordinateur qui se connecte sur un réseau IP d’obtenir dynamiquement et automatiquement sa configuration IP. Le but principal étant la simplification de l’administration d’un réseau.

Le serveur DHCP fournit des adresses IP au format IPv4 (ex : 192.168.0.1/24) mais peut tout à fait fournir au format IPv6. Tout est question de configuration et de taille de parc informatique.

Comme tout protocole, DHCP est régit par des RFCs qui sont :

– RFC951 : Bootp
– RFC1497 : Options vendor extensions
– RFC1541 : Définition du protocole Dhcp
– RFC1542 : Interaction entre Bootp et Dhcp
– RFC2131 : Complément à la Rfc 1541
– RFC2132 : Complément aux options vendor extensions

2. Elément de l’infrastructure de votre système d’information

Vous l’aurez compris, le serveur DHCP est un élément fondamental de votre infrastructure. Néanmoins, j’émets une réserve sur la suite du document.

En effet, ce tutoriel vous guidera sur l’installation, la configuration et le maintien en conditions opérationnelles d’un serveur DHCP sous Linux.

Or, si dans votre infrastructure vous disposez également de services à publier, comme Exchange par exemple, je vous conseille d’utiliser le serveur DHCP intégré à l’Active Directory. Ce dernier offre plusieurs interfaces entre votre AD, votre serveur de messagerie et vos stations de travail.

3. Mode de fonctionnement

Le protocole DHCP repose sur 8 types de requêtes :

DHCPDISCOVER : permet aux clients de localiser les serveurs DHCP (ils obtiennent l’adresse IP du serveur DHCP qui réponds le plus rapidement)
DHCPOFFER : réponse du serveur qui fournit les premiers paramètres
DHCPREQUEST : requête du client pour prolonger son bail
DHCPDECLINE : le client annonce au serveur que l’adresse IP fournie par le serveur est déjà utilisée
DHCPACK : réponse du serveur au client avec les paramètres IP
DHCPNACK : réponse du serveur pour annoncer au client que le bail est échu ou que le serveur acquite le message DHCPDECLINE : message envoyé par le client au serveur et l’informant que l’adresse IP fournie est déjà utilisée
DHCPRELEASE : le client relache son adresse IP
DHCPINFORM : message du client qui demande les paramètres locaux. Le client a déjà son adresse IP

La première requête émise par le client est un message DHCPDISCOVER. Le serveur répond par un DHCPOFFER, en particulier pour soumettre une adresse IP au client. Le client établit sa configuration, demande éventuellement d’autres paramètres, puis fait un DHCPREQUEST pour valider son adresse IP. Le serveur répond simplement par un DHCPACK avec l’adresse IP pour confirmation de l’attribution. Normalement, c’est suffisant pour qu’un client obtienne une configuration réseau efficace, mais cela peut être plus ou moins long selon que le client accepte ou non l’adresse IP ou demande des infos complémentaires…

4. Installation du serveur DHCP

Très simple à installer, ouvrez un shell en tant que ROOT, puis :

# apt-get install dhcp3-server

Par défaut, votre nouveau serveur DHCP écoutera sur la première interface réseau (c à d eth0). Pour corriger cette configuration :

# dpkg-reconfigure dhcp3-server

ou

Modifiez le fichier de configuration /etc/default/dhcp3-server

5. Configuration du serveur

Le fichier de configuration du serveur dhcp est « /etc/dhcp3/dhcpd.conf »

Je conseille pour commencer de faire une copie de sauvegarde de ce fichier. Ensuite, vous pouvez effacer ou commenter les lignes existantes et ajouter les lignes suivantes :

option domain-name "mondomaine.priv";
option domain-name-servers 192.168.0.10, 194.168.0.11;
option routers 192.168.0.1;
default-lease-time 3600;
max-lease-time 3600;
authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {
     range 192.168.0.200 192.168.0.254;
 }

La première ligne permet de fournir aux clients le nom du domaine.

La ligne suivante donne aux clients le ou les serveurs DNS.

La ligne suivante donne l’adresse de la passerelle par défaut

La ligne suivante donne le délai du bail en secondes. Il est préférable d’augmenter la valeur par défaut pour limiter le trafic sur le réseau.

Le max-lease-time est le temps maximum de votre bail. Si vous configurez un default-lease-time à 10000 secondes et un max-lease-time à 4000 secondes, vos clients auront un bail maximum de 4000 secondes.Les 4 dernières lignes permettent d’indiquer la plage d’adresses gérée par le serveur dhcp :

La ligne «  authoritative  » permet d’indiquer que le serveur DHCP sera responsable de la zone concernée

Une fois la configuration terminée, il faut démarrer ou redémarrer le démon pour prendre en compte les modifications :

# /etc/init.d/dhcp3-server restart

Si le démarrage retourne une erreur, il faut penser à consulter les logs :

# tail -f /var/log/syslog

Le fichier suivant donne la liste des adresses IP délivrées par le serveur.

Pour chaque adresse IP l’on retrouve : son adresse mac, le nom de l’ordinateur, la date de début et de fin du bail :

/var/lib/dhcp3/dhclient.leases 

6. Configuration avancée

  • Configuration des logs : ajouter dans /etc/dhcp3/dhcpd.conf l’instruction : log-facility local7

L’instruction log-facility local7 indique un fichier de log de niveau debug mais toujours dans le fichier /var/log/syslog.

On sépare ensuite les logs DHCP dans un fichier nommé dhcpd.log.

Dans le fichier /etc/syslog.conf :

local7.*     /var/log/dhcpd.log

Onrelance le daemon syslog :

# /etc/init.d/sysklogd restart
  • DNS dynamique
### DNS Dynamique
 ddns-updates on;
 ddns-update-style interim;
 ### Pour autoriser les adresses fixes à s'inscrire dans le DNS
 update-static-leases on;
 ddns-domainname "mondomaine.priv";
  • Plusieurs zones DNS

Vous pouvez ajouter les différentes zones DNS (ex : chezmoi.mondomaine.priv, monvoisin.mondomaine.priv, toto.mondomaine.priv). L’intérêt est de permettre une résolution plus rapide.

Ajouter dans le fichier /etc/dhcp3/dhcpd.conf :

# zone chezmoi.mondomaine.priv pour résolution rapide
 zone monvoisin.mondomaine.priv. {
 primary 100.11.0.10;                                                #serveur DNS primaire de la zone chezmoi.mondomaine.priv
 }
# zone monvoisin.mondomaine.priv pour résolution rapide
 zone monvoisin.mondomaine.priv. {
 primary 101.11.0.10;                                               #serveur DNS primaire de la zone monvoisin.mondomaine.priv
 }
# zone toto.mondomaine.priv pour résolution rapide
 zone monvoisin.mondomaine.priv. {
 primary 102.11.0.10;                                               #serveur DNS primaire de la zone toto.mondomaine.priv
 }
  • Auto-configuration du proxy
### Autodetection du proxy
 option wpad-url code 252 = text;
 option wpad-url "http://monserveurapache/proxy.pac";

### Autodetection du proxy
option local-pac-server code 252 = text;
option local-pac-server "http://proxy/wpad.dat";

7. Comment avoir des IP fixes avec un serveur DHCP

Le protocole DHCP offre la possibilité d’attribuer un adresse IP fixe à un ordinateur configuré en DHCP.

Cas d’utilisation : une station de travail avec un accès particulier, un serveur

Pour cela, il faut ajouter dans le fichier /etc/dhcp3/dhcpd.conf, de nouvelles lignes.

L’exemple suivant permet de fixer une adresse IP en fonction de son adresse MAC :

host MASTATION  {
 hardware ethernet 00:11:22:33:aa:bb;
 fixed-address 192.168.0.110;
 }

Redémarrer le démon pour prendre en compte les modifications :

/etc/init.d/dhcp3-server restart

8. Configuration des postes clients

  • OS Linux :
  • Fichier de configuration : /etc/network/interfaces
  • Contenu :

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp

  • Post-installation :
# /etc/init.d/networking restart
  • OS Windows :

Menu Démarrer >> Panneau de configuration >> Réseau

Cliquez sur « Obtenir une adresse IP dynamiquement

9. Comment vérifier que le client est correctement configuré

Sur un poste client linux, la commande suivante, permet de connaître la configuration IP et également de retrouver l’adresse MAC :

ifconfig

Sur un poste client Windows, la commande est la suivante :

ipconfig /all

La consultation des logs sur le serveur en temps réel (avec le paramètre -f), permet également de vérifier que tout fonctionne correctement :

tail -f /var/log/message

Depuis la version Etch de Debian, le module iscsi_tcp est intégré dans le noyau. Il ne vous reste plus qu’à installer un outil d’administration et à configurer

1. Installation

# apt-get install open-iscsi

configuration du fichier /etc/iscsi/iscsid.conf

discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = <votre identifiant de connexion au SAN>
discovery.sendtargets.auth.password = <le mot de passe>
node.session.auth.authmethod = CHAP
node.session.auth.username = <votre identifiant de connexion au SAN>
node.session.auth.password = <le mot de passe>
node.startup = automatic

2. Configuration d’une connexion

#iscsiadm   --mode node  --targetname "iqn.2007-01.org.debian.foobar:CDs"  -p 192.168.0.1:3260 --op=update --name node.session.auth.authmethod --value=CHAP
#iscsiadm   --mode node  --targetname "iqn.2007-01.org.debian.foobar:CDs"  -p 192.168.0.1:3260 --op=update --name node.session.auth.username --value=$Id
#iscsiadm   --mode node  --targetname "iqn.2007-01.org.debian.foobar:CDs"  -p 192.168.0.1:3260 --op=update --name node.session.auth.password --value=$MDP
#iscsiadm   --mode node  --targetname "iqn.2007-01.org.debian.foobar:CDs"  -p 192.168.0.1:3260 --login

le fichier /etc/iscsi/nodes/iqn.2007-01.org.debian.foobar:CDs/192.168.0.1,3260 est automatiquement créé

3. Administration

3.1 Inventaire des Target iSCSI disponibles

#iscsiadm -m discovery -t st -p 192.168.0.20

192.168.0.1:3260,1 iqn.2007-01.org.debian.foobar:CDs
192.168.0.1:3260,1 iqn.2007-01.org.debian.foobar:USB

3.2 Ouvrir une connexion

#iscsiadm -m node –targetname « iqn.2007-01.org.debian.foobar:CDs » –portal « 192.168.0.1:3260 » –login

un nouveau périphérique iSCSI est alors créé dans /dev/sdx et automatiquement monté sur /dev/disk/by-path/ip-xxxxxxxx

3.3 Monter un disque iSCSI

Modifier le fichier /etc/fstab

#device         mount point     FS      Options Backup  fsck

LABEL=data1     /mnt/data1      ext3    _netdev 0       0

3.4 Déconnexion d’un disque iSCSI

#iscsiadm  -m node  --targetname "iqn.2007-01.org.debian.foobar:CDs" --portal "192.168.0.1:3260" --logout

3.5 Trouver l’initiateur iqn

L’initiateur iSCSI a aussi son propre iqn que vous trouverez dans le fichier /etc/iscsi/initiatorname.iscsi.

Attention : après installation du paquet open-iscsi, ce fichier ne contient que

GenerateName=yes"

C’est au premier démarrage du démon que l’iqn est créé

4. Erreurs fréquentes

ietd: CHAP initiator auth.: No valid user/pass combination for initiator iqn.1993-08.org.debian:01:123456789abcd found
=> Erreur de login/mot de passe

La matrice RACI aide à définir les rôles et les responsabilités au sein d’un projet. Elle vous aide à clarifier les acteurs et à être efficace dans vos actions.

Bien évidemment, la matrice RACI évolue en fonction des acteurs du projet (les départs, les arrivées et des nouvelles prises de fonctions). Quoiqu’il en soit elle vous évitera les batailles et autres interventions surprises qui remettent en cause les décisions.

1. RACI : c’est quoi ?

RACI est ni plus ni moins que l’acronyme de :

  • R : Responsible
  • A : Accountable
  • C : Consulted
  • I : Informed

2. Construction de la matrice RACI

R : le ou les R réalisent l’action. Il y a au moins un R pour chaque action. Le A peut aussi jouer le rôle de R. Le A est responsable de l’organisation du travail du ou des R. Si les R ne remplissent pas leurs objectifs (action et délai), le A est responsable de la situation.

A : le A est celui qui rends des comptes sur l’avancement de l’action. Il y a toujours un et un seul A pour chaque action. « Avoir le A » signifie être totalement responsable d’une action

C : le ou les C sont les participants qui doivent être consultés. Sur consultation du A et des R, ils donnent leur avis sur les sujets où ils sont experts. Les C n’ont pas autorité. C’est le A qui décide de prendre en compte ou non l’avis des C.

I : les I sont les personnes qui doivent être informés. Elles sont classiquement indirectement impactées par le projet, comme les utilisateurs, les responsables de projets périphériques…

3. Exemple de fichier Microsoft Excel

RACI-MariageRJ : ici on prend un exemple volontairement utopique. L’organisation du mariage civil de Roméo et Juliette :). On suppose que les querelles et autres vengeances, meurtres, … ne font pas partie de décor.

L’installation de serveurs et/ou postes de travail tous identiques nécessitent, soit une procédure longue et précise, soit un serveur central d’image Linux.

Nous opterons ensemble pour la seconde proposition.

A partir d’une installation Debian Standard :

1. Serveur CloneZilla

Un serveur CloneZilla permet de démarrer un ou plusieurs serveurs/postes de travail à distance (Wake OnLine WOL), choisir depuis quelle partition démarrer, créer une image système en ligne et restaurer une image en boot PXE.

2. Installation de CloneZilla

2.1 Mise à jour du sources.list

# vi /etc/apt

Ajouter

deb http://drbl.sourceforge.net/drbl-core drbl stable

Acquérir la clé GPG

# wget http://drbl.nchc.org.tw/GPG-KEY-DRBL
# apt (apt-key add GPG-KEY-DRBL

Mettre à jour la base de données des dépôts

# apt-get update

2.2 Interface réseau virtuelle

CloneZilla est configuré pour utiliser 2 interfaces ethernet. Si vous n’en disposez que d’une alors :

# ifconfig eth0:0 <ma nouvelle adresse IP> netmask <mon masque>

2.3 Pré-installation

CloneZilla n’existe pas encore dans les dépôt Debian. Nous allons donc télécharger les paquets et les installer.  Pour ce faire, on utilise le binaire LINKS

# apt-get install links2

Téléchargement :

# links http://sourceforge.net/projects/drbl/files/drbl_stable/

Télécharger le paquet drbl_1.12.15-1drbl_all.deb

2.4 Installation

# dpkg –i drbl_1.9.5-42_i386.deb
# /opt/drbl/sbin/drblsrv –i

– Installer une distribution ? N
– Console série ? N
– Architecture : i386                                                     ( uname -i)
– Mettre à jour le système d’exploitation : Y

Le script se poursuit et met à jour le système d’exploitation de votre serveur depuis le dépôt installé précédemment.

2.5 Configuration de drbl/clonezilla

# /opt/drbl/sbin/drblpush –i

– dns, NIS, prefixe client : <saisir les informations selon votre infrastructure>
– interface ethernet public : eth0:0
– No
– No
– Plage d’adresses IP : <info selon infrastruture réseau>
– ltsp : utile uniquement pour les clients légers

– Fournir clonezilla BOX (1), c’est ce que nous avons besoin pour le déploiement.

– nous allons utiliser /images comme dossier de destinations de celles-ci.

– Aucun mot de passe de démarrage

– On définit un prompt de démarrage ! tempo à choisir (délai avant l’action par défaut), arrière-plan graphique (y)

– On désactive NAT, l’utilisation de PXE ne se fera qu’en LAN…

Et l’on poursuit..

La configuration se fait maintenant.

Afin de faciliter la gestion du parc par filtrage MAC, il est préférable d’ajouter dans /etc/dhcp3/dhcpd.conf les postes clients un par un afin de les nommer et donc de réserver les IPs, voici la syntaxe :

Host nom hôte {

Hardware ethernet @MAC ; #de l’hôte

Fixed-address @IP ; #de l’hôte

}

Et redémarrer le service dhcpd : /etc/init.d/dhcp3-server restart

3. Création d’images de grub pour la selection de la partition à booter à distance

3.1 Création d’un disque de boot grub

Pour commencer, il faut créer une image disque du grub à envoyer en PXE. Pour ce faire, on utilisera VMware.

A partir d’une machine virtuelle, ouvrez le menu Paramètres

* Onglet périphériques : sélectionner floppy disk
* cliquer sur create disk
* saisir un nom

3.2 Installation de grub

# mke2fs /dev/fd0
# mount -t ext2 /dev/fd0 /mnt
# mkdir –p /mnt/boot/grub
# cp /boot/grub/stage1 /mnt/boot/grub
# cp /boot/grub/stage2 /mnt/boot/grub
# umount /dev/fd0
# grub

Configuration de grub

Grub est maintenant installé.

Cryptage du mot de passe

Afin de ne pas mettre le mot de passe de verrouillage grub en clair, nous allons le crypter en md5 via grub : (azerty pour les tests, ATTENTION : clavier grub est en qwerty)

Configuration menu.lst

<

Il va maintenant falloir configurer le menu pour les partitions (dans ce cas, par défaut : Ubuntu) qui se trouve dans le répertoire monté /mnt/boot/grub/menu.lst:

timeout 1 # attente d'1 seconde avant exécution
default 0 # par défaut on boot sur la première partition
password --md5 ???????????????????????????? # on prendra un mot de passe simple comme "azerty"
title Ubuntu
root (hd0,0)
kernel /boot/vmlinuz-2.6.24-17-genric root=/dev/sda1 ro quiet splash
initrd /boot/initrd.inmg-2.6.24-17-generic
title Windows XP
root (hd0,2)
makeactive
chainloader +1

Grub est maintenant configuré.

Création de l’image PXE

Nous pouvons maintenant procéder à la création de l’image de boot grub à partir de l’image disquette (ne pas oublier de démonter la disquette).

Pour cela, l’on va d’abord se rendre dans le répertoire root du serveur TFTP de clonezilla :

cd /tftpboot/nbi_img/

et enfin, créer l’image dans ce dernier :

# dd if=/dev/fd0 of=boot_ubuntu.img bs=1024 count=1440

L’image de boot PXE pour démarrer sur Ubuntu est maintenant prête. Pour Windows XP, il suffit de refaire la manipulation en modifiant simplement le default à 1 dans le menu.lst.

Configuration du menu de boot

Maintenant que les images de boot pour grub sont préparées, nous allons pouvoir les ajouter dans le menu de boot PXE. Pour se faire, il faut éditer le script situé dans /opt/drbl/sbin/generate-pxe-menu et se diriger vers la fin où l’on trouve les labels puis ajouter les 2 entrées pour ces menus. Il est conseillé de les entrer après le label local.

On a aussi la possibilité de désactiver l’édition des menus en mettant l’option « ALLOWOPTIONS » à 0.

Définition des lignes :

Label : nom du label (vu sur clonezilla)

MENU DEFAULT : IMPORTANT : utilisé pour la configuration du boot via clonezilla

MENU HIDE : pareil

Menu label : nom du label vu sur le menu de boot pxe

Memdisk : utilisation de la mémoire du client pour charger l’image

Boot_xp.img : image à chargée

TEXT HELP/ENDTEXT : compléments d’aide lors de la sélection du label dans le menu pxe.

Pour changer le timeout du menu, il faut modifier timeout (40 = 4 secondes). On peut aussi modifier l’image de boot soit en changeant la valeur dans MENU BACKGROUND, soit en remplaçant drblwp.png situé dans /tftpboot/nbi_img/.

Le menu est maintenant configuré, il suffit de lancer ce script après l’avoir enregistré pour prendre en compte les résultats : /opt/drbl/sbin/generate-pxe-menu

Nous pouvons maintenant démarrer une machine en PXE

Utilisation de clonezilla

Voici divers exemples pour utiliser clonezilla (depuis la commande /opt/drbl/sbin/dcs) :

Premier menu :

2 choix sont proposés :

le premier permet de paramétrer une action pour TOUS les clients (c’est-à-dire sur tout le pool dhcp en récupérant les correspondances dans dhcpd.conf)

le second permet de paramétrer une action pour UN ou PLUSIEURS clients

Création de groupe

Il est possible de créer des groupes de MAC/IP pour éviter de sélectionner un à un les postes cibles.

Pour se faire il suffit de créer dans /etc/drbl/ un fichier contenant les adresses MAC ou IPs cibles.

Groupes par adresses MAC

/etc/drbl/MAC-grp-« nom du groupe »

Contenu (une IP par ligne) :

00:25:XX:XX:XX:XX

00:1c:XX:XX:XX:XX

Groupes par adresses IP

/etc/drbl/IP-grp-« nom du groupe »

Contenu (une IP par ligne) :

192.168.1.1

192.168.1.2

Exemple 1 : sélectionner le démarrage par défaut

Maintenant, si l’on veut que TOUS les postes démarrent automatiquement sur XP, il suffit de sélectionner le mode « All », de se rendre dans l’option « more » => « switch-pxe-menu » => « setdefault »=> cocher « xp ».

Exemple 2 : utilisation du wol (wake-on-lan)

Maintenant soit on démarrer les postes un à un… soit on relance dcs en sélectionnant une fois de plus le mode « All » et en sélectionnant par la suite « Wake-on-Lan ».

Attention lorsque l’on choisit ce paramètre, il reste par défaut même après le redémarrage de la machine. Donc il faut penser à changer la valeur de setdefault après reboot.

Exemple 3 : Backup d’un poste via PXE

Nous allons cette fois ci utiliser le mode « part » avec par la suite, le mode par adresse MAC.

On choisit le poste client à sauvegarder via la touche espace et l’on accepte.

Ensuite, il faut choisir « clonezilla start », suivis de « save-parts » (dans mon cas « save-disk ») et entrer le nom de l’image.

Exemple 4 : Restauration de plusieurs postes en Multicast

Encore une fois, nous allons choisir le mode « Part » .

On choisit les postes à restaurer en cochant avec la touche espace. (les hôtes affichés sont récupérés à partir des réservations IPs faites dans le dhcpd.conf)

Une fois les clients sélectionnés, il faut choisir le mode « clonezilla-start », ensuite au choix entre débutant et expert. Expert permettant de configurer plus d’options tel que la méthode de compression, la priorité des utilitaires à utiliser pour la restauration, etc…

Une fois choisi, il faut sélectionner « restore parts », choisir l’action à faire à la fin du clonage.

A noter : on ne peut faire de restauration sur un disque dur cible qui est plus petit que le disque dur dont provient l’image. Par ailleurs, il est possible de faire une restauration sur un disque dur plus grand que le disque dur source (clonezilla va s’occuper de redimensionner le MBR source afin que la taille de la table des partition soit proportionnelle à la taille du disque dur cible).

ensuite choisir le déploiement en multicast et le mieux est de choisir l’option ci-dessous :

clients-time-to-wait

Elle permet de spécifier un nombre de client cibles ainsi qu’un délai max avant le début du déploiement.

Imaginons que l’on veuille déployer une image sur 20 postes et que l’on mette un délai d’attente de 30 secondes : Si au bout de 30 secondes à partir du moment où le premier poste se connecte, les 20 postes connectés ne sont pas atteint, la restauration commence.

Lorsque la restauration est terminée, une notification est envoyée sur le Shell afin de prévenir l’état de la restauration.

Future mises à jour Clonezilla/Debian

Attention, pour les futures mises à jour clonezilla ou lorsque l’on veut mettre en place un nouveau kernel (via /opt/drbl/sbin/drblsrv –i), il faut faire une sauvegarde du script de génération de menu, de l’image splashboot ainsi que des images grub.

 

L’administration d’un parc informatique important peut devenir une tâche ardue si le nombre de postes de travail est important ou s’ils sont répartis sur une zone géographique vaste.

Dans ce cas, vous avez 2 solutions majeures :

  • Le réseau « basket » : à l’aide d’une clé USB, d’un partage réseau et d’une bonne paire de chaussures de sports, votre rôle sera de vous connecter sur chaque poste de travail et de réaliser l’installation manuelle. J’oubliais que vous pouviez aussi vous connecter en prise de main à distance 🙂
  • Packager votre application et la proposer au déploiement : cette solution sera étudiée ci-dessous

1. Installation d’une application : description

L’installation d’une application se fait via l’exécution d’un programme exécutable (.exe) qui réalise différentes opérations :

  • Base de registre : ajout/modification de clés et de valeurs
  • Système de fichiers : ajout de fichiers selon une arborescence
  • Base de données de configuration logicielle Microsoft : ajout des informations sur l’application dans la base de données (Panneau de configuration/Ajout-suppression de programmes)

L’application se charge également de valider les pré-requis :

  • architecture CPU,
  • espace disque,
  • mémoire vive,
  • version d’IE,
  • version de .NET,

2. Pré-requis : le poste de travail source

Afin de packager l’application cible, vous devez vous appuyer sur un poste de travail type. Ce poste de travail doit contenir toutes les applications standards de votre entreprise, être intégrée à votre domaine Active Directory et connectée à votre réseau.

Vous devez être administrateur local de ce poste de travail.

Il doit également posséder 2 applications :

  • regshot : disponible ici
  • MSI Studio Pro : disponible ici

Votre poste de travail source peut également être, et je vous le conseille, une machine virtuelle.
Dans ce cas, avant toute modification, vous activerez les snapshots. Cette opération vous permettra de revenir facilement en arrière et retrouver un poste de travail source propre.

3. Cliché pré-installation de la base de registre

  1. Fermer toutes les applications ouvertes
  2. Exécuter l’application regshot.exe
    regshot1
  3. Ajouter un commentaire, ici : « Shot 1 : Application TEST »
  4. Cliquer sur le bouton <1st shot>, <Shot and save>
  5. Enregistrer le résultat dans un fichier, ici : TEST-Shot-1.hiv
  6. Fermer l’application

4. Installation de l’application cible

Installez votre à application.

Lors de l’installation, veillez tout de même à noter les différents chemins d’installation, les modifications réalisées sur l’arborescence du Menu Démarrer et les modifications apportées sur le bureau.

TESTEZ VOTRE NOUVELLE APPLICATION

5. Cliché post-installation de la base de registre

  1. Fermer toutes les applications ouvertes
  2. Exécuter l’application regshot.exe
    regshot1
  3. Ajouter un commentaire, ici : « Shot 2 : Application TEST »
  4. Cliquer sur le bouton <1st shot>, <Load> et sélectionner le fichier TEST-Shot-1.hiv
    regshot2
  5. Cliquer sur le bouton <2nd shot>, <shot>
    regshot3
  6. Cliquer sur le bouton <cOmpare>
    RegShot ouvre alors un fichier txt contenant les différences entre les 2 clichés. On y trouve en outre les clés et les valeurs ajoutées/modifiées/supprimées
  7. Enregistrer ce fichier résultat
  8. Fermer l’application

6. Packager l’application

  1. Ouvrez l’application MSI Studio Professional
  2. Sélectionnez « Create a New Setup Installation for a Sofware Program »
  3. Sélectionnez « Windows Template » puis cliquez sur « Open the new project directly »
  4. Configuration du projet (* = Obligatoire)
    Product Details – Name (*): saisissez le nom de l’application tel qu’il apparaitra sur le poste de travail
    Product Details – Version (*): saisissez le numéro de version
    Product Details – Manufacturer (*): saisissez l’éditeur du programme
    Product Details – Default Directory (*): sélectionnez le dossier de destination par défaut
    General Information – Title :
    General Information – Subject :
    General Information – Author : saisissez l’auteur du projet, c’est à dire vous
    General Information – Keywords :
    General Information – Comments :
    General Information – Package Code (*): cliquez sur le bouton <Create>, pour générer un identifiant unique
  5. Support et panneau de configuration
    Dans la zone « Add or Remove Programs », vous pouvez paramétrer l’intégration de votre nouvelle application dans le Panneau de configuration-Ajout/suppression de programmes de Windows.
    Les informations de support sont fortement recommandées. Support Information – Contact :  nom du chef de projet responsable de cette application
    Support Information – Phone Number : numéro de téléphone de votre centre de service ou de votre équipe support niveau 1
    Support Information – Support URL : URL d’accès à la page Web de support de votre application
  6. Applications Requirements
    Sélectionnez ici (si nécessaire) les versions minimales nécessaires à la bonne exécution de votre programme

    • Windows 9x
    • Windows NT
    • Internet explorer
    • .Net framework

    Sélectionnez ensuite (si nécessaire) les applications (fichiers .exe) nécessaires à la bonne exécution de votre programme cible.

    Si votre cible requière le framwork .Net, spécifiez le mode d’installation :

    • Run the .NET MSI from a UNC network or local path : si vous disposez d’un partage réseau contenant le fichier d’installation
    • Store the .NET Framework within the package : si vous souhaitez intégrer le pacage d’installation .NET dans votre propre package
  7. Installation Properties
    Configurez ici votre méthode d’installation (redémarrage, …)
  8. Files and Registry ( <— C’est ici que vous ajoutez les fichiers, registre et autres variables d’environnement de votre future application)
    1. Filesmsi1
      A partir de l’onglet « System View », sélectionnez le dossier d’installation de votre application source
      A partir de l’onglet « Project View », sélectionnez le dossier de destination
      Cliquez sur le bouton <Add Folder>
    2. Registry
      A partir du fichier issu de RegShot, sélectionnez les clés et les valeurs à ajouter
  9. Shortcuts and Other Items
    1. Shortcuts : ajoutez ici la création de raccourcis
    2. INI Files : ajoutez ici la création de fichier INI spécifique ou modifiez un fichier INI existant
    3. Environnement variables : ajoutez/modifiez des variables d’environnement (Poste de Travail/Propriété/Avancé/Variable d’environnement)
    4. Service Management : déterminez ici l’exécutable à configurer en tant que service et gérez son mode de démarrage
  10. Dialogs and Actions

    1. Dialogs : ici, vous pouvez ajouter/modifier les boites de dialogue prédéfinies dans l’application. En effet, un fichier MSI, tel une application, communique avec son utilisateur (licence, path, …).
    2. Dialog Sequencing : le séquencement des boites de dialogue peut être configuré
  11. A vos marques, prêts, …., packagez et testez
    Ctrl+B

7. Ajouter votre fichier MSI pour déploiement sur votre parc

Cette section est ou sera abordée dans l’article « Implémentation GLPI »

1. Pré-requis

ssh étant un protocole sécurisé, il faut impérativement que la clé publique du certificat d’identification du serveur maître soit recopié sur chaque serveur fils, pour que la connexion puisse s’effectuer sans saisie de mot de passe.
A noter qu’on peut rapidement déployer la clé publique sur les serveurs fils en utilisant ce script :
scp id_svocs.pub $1:/root/
ssh $1 "cat /root/id_svocs.pub >>/root/.ssh/authorized_keys"
qui va s’utiliser ainsi :
/root/majiddsapub nom_du_serveur
Il faudra simplement taper deux fois le mot de passe de root pour réaliser l’opération.
Bon, okay, vous avez accès à la commande : ssh-copy-id
ssh-copy-id -i ~/.ssh/id_dsa.pub user@machine

2. Création d’un script

2.1 Stockage des scripts

Il est toujours intéressant de pouvoir s’y retrouver, surtout au bout de quelques mois d’intervention. Voici un exemple d’arborescence mise en œuvre :
 /root/scripts : racine des scripts. On stocke ici les fichiers contenant les listes de serveurs à traiter (on peut avoir plusieurs listes selon les opérations à effectuer).
 /root/scripts/20090304/ dossier contenant les scripts créés le 4 mars 2009. On y retrouvera au minimum le script maître, par exemple : script. On pourra également trouver le script qui doit s’exécuter sur les serveurs distants : scriptdistant.

2.2 Liste des serveurs

Dans un fichier texte, insérer la liste des serveurs, avec une ligne par serveur. Ne pas laisser de ligne vide. Utiliser de préférence les noms dns, qui garantissent un accès dans tous les cas de figure aux serveurs distants.

2.3 Script serveur

Voici un exemple de script, qui peut être adapté en fonction des besoins :
 
# Mise a jour de la liste des rpm
for serveur in $(cat ../listeserveurs)
do
echo "serveur en cours de traitement : "$serveur
scp /root/majlisterpm $serveur:/root/
scp scriptdistant $serveur:/root/
ssh $serveur /root/scriptdistant
done
Ce programme va recopier le fichier /root/majlisterpm sur chaque serveur, le fichier scriptdistant, puis va exécuter le fichier scriptdistant préalablement recopié.
Ne pas oublier de rendre exécutable le script :
chmod +x script

3. Utilisation de dsh

dsh est un utilitaire qui permet de réaliser ce que fait le script précédent, à savoir générer les commandes pour un ensemble de serveurs.
La syntaxe est simple :
dsh  [-m machinename | -a | -g groupname] [-r remoteshellname] [-c | -w | -i | -F forklimit ] -- commandline
 m : permet d’indiquer sur quelle(s) machine(s) doit être exécuté le script (nom des machines séparées par une virgule)
 a : exécute le script sur toutes les machines déclarées dans le fichier /etc/dsh/machines.list
 g : exécute le script pour le groupe de machines décrit dans /etc/dsh/group/nomgroupe (équivalent au fichier listeserveurs ci-dessus)
 f listeserveurs : exécute le script pour le groupe de machines décrit dans le fichier indiqué (pas forcément dans /etc/dsh/group/)
 r : par défaut, dsh va exécuter les scripts en utilisant rsh. Il est possible de forcer l’exécution avec ssh, par exemple, en utilisant cette option. Ce paramètre peut également être modifié par défaut dans le fichier /etc/dsh/dsh.conf
 c : exécute les commandes en parallèle sur l’ensemble des machines
 w : attend que le traitement sur une machine soit terminé avant d’entamer le travail sur la machine suivante
 i : quand l’exécution est demandée sur plusieurs machines en parallèle (option -c), crée autant de processus que de machines traitées
 F : idem que -c, mais en limitant le nombre de traitements parallèles
 v : mode verbeux
 q : mode silencieux
Ainsi, le script précédent va pouvoir prendre la forme suivante :
dsh -f ./listeserveurs -r ssh /root/scriptdistant

3.2 Script distant

On écrit le script qui va s’exécuter sur le serveur distant. Dans notre exemple, on va programmer l’exécution de majlisterpm une fois par semaine :
cat scriptdistant
if test ! -e /etc/cron.weekly/majlisterpm
then
ln -s /root/majlisterpm /etc/cron.weekly/majlisterpm
fi
Ne pas oublier de rendre le script exécutable :
chmod +x scriptdistant
Autre exemple, pour modifier le compte d’envoi des messages systèmes dans le fichier /etc/postfix/aliases :
cat scriptdistantpostfix
cp /etc/postfix/aliases /etc/postfix/aliases.old
sed s/^root:.*$/"root: manouvelleadressemel@mondomaine.com"/ /etc/postfix/aliases.old > /etc/postfix/aliases

3.3 Exécution du script

Il suffit de lancer l’exécution du script :
./script
Mise en place de l’enregistrement du résultat de l’exécution
Par défaut, tous les messages d’exécution s’afficheront sur la console. Si on veut enregistrer le résultat des commandes, il suffit de modifier le script en redirigeant toutes les commandes vers un fichier log, qu’on pourra alors consulter tranquillement…
Par exemple :
$log = /var/log/script.log
`date` > $log
# Mise a jour de la liste des rpm
for serveur in $(cat ../listeserveurs)
do
echo "serveur en cours de traitement : "$serveur >> $log
scp /root/majlisterpm $serveur:/root/ 1>>$log 2>>$log
scp scriptdistant $serveur:/root/ 1>>$log 2>>$log
ssh $serveur /root/scriptdistant 1>>$log 2>>$log
done
echo "fin de traitement a " `date` >>$log

1. Installation du serveur

#apt-get install nis

2. Configuration

2.1 Configuration : /etc/default/nis

#NISSERVER=false
NISSERVER=master
NISCLIENT=true
YPPWDDIR=/etc
YPCHANGEOK=chsh
NISMASTER=
YPSERVARGS=
YPBINDARGS=-no-dbus
YPPASSWDDARGS=
YPXFRDARGS=

2.2 Configuration : /etc/YPServ.conf

#
# ypserv.conf   In this file you can set certain options for the NIS server,
#               and you can deny or restrict access to certain maps based
#               on the originating host.
#
#               See ypserv.conf(5) for a description of the syntax.
#
# The following, when uncommented,  will give you shadow like passwords.
# Note that it will not work if you have slave NIS servers in your
# network that do not run the same server as you.
Host                       : Domain  : Map              : Security
*                          : *       : passwd.byname    : port/mangle
*                          : *       : passwd.byuid     : port/mangle
# This is the default - restrict access to the shadow password file,
# allow access to all others.
*                            : *       : shadow.byname    : port
*                            : *       : passwd.adjunct.byname : port
*                            : *       : *                : none

2.3 Configuration : /etc/yp.conf

#
# yp.conf       Configuration file for the ypbind process. You can define
#               NIS servers manually here if they can't be found by
#               broadcasting on the local net (which is the default).
#
#               See the manual page of ypbind for the syntax of this file.
#
# IMPORTANT:    For the "ypserver", use IP addresses, or make sure that
#               the host is in /etc/hosts. This file is only interpreted
#               once, and if DNS isn't reachable yet the ypserver cannot
#               be resolved and ypbind won't ever bind to the server.
# ypserver ypserver.network.com
ypserver monserveurnis.mondomaine.priv

2.4 Configuration : /etc/defaultdomain

mondomaine.priv

2.4 Configuration : /etc/ypserv.securenets

#
# securenets    This file defines the access rights to your NIS server
#               for NIS clients (and slave servers - ypxfrd uses this
#               file too). This file contains netmask/network pairs.
#               A clients IP address needs to match with at least one
#               of those.
#
#               One can use the word "host" instead of a netmask of
#               255.255.255.255. Only IP addresses are allowed in this
#               file, not hostnames.
#
# Always allow access for localhost
255.0.0.0       127.0.0.0
# This line gives access to everybody. PLEASE ADJUST!
0.0.0.0         0.0.0.0

3. Initialisation

Création de la base de données d’authentification

#/usr/lib/yp/ypinit -m

3.1 Installation du client NIS

# yp.conf       Configuration file for the ypbind process. You can define
#               NIS servers manually here if they can't be found by
#               broadcasting on the local net (which is the default).
#
#               See the manual page of ypbind for the syntax of this file.
#
# IMPORTANT:    For the "ypserver", use IP addresses, or make sure that
#               the host is in /etc/hosts. This file is only interpreted
#               once, and if DNS isn't reachable yet the ypserver cannot
#               be resolved and ypbind won't ever bind to the server.
# ypserver ypserver.network.com
ypserver monserveurnis.mondomaine.priv

3.2 Configuration du client NIS

3.2.1 /etc/hosts

10.11.12.13          monserveurnis.mondomaine.priv     monserveurnis

3.2.2 /etc/defaultdomain

mondomaine.priv

3.2.3 /etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd:         nis compat
group:          compat
shadow:         compat
hosts:          files nis mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

3.2.4  Modification des fichiers locaux

# echo "+::::::" >>/etc/passwd
# echo "+::::::::" >>/etc/shadow
# echo "+:::" >>/etc/group

4. Maintenance

4.1 Création d’un utilisateur

Sur le serveur client configuré Client NIS :

NIS client # mkdir /home/<user>
NIS client # chown <user>:<user> <user>

Sur le serveur NIS :

NIS server # adduser <user>
NIS server # cd /var/yp
NIS server # make

4.2 Modification d’un mot de passe

NIS server # yppasswd <user>
NIS server # mot de passe root :
NIS server # nouveau mot de passe :
NIS server #
NIS server # cd /var/yp
NIS server # make

4.3 Supprimer un utilisateur

Sur le serveur client configuré Client NIS :

NIS client # rm –r /home/<user>

Sur le serveur NIS :

NIS server # deluser <user>
NIS server # cd /var/yp
NIS server # make
Ce script a pour objectif de changer le mot de passe d’un compte passé en paramètre sur l’ensemble des serveurs UNIX de votre parc.
Pré-requis :
  • Se connecter en tant que ROOT sur votre serveur
  • Configurer un échange de clés SSH entre votre serveur et l’ensemble des serveurs de votre parc
  • Une liste des serveurs cibles dans le fichier /root/scripts/listedesserveursatraiter
Utilisation :
#ChangePasswd.sh <nom du compte>

ex : #ChangePasswd.sh root
Code :
#!/bin/bash

compte = $1

echo "Modification du mot de passe $compte sur l'ensemble des serveurs"
read -s -p "Nouveau mot de passe : " mdp
echo ""
if test -z "$mdp" ; then
        echo "Le mot de passe ne peut pas être vide"
        exit
fi
read -s -p "Vérification du mot de passe saisi : " mdp2
if test "$mdp" != "$mdp2" ; then
        echo "Les mots de passe saisis ne correspondent pas"
        exit
fi

echo "Modification du mot de passe du compte $compte"

SERVEUR=/root/scripts/listedesserveursatraiter
for serveur in `cat $SERVEUR|grep "^[^#].*$"`
do
        echo "Traitement du serveur : $serveur"
        ssh $serveur "echo $compte:$mdp|chpasswd"
done

echo "Après avoir VERIFIE LES CONNEXIONS sur CHAQUE SERVEUR, vous pouvez fermer ce shell"

echo "Après avoir VERIFIE LES CONNEXIONS sur CHAQUE SERVEUR, vous pouvez fermer ce shell"
 
Commentaires :  le fichier /root/scripts/listedesserveursatraiter contient la liste des serveurs :
serveur1
serveur2
#ce serveur ne sera pas traité
Parce que la connexion SSH est configurée par échange de clés, le script se charge d’envoyer, sans authentification, la commande chpasswd <nom du compte>:<mot de passe> à tous les serveurs.

1.Installation d’un serveur LDAP simplissime

Ici, je vais vous montrer comment installer un serveur LDAP minimaliste.

#apt-get install slapd ldap-utils

2.Configuration

Une fois installé, il nous faut définir un password pour root avec la commande suivante.

slappasswd

New password:

Re-enter password:

{SSHA}d2BamRTgBuhC6SxC0vFGWol31ki8iq5m

Copiez la ligne « {SSHA}d2BamRTgBuhC6SxC0vFGWol31ki8iq5m » et éditez le fichier « /etc/ldap/slapd.conf ».

#Assurez d’avoir les lignes suivantes ou de les décommenter, « chezmoi » est le petit nom que je veux donner à mon LDAP

suffix « dc=chezmoi » #j’ai choisi ce DC mais vous pouvez prendre autre chose bien sûre

directory « /var/lib/ldap » #par défaut

rootdn « cn=admin,dc=chezmoi »

rootpw {SSHA}d2BamRTgBuhC6SxC0vFGWol31ki8iq5m

Éditez le fichier /etc/ldap/ldap.conf et ajoutez :

BASE dc=chezmoi

3.Initialisation

Encore un petit effort ! Il nous faut maintenant créer un fichier contenant nos premières entrées LDAP. Je vous propose de créer un fichier nommé init.ldif et d’ajouter ce contenu (minimaliste : création d’une OU contacts pour y placer nos contacts) :

dn: dc=chezmoi

objectClass: dcObject

objectClass: organizationalUnit

dc: chezmoi

ou: Chezmoi

dn: ou=contacts,dc=chezmoi

objectClass: organizationalUnit

ou: contacts

On va arrêter LDAP, charger notre fichier et redémarrer LDAP :

# /etc/init.d/slapd stop

# slapadd -l ~/ldap.ldif

# /etc/init.d/slapd start

Il nous reste maintenant à télécharger le schéma correspondant à mozilla thunderbird à cette adresse :

Mozilla LDAP Schema

Placez son contenu dans un fichier, par exemple /etc/ldap/schema/mozilla-thunderbird.schema

(Note : il faut retirer les lignes suivantes de ce schéma sinon ldap ne veux pas redémarrer)

mozillaCustom2 $

mozillaCustom4 $

nsAIMid $

Ajouter au début du fichier /etc/ldap/slapd.conf la ligne suivante et redémarrez slapd, placer vous dans ~/mozilla/dist/bin et lancer thunderbird :

–> ajout de « include /etc/ldap/schema/mozilla-thunderbird.schema » dans au début du fichier « /etc/ldap/slapd.conf »

# /etc/init.d/slapd restart

# cd ~/mozilla/dist/bin

# ./thunderbird

Maintenant, il suffit d’ajouter un nouvel annuaire LDAP depuis la partie carnet d’adresses de Thunderbird. Les paramètres à entrer sont les suivants (pour notre exemple) :

Name : chezmoi

Hostname : localhost

base DN : ou=contacts, dc=chezmoi

Bind DN : cn=admin,dc=chezmoi

Vous pouvez maintenant créer des contacts qui seront directement enregistrés dans votre annuaire LDAP !! 🙂