Architecture Logicielle des Systèmes Informatiques

Julien Legrand

Gilles Thomassin

BTS Informatique de gestion Lycée Dominique Villars

Ce document est placé sous licence Gnu Free Documentation Licence


Table des matières

Présentation de l'infrastructure matérielle et logicielle du BTS IG
Le réseau
Les serveurs
Les postes clients
Les différentes distributions utilisées
Se loguer
Connaissances de base sur les systèmes Linux
L'arborescence du système de fichiers
Le répertoire courant ou répertoire de travail
Déplacement dans l'arborescence de répertoires
Noms absolus
Noms relatifs
Quand utiliser l'un ou l'autre ?
Répertoires spéciaux
Le répertoire personnel : Home Directory
Lister le contenu d'un répertoire
Les filtres
Interventions sur l'arborescence du système de fichier
Création de répertoires
Suppression de répertoire
Commande rmdir
Suppression de répertoire non vide
copie/duplication de fichiers
Copie de répertoire avec tout son contenu
Suppression de fichiers
Déplacement, renommage de fichier ou de répertoire
La console et ses commandes
La "complétion"
L'historique
Copier-coller sous XWindow
Gestion de la console
Effacer la console
Fermer la console
Afficher un calendrier
Changement de mot de passe
Obtenir de l'aide sur une commande
Travail en local
Travailler de loin ...
Gérer les archives de fichiers
L'archivage
La restauration d'une archive
Exercices sur la sauvegarde, restauration
Se connecter à distance en réseau local
Se connecter à distance par Internet
Transférer des fichiers via un tunnel SSH
Transférer des fichiers vers un serveur SSH
Transférer des fichiers depuis un serveur SSH
Gestion locale avancée
Gestion des processus
Gestion des droits sur les fichiers et répertoires
Généralités
Les propriétaires d'un fichier ou dossier
Les droits sur les fichiers et dossiers

Liste des exemples

1. Sortie de pwd
2. Home directory de gdupond
3. utilisation de la commande copy
4. Copie sous un nouveau nom
5. Copier son répertoire de mail
6. changer le nom d'un répertoire
7. Archivage d'un répertoire
8. Restauration d'une archive
9. sortie d'un ps
10. ps -u
11. l'affichage des droits et propriétaires : ls -l

Présentation de l'infrastructure matérielle et logicielle du BTS IG


Le réseau

Le bâtiment informatique comporte 4 salles (F001, F101, F005 et F202/203) équipées dans lesquelles se trouvent à peu prés 60 postes. Tous les ordinateurs de chaque salle sont reliés à un même commutateur (switch) par des câbles réseau. Les commutateurs de chaque salle sont eux-mêmes connectés en cascades sur un commutateur de tête, placé dans la salle des serveurs : le bocal Les serveurs sont reliés aussi au commutateur.

Ainsi physiquement, tous les appareils sont reliés entre eux. On dispose aussi d'un modem adsl permettant de relier le réseau local à internet. Cette connexion est gérée par un serveur.

Les serveurs

En gros, vous utiliserez plus précisément (sans toujours le savoir) deux des serveurs du BTS : BigServ et Sirac.

  • Bigserv, alias www comme son alias l'indique, fait office de serveur web mais aussi serveur ssh, ftp, proxy et firewall. Bigserv a pour adresse 172.16.48.152. BigServ tourne sous Linux.
  • Sialouze et Sirac sont des serveurs d'applications et de fichiers, il permettent, aux PCS ne disposant pas d'assez de ressources, de fonctionner en mode passif, c'est à dire de se comporter comme de simples terminaux X (consoles graphiques). Sialouze a pour adresse ip: 172.16.48.160 et Sirac 172.16.48.161. Sur ces deux serveurs sont installés des systèmes d'exploitation basés sur linux. Sirac sert également de serveur NIS, c'est-à-dire de serveur d'authentification.
  • Un autre serveur vient compléter cette panoplie de serveurs : meije. Il s'agit d'un serveur Windows 2003 Server Standard Edition, qui est principalement utilisé pour authentifier les utilisateurs sous Windows et centraliser leurs données.

Les postes clients

Les postes clients sont des ordinateurs personnels équipés de deux systèmes d'exploitation : le système windows généralement version XP Service Pack 2 ou 3, et un système linux minimal ou plus complet selon les salles, permettant

  • de lancer un serveur X local qui servira à afficher sur le poste client les applications exécutées sur le serveur XDMCP.
  • de travailler de façon autonome, permettant aux étudiants de s'entrainer à gérer les utilisateurs, installer les paquets et configurer le système, ce qui est impensable sur les serveurs.

Les différentes distributions utilisées

Selon la salle dans laquelle vous travaillez, l'environnement peut varier, pour répondre aux besoins des cours que vous y suivez.

Ainsi, en F001 et F005, les ordinateurs démarrent avec une distribution basique Mandriva, permettant de basculer en mode client léger XDMCP. Une fois logués, vous travaillez sur le système installé sur le serveur XDMCP choisi. Sirac et Sialouze tournent sous Gentoo avec environenemnt graphique Xfce.

La salle F101, également nommée laboratoire réseau est réservée exclusivement aux étudiants de seconde année, qui suivent l'option Administrateur de Réseaux Locaux d'Entreprise.

Les ordinateurs de la salle F202/203 travaillent avec une distribution Ubuntu 8.04 LTS Hardy Heron. Chaque étudiant possède son propre système, qu'il est amené à configurer et administrer. Deux systèmes sont donc installés par ordinateurs : un pour un étudiant du groupe A et un pour un étudiant du groupe B. Chaque étudiant doit donc gérer son compte d'administrateur du système, mais peut se loguer sur n'importe quelle machine à partir de son compte global, à savoir celui géré par Sirac. Il est également possible, en ouvant les options, situées en bas à gauche de la fenêtre de connexion, de se connecter en mode client léger (ou mode passif) sur les serveur XDMCP de la section : Sirac et Sialouze.

Se loguer

Lorsque vous allumez votre ordinateur client, un écran vous est proposé, sur lequel sont demandés un login et un mot de passe. Chaque utilisateur du système dispose d'un compte. Le login est formé de la première lettre du prénom suivi immédiatement de la totalité du nom de famille. Par exemples, un étudiant nommé Louis Dupond a pour login : ldupond. Un étudiant nommé Hubert Godefroy de Montmirail a pour login hgodefroydemontmirail. Remarquez que toutes les lettres sont en minuscules.

Lorsqu'un utilisateur rentre son login et son mot de passe, on dit qu'il se loggue.

Pour pouvoir travailler, il est nécessaire de se logguer. Le mot de passe est et doit rester strictement confidentiel. Il garantit l'identité de la personne qui se connecte. Il ne doit en aucun cas être trivial (facile à retrouver) et ne doit être divulgué. Vous êtes pénalement et civilement responsables des actions commises sous votre identité.

Une fois identifié, vous obtenez un environnement graphique (Gnome, KDe ou Xfce) qui vous permet de travailler.

Par opposition au mode graphique, on peut utiliser le système en mode texte. Obtenir l'interface en mode texte quand on est en mode graphique nécessite le lancement d'une application émulant le mode texte s'appelant konsole. Sous Ubuntu, cette application peut être démarrée ainsi : Menu Application >> Accessoire >> Terminal.

Connaissances de base sur les systèmes Linux


L'arborescence du système de fichiers

L'arborescence des fichiers est quasiment systématiquement la même sous les différentes distributions linux :

	/
	|-- bin
	|-- boot
	|-- dev
	|-- etc
	|-- home
	|   |-- gdupond
	|   |   |-- Documents
	|   |   |-- coursS3
	|   |   |-- coursS2
	|   |   |   '--vim
	|   |   '-- Projets
	|   |-- pduval
	|   '-- sdurand
	|-- initrd
	|-- lib
	|-- media
	|-- mnt
	|-- opt
	|-- proc
	|-- root
	|-- sbin
	|-- sys
	|-- tmp
	|-- usr
	`-- var

Le système de fichier peut être assimilé au réseau de racines d'un arbre. / slash est appelée racine du système de fichier. Les conteneurs de l'arborescence sont appelés des répertoires. Un répertoire peut contenir lui-même des répertoires mais aussi des fichiers.

Le système de fichier de Linux est basé sur des noeuds (node in english). Un noeud, grossièrement, représente un fichier. Un noeud contient des informations telles que l'emplacement du fichier, le noeud père du noeud (autrement dit, le répertoire dans lequel se trouve le fichier), le noeud lui-même, les noeuds fils si le fichier est un répertoire, car en UNIX et Linux, les répertoires sont considérés comme des fichiers ayant des noeuds fils.

Le répertoire courant ou répertoire de travail

A un instant donné, on se trouve dans un répertoire que l'on appelle répertoire courant ou répertoire de travail. Par défaut, lorsque l'on ouvre la console, le répertoire courant est notre répertoire personnel. Il est possible de savoir à tout instant quel est notre répertoire courant.

La commande pwd, pour Print Working Directory, nous affiche le nom absolu du répertoire courant.

Exemple 1. Sortie de pwd

	$pwd
	/home/jlegrand
	$

Attention

Unix est un système sensible à la casse, il différencie donc les minuscules des majuscules. La commande s'écrit toute en minuscules : pwd et non Pwd ou PWD ou toute autre combinaison de majuscules et de minuscules.

Travail à faire : testez la commande pwd. Quel résultat obtenez-vous ?

Déplacement dans l'arborescence de répertoires

Il est possible de changer de répertoire de travail et donc de se déplacer dans l'arborescence du système de fichiers. On utilise pour cela la commmande "change directory": cd nomDeRépertoire

Pour nommer un répertoire, on peut utiliser deux types de noms : noms absolus ou noms relatifs.

Noms absolus

Un nom absolu est formé de la concaténation des noms des répertoires par lesquels on doit passer pour arriver au répertoire que l'on souhaite atteindre, en partant de la racine /. Le nom absolu commence donc toujours par /. Il reste le même pour un noeud quel que soit le répertoire courant.

ex: /home/gdupond/coursS3/

la commande cd / permet donc de se rendre sur la racine

Exercice : : donnez le nom absolu du répertoire Documents de l'utilisateur gdupond

Travail à faire :

  • placez-vous directement dans le sous-répertoire init.d du dossier etc.
  • placez-vous directement dans le répertoire var.
  • placez-vous directement dans le répertoire home.

Noms relatifs

Alors que les noms absolus partent de la racine, les noms relatifs partent du répertoire courant. Ainsi, si le pwd nous donne /home, le nom relatif "pdupond/public_html" désigne le répertoire dont le nom absolu est: "/home/pdupond/public_html".

Pour former le nom absolu le système concatène le répertoire courant avec le nom relatif fourni.

A contrario des noms absolus, les noms relatifs ne commencent pas par "/".

Exercice : si le pwd donne : /home,quel est le nom relatif du répertoire /home/gdupond/sql ?

Travail à faire :

  • placez-vous dans votre répertoire personnel.
  • placez-vous dans le répertoire 01_projetHello, contenu dans le répertoire IG1_C++ dans votre répertoire personnel en utilisant un chemin relatif.

Quand utiliser l'un ou l'autre ?

Le nom absolu est sûr : quel que soit le répertoire courant, il fonctionne toujours.

Le nom relatif est souple : même si on déplace une sous arborescence. Un sous-répertoire, un répertoire frère (voisin), ..., sont toujours placés identiquement les uns par rapport aux autres. Par exemple, un site web se doit d'utiliser un chemin relatif pour lier les images stockées dans un répertoire précis. En effet, une fois le site hébergé sur le serveur web désiré, il est probable que les noms absolus ne soient plus opérationnels.

Répertoires spéciaux

"./" désigne le répertoire courant. "../" désigne le parent du répertoire courant. Celui qui le contient.

Grâce au ../ il est donc possible de désigner relativement un répertoire situé plus haut dans l'arborescence, voire de redescendre ensuite dans une autre branche.

Alors, si pwd nous donne /home/gdeniere/public_html/

  • ../ désigne /home/gdeniere/
  • ../coursS3/ désigne /home/gdeniere/coursS3/
  • ../../ désigne /home/

Travail à faire :

  • Placez vous dans vote dossier /home/.../IG1_C++/01_projetHello/.
  • Exécutez successivement les commandes permettant d'atteindre les répertoires suivants en utilisant un chemin relatif :
    • 02_projetVariables
    • /home
    • /

Le répertoire personnel : Home Directory

Chaque utilisateur est propriétaire d'un sous répertoire de /home. On appelle ce répertoire : le home directory de l'utilisateur. Il a généralement pour nom le login de l'utilisateur.

Exemple 2. Home directory de gdupond

/home/gdupond

~ est un raccourci désignant son propre répertoire personnel. ~pduval désigne le home directory de l'utilisateur "pduval".

cd ~ permet de revenir dans le home directory de l'utilisateur connecté. cd sans argument produit le même effet.

Lister le contenu d'un répertoire

La commande "list" ls permet de voir ce qu'il y a dans un répertoire désigné de façon absolue ou relative.

syntaxe : ls nomDuRepertoire

ls sans argument liste fichiers et répertoire du répertoire courant.

Travail à faire : testez les commandes suivantes :

  • ls /
  • ls ~
  • ls -a ~

On remarque une différence entre ls et ls -a.

ls -a affiche un certain nombre de fichiers et répertoire en plus.

ces fichiers ou répertoires ont tous un nom qui commence par le caractère . et cette caractéristique fait qu'ils ne sont pas affichés lors d'un ls normal.

On dit que ce sont des fichiers ou répertoires cachés.

Travail à faire : essayez dans votre home directory :

  • ls -l
  • ls -t
  • ls -lt
  • ls -ltr

essayez aussi ls -al.

Note

On voit que les options d'une commande sont précédées d'un - et qu'elles peuvent être combinées -la -lda etc...

Les filtres

Pour désigner répertoires ou fichiers on peut utiliser les caractères génériques ? ou *.

  • ? remplace un caractère dans le nom.
  • * remplace une chaîne de caractères dans le nom, chaine éventuellement vide.

Ainsi ls /etc/*.conf donne le listing de tous les fichiers finissant par .conf. ls v?m* me donne tous les fichiers commençant par v ayant n'importe quel caractère ensuite puis un m suivi de n'importe quoi. on verra donc:

	vim
	vimtutor
	vemx
	vampire 

???t désigne les noms de 4 caractères avec un t en dernière position exemple: pist dept

Interventions sur l'arborescence du système de fichier


Création de répertoires

commande: make directory

syntaxe: mkdir nomDuRepertoire

Le nom de répertoire peut être donné en absolu ou relatif

Travail à faire :

  • Créez dans votre Home directory l'arborescence suivante.
  • Listez les répertoires S1 à S5 et leur contenu en une seule commande.

~
|-----S1
|-----S2
|     |-----vim
|     |-----se
|
|-----S3
|     |-----procedural
|     |-----evt
|     |-----objet
|     |-----sql
|
|-----S4
|     |-----compta
|     |-----edi
|
|-----S5
       |-----ploum
       |-----clic

Suppression de répertoire

Commande rmdir

La suppression de répertoire se fait grâce à la commande rmdir

commande : remove directory

syntaxe: rmdir nomDuRepertoire

Travail à faire : supprimez le répertoire ploum

Travail à faire : supprimez le répertoire S5

Que ce passe-t-il ?

Il semblerait qu'on ne peut pas supprimer un répertoire qui contient quelque chose. En d'autres mot rmdir semble ne supprimer que des répertoires vides. Pour supprimer S5 avec rmdir il faudrait d'abord supprimer son répertoire clic.

rmdir ne permet donc que la suppression de répertoires vides.

Suppression de répertoire non vide

commande remove

syntaxe rm -r nomDuRépertoire

La commande rm accepte une option r récursif qui signifie qu'elle va vider tous les sous-répertoires avant de vider le répertoire demandé.

Travail à faire :

  • Supprimez le répertoire S5.
  • Supprimez en une seule commande les répertoires S1 à S4.
  • La commande mkdir peut accepter plusieurs noms de répertoires à créer. Recréez l'arborescence proposée plus haut en une seule commande.

copie/duplication de fichiers

commande: copy

syntaxe cp nomDuSource nomDeLaCible

Exemple 3. utilisation de la commande copy

cp /usr/share/vim/tutor/tutor.fr ~/S2/vim/

Dans cet exemple, le nom du fichier cible n'est pas entièrement spécifié. C'est le nom d'origine qui est alors repris: tutor.fr

Si on veut donner un autre nom au fichier copié, il suffit d'indiquer le nouveau nom dans la destination :

Exemple 4. Copie sous un nouveau nom

cp /usr/share/vim/tutor/tutor.fr ~/S2/vim/tutorOrig.fr

Travail à faire : A l'aide de vim, créez un fichier : ~/S2/essais.txt

  • Copiez le dans un fichier essais.bak
  • Copiez le avec le même nom dans le répertoire ~/S2/vim/
  • Copiez le dans le répertoire ~/S2/se/ sous le nom essais.bak

Copie de répertoire avec tout son contenu

commande: copy

syntaxe: cp -r nomDuRépertoireACopier nomDuRépertoireCible

Exemple 5. Copier son répertoire de mail

cp -r ~/.Mail mesCourriers

Travail à faire :

  • copiez le répertoire S4 dans S2.
  • affichez le contenu de toute l'arborescences des dossiers S1 à S4.
  • quelle différence y a-t-il entre ls -R * et ls * ?

Suppression de fichiers

commande: remove syntaxe rm nomDuFichier

Travail à faire : Supprimez ~/S2/essais.txt vérifiez que le fichier a bien disparu.

Déplacement, renommage de fichier ou de répertoire

commande: move

syntaxe: mv ancienNom nouveauNom

Exemple 6. changer le nom d'un répertoire

mv mesCourriers courriers

Travail à faire :

  • renommez ~/S2/se/essais.bak en ~/S2/se/essais.txt
  • renommez S3 en s3
  • déplacez le répertoire sqldans S2

Travail à faire : Quelle différence y a-t-il entre mv ~/s3/objet ~/S1 et mv ~/s3/objet ~/s1 ?

La console et ses commandes


La "complétion"

Lorsque l'on tape le début d'une commande, votre shell (interpréteur de commande) peut essayer de deviner ce qu'il doit mettre pour la compléter. Ainsi si vous tapez cd /ho<tab>, le système de complète automatiquement en ajoutant "me".

Supposons que nous souhaitions aller dans le home directory de unNomADormirDebout

	cd unN<tab>

vous rendra grand service.

Note

Lorsque plusieurs possibilités sont offertes bash émet un beep sonore. Sur certaines versions du shell, les possibilités sont directement proposées, sur d'autres, il faut appuyer à nouveau sur <tab>, pour que le système les affiche.
	[raoul@bigserv s2]# cd /home/e
	eamoros        ecezanne       echabrier      evaluationsG1  evaluationsG2
	[raoul@bigserv s2]# cd /home/e

L'historique

L'historique est constitué de l'ensemble des commandes tapées par un utilisateur. Sous bash il suffit d'utiliser les flêches haut et bas du clavier pour naviguer dans l'historique.

Mais l'intégralité de l'historique peut être affiché grâce à la commande history.

Pour sauver son historique: history > sauvHistorique.txt

Pour rechercher dans l'historique: history | grep "chaîne recherchée"

Pour naviguer dans l'historique: history | less

Pour imprimer l'historique: history | lpr -P <nomImprimante>

Pour rappeler une commande récente, il est possible :

  • d'utiliser la commande ! <numéro de la ligne>.
  • d'utiliser la touche <flèche du haut> du clavier.

Pour effacer l'historique: history -c

Copier-coller sous XWindow

Le copier s'effectue en sélectionnant la partie à copier

Le coller est effectué par un clic simultané sur les deux boutons de la souris, ou par un clic sur le bouton central, lorsque la souris en dispose.

Gestion de la console

Effacer la console

commande clear syntaxe: clear

A noter: on peut dans un programme c/c++ faire exécuter une commande du système grâce à l'instruction: system("commande à exécuter");

On pourra donc effacer l'écran par la commande : system("clear");

La commande clear efface l'écran, mais ne vide pas l'historique. Il ets même possible d'utiliser la barre de schrolling de la console pour consulter ce qui a été traité précédemment.

Fermer la console

syntaxe: exit

Afficher un calendrier

commande calendar syntaxe: cal

La commande

La commande clear efface l'écran, mais ne vide pas l'historique. Il ets même possible d'utiliser la barre de schrolling de la console pour consulter ce qui a été traité précédemment.

Changement de mot de passe

Historiquement, les mots de passe des utilisateurs ont tout d'abord été stockés dans le fichier /etc/passwd. Puis, pour des raisons de sécurités, ils en ont été retirés. En effet ce fichier est lisible par tout le monde. Ce fichier contient toujours la liste des utilisateurs du système, mais plus les mots de passe. Les mots de passe de chaque utilisateur sont enregistrés maintenant sous forme cryptée dans un fichier qui s'appelle /etc/shadow.

La commande courante pour changer son mot de passe est la commande passwd.

syntaxe: passwd

Attention

En cas d'utilisation d'un authentification par serveur NIS, communément appelé yellow pages ou pages jaunes, le programme qui doit être utilisé s'appelle yppasswd

Note

Le mot de passe est constitué d'au moins 8 caractères parmi lesquels on trouvera un mélange de lettres en minuscules, en majuscules, des chiffres ainsi que des caractères spéciaux. Le mot de passe ne doit pas être prononçable. Les mots de passe ne doivent en aucun cas être communiqués. Il est fortement conseillé de le changer à intervalle régulier par exemple tous les mois. Vous êtes responsables des actions commises sous votre login.

Le super utilisateur peut s'affranchier de cette stratégie de mots de passe. Ainsi sur Ubuntu, et d'autres systèmes, il est possible de changer son mot de passe en mode SU : sudo passwd <login>.

Obtenir de l'aide sur une commande

commande : manuel

syntaxe: man <nomDeLaCommande>

man accepte les instructions suivantes, une fois les pages de manuels ouvertes :

  • /: recherche comme sous vim
  • b: une page en arrière
  • f: forward une page en avant
  • q: quit quitter

Par défaut, les pages du manuel sont en anglais. Pour les obtenir en français, dans la mesure où elles existent, il faut installer les paquets manpages-fr et manpages-fr-extra.

Travail à faire : A l'aide de la commande man, obtenez pour chacune des commandes suivantes, leur rôle et un exemple d'utilisation.

  • cat

    A l'aide de cette commande :

    • lister le contenu du fichier /etc/passwd à l'écran,
    • faire un gros fichier nommé userAndGroup résultant de la concaténation des fichiers /etc/passwd et /etc/group,
    • afficher le contenu du fichier userAndGroup,
    • saisir le fichier copains qui contient 2 étudiants de votre groupe, dans lequel chaque ligne contient un camarade (nom et prénom).
    • afficher le contenu de ce fichier.
    • saisir dans ce même fichier copains 2 autres étudiants de votre groupe dans les même dispositions.
    • afficher le contenu de ce fichier. Qu'en conluez-vous ?
    • effacer le fichier copains, puis vérifiez son contenu,

  • less

    Trouver les principales commandes de ce programme et les expérimenter sur le fichier userAndGroup. On cherchera en particulier, les commandes permettant

    • d'afficher le contenu d'un fichier
    • de rechercher une chaine dans le fichier,
    • d'aller une ligne en avant,
    • d'aller une page en avant,
    • d'aller une ligne en arrière,
    • d'aller une page en arrière,
    • d'aller à la fin,
    • ou au début du fichier.
    • de quitter l'exploration du fichier.

  • tail

    Trouver les principales commandes de ce programme et les expérimenter sur le fichier userAndGroup. On cherchera en particuluer à

    • lister les 10 dernières lignes d'un fichier,
    • lister les 30 dernières lignes d'un fichier

    Le résultat n'est pas affichable en entier à l'écran. Il est alors possible d'utiliser un filtre pour tout voir, grace à un tube ou pipe, en suffixant la commande de : | <filtre>.

    • head
    • more
    • less

Travail à faire :

A l'aide des pages manuel, trouvez les options du filtre sort permettant de trier les commandes de l'historique par ordre numérique décroissant.

Travail en local

Sur toutes les machines clientes, (les postes des salles) un linux de base est installé. Il est évidemment possible de s'en servir. Les systèmes linux disposent de différentes consoles virtuelles. Certaines sont en mode texte et d'autres en mode graphique.

Les consoles en mode texte sont au nombre de 6. Elles sont accessibles par ctrl alt <F1>, ctrl alt <F2>, ... . Sur chaque console, un utilisateur différent peut se loguer. Les consoles graphiques elles aussi sont au nombre de 6. Evidemment, elles sont plus gourmandes en mémoire que les consoles en mode texte, c'est pourquoi il ne faudra les utiliser qu'avec parcimonie. Actuellement une seule console graphique est activée et elle donne accés à une fenêtre permettant de se loguer sur le serveur Sirac en XDMCP.

Pour ouvrir une seconde console en mode graphique, on lancera la commande suivante : startx -- :1. Le premier serveur X est :0 le second : :1 etc ... la console lancée ici est accessible sur ctrl alt <F8>

Sous Mandriva, le bureau à lancer par le startx est inscrit dans le fichier "caché" .desktop situé dans votre home directory. Le fichier .desktop contenu dans le home directory de chaque utilisateur contient son bureau préféré. Il est facile de le modifier à l'aide d'un simple éditeur. On y écrira l'un des noms d'environnement suivants: gnome, kde, xfce4 ou tout bureau à votre convenance.

Travailler de loin ...


Gérer les archives de fichiers

L'archivage

L'archivage conduit à la recopie fidèle d'une partie de l'arborescence d'un système de fichier.

L'archivage conserve les attributs des fichiers et répertoire avec les permissions d'origine.

La commande pour archiver ou restaurer se nomme "tape archiver" puisque dans bien des systèmes, la sauvegarde se fait sur bande magnétiques (tape) appelées aussi unités de sauvegardes.

syntaxe: tar -cvzf nomDeLArchive nomDesFichiersOuRepertoires

Exemple 7. Archivage d'un répertoire

[jlegrand@localhost:~$ tar -cvzf exosC++.tar.gz ./IG1_C++
IG1_C++/
IG1_C++/01_projetHello/
IG1_C++/01_projetHello/hello.cpp
IG1_C++/01_projetHello/coucou
IG1_C++/01_projetHello/exo1.cpp
IG1_C++/01_projetHello/gpl
...
IG1_C++/04_projetRepetitive/
IG1_C++/04_projetRepetitive/compareIntLong.cpp
IG1_C++/04_projetRepetitive/compareIntLong
IG1_C++/04_projetRepetitive/valeursIntExtremes.cpp
IG1_C++/04_projetRepetitive/valeursIntExtremes
[jlegrand@localhost:~$ ls
exosC++.tar.gz 		IG1_C++		Bureau		Image
[jlegrand@localhost:~$

Le ls nous montre que l'archive: exosC++.tar.gz a bien été créée.

Travail à faire : A l'aide de la commande man, déterminer à quoi correspondent les options c v z f.

Travail à faire : Exéxutez la commande présentée en exemple ci-dessus.

La restauration d'une archive

Restaurer une archive consiste à extraire les répertoires et fichiers d'origine qu'elle contient.

Syntaxe: tar -xvzf nomDeLArchive

Dans l'exemple suivant, on supprime le répertoire précédemment archivé, puis on restaure la sauvegarde

Exemple 8. Restauration d'une archive

[jlegrand@localhost:~$ rm -Rf IG1_C++
[jlegrand@localhost:~$ ls
exosC++.tar.gz 		Bureau		Image
[jlegrand@localhost:~$ tar -xvzf exosC++.tar.gz
IG1_C++/
IG1_C++/01_projetHello/
IG1_C++/01_projetHello/hello.cpp
IG1_C++/01_projetHello/coucou
IG1_C++/01_projetHello/exo1.cpp
IG1_C++/01_projetHello/gpl
...
IG1_C++/04_projetRepetitive/
IG1_C++/04_projetRepetitive/compareIntLong.cpp
IG1_C++/04_projetRepetitive/compareIntLong
IG1_C++/04_projetRepetitive/valeursIntExtremes.cpp
IG1_C++/04_projetRepetitive/valeursIntExtremes
[jlegrand@localhost:~$ ls
exosC++.tar.gz 		IG1_C++		Bureau		Image
[jlegrand@localhost:~$

On voit qu'après restauration, on retrouve le système de fichier dans l'état ou il était lors de la sauvegarde.

Travail à faire :

  • Renommez le dossier IG1_C++ en IG1_C+++.
  • Restaurez l'archive exosC++.tar.gz en vous placant à la recine de votre dossier personnel. Que constatez-vous ?

Exercices sur la sauvegarde, restauration

Archivage/restauration

  1. Créez une archive exosRepetitives.tar.gz de votre dossier IG1_C++/04_projetRepetitive.
  2. Déplacer l'archive obtenue dans ~/sauvegardes/ répertoire que vous aurez préalablement créé.
  3. Placez-vous dans ce répertoire et décompressez l'archive.
  4. Qu'est-ce qui a été exactement restauré ?

Sauvegarde de windows

  1. comment sauvegarder windows ?
    1. cd /mnt
    2. tar -cvzf sauvWindows.tar.gz windows
  2. comment restaurer windows ?
    1. Effacement récursif de /mnt/windows
    2. cd /mnt/
    3. tar -xvzf sauvWindows.tar.gz

Se connecter à distance en réseau local

Pour travailler sur un ordinateur distant on utilise le protocole ssh qui établi un tunnel crypté entre les deux machines. Le cryptage consiste à transformer l'information qui circule de façon à ce que seuls l'emetteur et le destinataire puissent la comprendre. Le cryptage assure la confidentialité et l'intégrité de l'information.

Obtention d'un terminal en mode texte: ssh <adresseDuServeur>. Le login utilisé sur l'ordinateur distant est alors le même que le login local.

Obtention d'un terminal en mode texte avec précision du login distant : ssh <loginDistant>@<adresseDuServeur>.

Si c'est la première fois que la connexion est établie entre les deux machines, il faut acceptée la clé de cryptage asymétrique RSA proposée.

Bien entendu, à chaque connexion, il faut saisir son mot de passe.

Comme il est possible de se perdre, c'est-à-dire de ne plus savoir sur quel poste on est en train de travailler, la commande hostname nous affiche le nom de la machine sur laquelle le shell est lancé. De même, quand on est vraiment perdu la commande whoami nous indique notre login.

Pour fermer une session SSH, tapez exit.

Travail à faire :

  • Ouvrez une session ssh sur sirac,
  • vérifiez par une commande que vous êtes bien sur sirac,
  • vérifiez par une commande que vous êtes bien sous le bon login,
  • créez le dossier s3IG1 dans votre répertoire personnel.
  • Fermez votre session SSH.
  • Vérifiez par une commande que vous êtes bien en local,
  • vérifiez par une commande que vous êtes bien sous le bon login.

Se connecter à distance par Internet

Pour travailler sur un ordinateur au lycée alors que vous êtes chez vous, on utilise également le protocole ssh.

Obtention d'un terminal en mode texte : ssh <loginDistant>@<adresseDuServeur>. Les conditions d'utilsiation sont les mêmes qu'en réseau local, si ce n'est qu'il faut donner une adresse stable pour le serveur. Soit une adresse IP, si elle est fixe et que vous la connaissez, soit un nom de domaine qui pointe sur le serveur. Pour notre section, il est conseillé d'utiliser l'adresse www.btsinfogap.org, qui est l'URL de bigserv aux yeux d'Internet.

Il est également possible dans notre section de se connecter directement sur sirac ou sialouze depuis Internet, même si ces serveurs l'ont pas d'adresse publique. C'est le firewall de bigserv qui va s'occuper de leur envoyer les paquets SSH qui leur sont destinés. Ainsi, pour se connecter en SSH sur sialouze ou sirac, il faut ajouter respectivement l'option -p 2022 et -p 2222 à la commande de connexion SSH.

Travail à faire depuis chez vous :

  • Ouvrez une session ssh sur sirac,
  • vérifiez par une commande que vous êtes bien sur sirac,
  • vérifiez par une commande que vous êtes bien sous le bon login,
  • vérifier le contenur de votre dossier personnel.
  • Vous pouvez même travailler sur votre serveur web.
  • Fermez votre session SSH.

Transférer des fichiers via un tunnel SSH

Transférer des fichiers vers un serveur SSH

Un outil utilisant le protocole ssh permet de transférer des fichiers entre deux ordinateurs. Cet outil se nomme scp pour Secure CoPy. Il s'utilise ainsi: scp <nomNoeudSource> <loginDistant>@<adresseDuServeur>

Par défaut, le fichier ou le dossier est transféré à la racine de votre répertoire personnel. Il est toutefois possible de préciser où stocker le fichier ou le dossier sur la machine distante ainsi : scp <nomNoeudSource> <loginDistant>@<adresseDuServeur>:<nomNoeudDestination>

Il est possible de transférer toute une arborescence en utilisant l'option récursive -r.

Le trafic résultant de la communication entre les deux machines peut être réduit en compressant l'information avant de la transférer ceci est fait en activant l'option -C lorsqu'on établit le tunnel.

Cette commande fonctionne aussi bien en réseau local que par Internet. Il faut juste choisir la bonne adresse pour le serveur, comme précisé précédemment.

Comme pour SSH, il est possible de transférer des fichiers ou dossiers directement sur sialouze ou sirac, en ajoutant respectivement l'option -P 2022 et -P 2222.

Travail à faire :

  • Transférez le dossier IG1_C++ et ses sous-dossiers sur sirac, dans le dossier s3IG1, créé précédemment.
  • Une fois le transfert effectué, ouvrez une session SSH sur sirac et vérifiez le contenu du dossier s3IG1.
  • Entrez dans le dossier 04_projetRépétitive, compilez rectangle.cpp et exécutez-le.
  • Fermez votre session SSH.

Travail à faire depuis chez vous :

  • Transférez le diaporama de votre exposé (passé ou futur) sur sirac.
  • Une fois le transfert effectué, ouvrez une session SSH sur sirac et vérifiez que tout s'est bien passé.
  • Fermez votre session SSH.

Transférer des fichiers depuis un serveur SSH

scp permet également de rappatrier des ficvhiers ou dossiers depuis une serveur SSH. Il s'utilise ainsi : scp <loginDistant>@<adresseDuServeur>:<nomNoeudSource> <nomNoeudDestination>

Le fonctionnement est similaire au transfert vers le serveur, décrit plus haut.

Travail à faire :
  • Ouvrez une session SSH sur sirac,
  • créez une archive de votre dossier public_html sous le nom coursHTML.tar.gz,
  • puis refermez la session SSH
  • Rappatriez le fichier coursHTML.tar.gz dans votre dossier personnel en local,
  • puis vérifier que cela a fonctionné correctement.

Gestion locale avancée


Gestion des processus

A chaque application lancée correspond au moins un processus.

Un processus porte un numéro PID, a un nom et un propriétaire.

La liste des processus en cours d'exécution peut être obtenue par la commande ps.

Exemple 9. sortie d'un ps

[gthom@localhost tp]$ ps
  PID TTY          TIME CMD
13206 pts/2    00:00:00 bash
15867 pts/2    00:00:01 konqueror
16151 pts/2    00:00:00 ps

			

Lorsque l'on souhaite lister tous ses processus ps -u nomDuUser

Exemple 10. ps -u

jlegrand@localhost:~$ ps -u jlegrand
 PID TTY          TIME CMD
 5165 ?        00:00:05 gconfd-2
 5167 ?        00:00:00 gnome-keyring-d
 5169 ?        00:00:01 x-session-manag
 5224 ?        00:00:00 seahorse-agent
 5228 ?        00:00:00 dbus-daemon
 5229 ?        00:00:08 gnome-settings-
 5233 ?        00:00:16 pulseaudio
 5238 ?        00:00:00 gconf-helper
 5251 ?        00:00:56 gnome-screensav
 5252 ?        00:01:09 metacity
 ...

La commande top donne une vision rafraîchie des processus en cours d'exécution triés par leur taux d'utilisation du processeur.

Lorsque l'on souhaite mettre fin à un processus et que l'on connait son pid on utilise la commande kill pid

Travail à faire : déterminez le pid de firefox et tuez le processus.

Lorsque l'on connait le nom du processus exemple gvim, il est possible de le tuer en le désignant par son nom killall nomDuProcessus

Travail à faire : relancez firefox, puis repérez son nom de processus et tuez-le à partir de ce nom.

Lorsque le processus est récalcitrant et ne peut se tuer tout seul, l'option -9 appliquée aux commandes killall ou kill permet de forcer la disparition du processus.

On peut aussi tuer le processus associé à une application X11 en utilisant xkill on obtient un curseur spécial et il suffit de cliquer sur une des fenêtres de l'application concernée pour mettre fin à cette dernière.

Travail à faire : relancez firefox, puis tuez-le graphiquement.

Lorsqu'on lance depuis un terminal, un exécutable qui boucle ou qui prend trop de temps à s'exécuter, il est possible d'y mettre fin en utilisant la combinaison de touche suivante: ctrl c.

Enfin, il est possible de tuer un serveur X entier en cours de visualisation, dans ce cas, on utilise la combinaison de touches : ctrl alt backspace La touche backspace est la touche effacement de caractère.

Travail à faire : enregistrez tout travail en cours, puis tuez votre serveur X.

Gestion des droits sur les fichiers et répertoires

Généralités

la commande ls -l permet de voir les informations détaillées sur les fichiers et dossiers contenus dans le dossier courant.

Exemple 11. l'affichage des droits et propriétaires : ls -l

julien@ubuntu:~/xml$ ls -l
total 3072
-rw-r--r-- 1 julien julien   12450 2008-09-05 10:58 c++2emeAnnee.xml
-rw-r--r-- 1 julien julien   69158 2009-02-03 20:19 coursc++.html
-rw-r--r-- 1 julien julien   53273 2009-02-03 20:19 coursc++.xml
-rw-r--r-- 1 julien julien   68833 2009-01-20 20:16 coursSystemeLinux.html
-rw-r--r-- 1 julien julien   50691 2009-02-08 16:12 coursSystemeLinux.xml
-rw-r--r-- 1 julien julien 1221462 2009-01-12 09:06 docbook1.68.tar.gz
-rw-r--r-- 1 julien julien   13396 2008-09-27 20:59 docbook.css
-rwxr-xr-x 1 julien julien     403 2008-09-27 14:29 docbook_multi.xsl
-rwxr-xr-x 1 julien julien     331 2008-09-05 10:58 docbook_unique.xsl
drwxr-xr-x 2 julien julien     853 2008-11-09 23:58 evaluations
-rwxr-xr-x 1 julien julien      47 2009-01-12 09:24 parse1
-rwxr-xr-x 1 julien julien      65 2009-01-05 15:11 parse2
-rwxr-xr-x 1 julien julien      53 2008-09-05 10:58 recode
-rwxr-xr-x 1 julien julien      53 2008-09-05 10:58 urecode
-rwxr-xr-x 1 julien julien     647 2008-09-05 10:58 xml2html
							

On constate ici que les informations sur les noeuds (fichiers ou dossiers) sont rangées ainsi :

  • Le premier paquet de données est composé de 10 caractères. Le premier permet de déterminer si le noeud est un dossier "d" ou un fichier "-". Il existe d'autres possibilités, à étudier au besoin. Les 9 suivants déterminent les droits sur le noeud.
  • Le deuxième paquet indique le nombre de liens pointant vers le noeud. Il vaut normalement 1 pour les fichiers et 2 + nombre de sous-dossiers pour les dossiers. Le 2 s'explique par la présence systématiques des noeuds . et .. dans chaque dossier.
  • Le troisième paquet indique le nom du propriétaire du noeud.
  • Le quatrième paquet indique le nom du groupe propriétaire du noeud. Par défaut, il a la même valeur que le propriétaire, mais peut être changé.
  • Le cinquième paquet indique la taille du noeud en octets, sachant qu'un dossier a une taille minimale de 4 Kio.
  • Le sixième paquet indique la date et l'heure de dernière modification du fichier ou la date et l'heure de création du dossier.
  • Le dernier paquet précise le nom du noeud.

Une coloration syntaxique permet de distinguer les fichiers de données, des fichiers exécutables, des dossiers.

Les propriétaires d'un fichier ou dossier

Il peut s'avérer important de modifier le nom du propriétaire ou du groupe propriétaire d'un noeud.

Avertissement

Seul le super-utilisateur peuvent modifier le propriétaire d'un noeud.

Pour modifier le propriétaire d'un noeud, il faut utiliser la commande CHange OWNer : chown <nomNouveauPropriétaire> <nomDuNoeud>

Pour modifier le groupe propriétaire d'un noeud, il faut utiliser la commande CHange GRouP : chgrp <nomNouveauGroupePropriétaire> <nomDuNoeud>

Pour modifier le propriétaire et le groupe propriétaire d'un noeud, il faut utiliser la commande CHange OWNer : chown <nomNouveauPropriétaire>:<nomNouveauGroupePropriétaire> <nomDuNoeud>

Travail à faire :

  • Créez un dossier nommé testOwner dans votre répertoire personnel.
  • Changez son propriétaire pour qu'il devienne root,
  • changez son groupe propriétaire pour qu'il devienne root,
  • changez, en une seule commande, son propriétaire et son groupe propriétaire, pour qu'ils redeviennent administrateur.

Les droits sur les fichiers et dossiers

Généralités sur les droits

Les fichiers ont des permissions visant 3 types d'utilisateurs :

  • celles concernant le propriétaire du fichier ;
  • celles concernant le groupe du propriétaire du fichier ;
  • celles concernant les autres utilisateurs.

Pour chaque type de personnes visées, il y a trois types de droits :

  • r : droit de lecture ;
  • w : droit d'écriture ;
  • x : droit d'exécution.

Ainsi, les droit sont regroupés en 9 caractères représentant successivement les droits du propriétaire, du groupe du propriétaire et des autres utilisateurs. Si un droit est accordé, la lettre correspondant est affichée. Dans le cas contraire, un tiret remplace la lettre correspondant.

Changer les droits sur un noeud

Lorsqu'un fichier est créé dans un dossier, il hérite des droits de ce dossier.

Avertissement

Seuls le propriétaire d'un noeud et le super-utilisateur peuvent modifier les droits sur un noeud.

Pour changer les droits sur un noeud, il faut utiliser la commande CHange acces MODe : chmod <nouveauxDroits> <nomNoeud>

l'option -R permet un changement de droit récursif, c'est-à-dire appliqué à tous les fichiers et sous dossiers du dossier.

Il est possible d'exprimer les nouveaux droits de façon numérique (octale), ou de façon symbolique.

Les droits octaux. Pour exprimer ces droits il faut calculer séparément le code octal des droits de chaque groupe d'utilisateur (propriétaire, groupe et autres) à partir du code binaire de chaque droit. Pour cela, il faut comprendre que l'on associe le 0 à un non droit et le 1 à un droit. En remettant la combinaison binaire correspondant aux droits rwx, on obtient un nombre binaire à 3 chiffres, pouvant facilement être converti en nombre octal.

Travail à faire : Déterminez les droits octaux de chaque combinaison suivante :

  • r--
  • r-x
  • rw-
  • -w-
  • --x
  • rwx

Travail à faire : Dans une console, connectez-vous sur sirac par ssh et

  • créez un dossier nommé partage.
  • créez, dans le dossier partage, un fichier nommé readMe.txt
  • écrivez dans ce fichier la phrase : saurez-vous lire ceci ?
  • créez, toujours dans le dossier partage, un fichier nommé alterMe.txt
  • écrivez dans ce fichier la phrase : saurez-vous modifier ceci ?
  • créez, toujours dans le dossier partage, un fichier nommé modifMe.txt
  • écrivez dans ce fichier la phrase : et ceci, saurez-vous le modifier ?
  • changez les droits sur ce fichier pour obtenir rw-r--rw-.

Dans un second temps, accédez au répertoire d'un caramade pour visiter son dossier echange. Une fois dans le dossier, essayez de :

  • afficher le contenu du fichier readMe.txt.
  • éditer, modifier et enregistrer le contenu du fichier alterMe.txt.
  • éditer, modifier et enregistrer le contenu du fichier modifMe.txt.

Les droits symboliques. Lorque peu de droits doivent changer, il est possible d'exprimer non pas les nouveaux droits, mais seulement ceux qui changent, en exprimant ce changment sous la forme [ugoa][+-][rwx]. il faut donc préciser, dans l'ordre :

  • [ugoa] : à qui s'applique le changement de droit, à User (le propritaire), Groupe (le groupe), Other (les autres utilisateurs) ou all (pour les trois à la fois).
  • [+-] : pour ajouter + ou retirer - le droit.
  • [rwx] : sur le droit lecture r, écriture w ou exécution x.

Travail à faire : Déterminez la commande à appliquer pour passer des droits proposés en premier aux droits proposés en second :

  • rwxr--r-- -> rwxr-xr-x
  • rwxr-xr-x -> rwxrwxr-x
  • rwxr-xr-x -> rwxr-xr--
  • rwxr-xr-- -> rwxr-x---
  • rw-r--r-- -> rwxr-xr-x

Travail à faire : Tous les changements de droits se font avec des droits symboliques. Dans votre console connectée à sirac par ssh

  • supprimez le dossier nommé partage.
  • créez un dossier nommé testDroits.
  • créez, dans le dossier testDroits, un fichier nommé test.txt
  • changez les droits sur ce fichier pour obtenir rwxr--rw-.