Vous êtes sur la page 1sur 17

BTS GENIE INFORMATIQUE - GENIE LOGICIEL

1. ARCHITECTURE
a) Principe de modularite

Comme tout logiciel d'une certaine taille, un système d'exploitation est d'une grande complexité. Tous
les systèmes d'exploitation récents sont en effets constitués d'un grand ensemble de composants qui
interagissent entre eux et qui doivent fonctionner de concert afin d'assurer la bonne marche du système et
répondre aux besoins de l'utilisateur.

Cette complexité implique un grand nombre d'erreurs, d'anomalies et de dysfonctionnements possibles,


ainsi qu'une grande difficulté à en comprendre l'origine. En effet, pour qu'un système informatique
fonctionne correctement, il faut tout prévoir pour donner une action appropriée à tous les événements
possibles, et trouver la cause d'un problème est d'autant plus difficile qu'il y a de composants qui
interviennent dans la fonction défaillante. Cela n'est pas humainement réalisable quand le système devient
trop complexe si l'on n'est pas organisé et qu'on ne connaît pas les grandes lignes de l'architecture du
système.

Pour résoudre ce problème, il est courant de subdiviser les systèmes complexes en composants
indépendants, dont le mauvais fonctionnement potentiel ne peut perturber que partiellement les autres
parties du système. Par ailleurs, ces composants sont regroupés en couches logicielles successives, les
couches supérieures s'appuyant sur les services des couches inférieures. Ainsi, des points de
synchronisation à partir desquels le système peut reprendre un fonctionnement normal après une défaillance
peuvent être définis. Ces points de synchronisation permettent donc d'assurer la viabilité du système, ou du
moins des couches inférieures, même en cas d'erreur inopinée d'un composant dans une couche de plus haut
niveau.

Il va de soi que, lorsqu'un composant se plante, ceux qui l'utilisent risquent de se retrouver dans un état
d'erreur assez difficile à gérer. Cela peut souvent provoquer leur propre perte. Par conséquent, plus un
composant est utilisé, plus il doit être fiable. Autrement dit, les composants des couches inférieures doivent
nécessairement être beaucoup plus fiables que ceux des couches de plus haut niveau, car ils sont utilisés par
tout le reste du système.

Pour quelques systèmes, le découpage fonctionnel est trop grossier, voire inexistant. Il arrive également que
les interactions entre les composants soient trop importantes et impliquent une dépendance entre eux qui
annihile le bénéfice de leur isolation. Dans ces systèmes, une défaillance d'un composant peut donc
entraîner un dysfonctionnement global sévère, et en pratique peut nécessiter jusqu'à un redémarrage de
l'ordinateur. Les systèmes monolithiques et les systèmes dont les composants sont trop interdépendants sont
donc sujets à de nombreux redémarrage, parfois même pour des raisons mineures (modification de la
configuration du système, ajout d'un logiciel, ou même simple erreur d'un logiciel).

Il est d'usage de considérer que Linux est un système monolithique. En effet, toute la gestion du matériel,
ainsi que la gestion de certaines fonctionnalités de haut niveau, est prise en charge au niveau du noyau («
kernel » en anglais). On pourrait donc craindre une faible fiabilité de ce système d'exploitation. Toutefois,
cette vision des choses n'est pas tout à fait juste car, comme on l'a déjà dit, le noyau n'est qu'une partie du
système d'exploitation, et en réalité un système Linux est effectivement constitué de différentes couches
fonctionnelles. De plus, le noyau reste d'une taille raisonable. Pour l'essentiel, il est constitué que d'une base
relativement petite et très bien testée, à laquelle beaucoup de pilotes de périphériques ont été ajoutés. La

Administration des systèmes et réseaux Linux Page 1 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

complexité du noyau reste donc limitée, car les pilotes de périphériques ne sont bien entendus pas tous
utilisés en même temps sur une même machine.

Par ailleurs, le noyau Linux est d'une très, très grande fiabilité, et il n'est pas rare de voir un système Linux
fonctionner plusieurs mois ou années sur des serveurs. Cette grande fiabilité provient du modèle de
développement de Linux, qui est ouvert à tout le monde (chacun peut récupérer, lire, modifier, et compléter
ou corriger le noyau à condition de savoir bien programmer). Ainsi, à partir d'une taille critique en terme de
nombre d'utilisateurs, taille que Linux a atteinte, il existe suffisamment de développeurs pour détecter et
corriger les erreurs. En pratique, dès qu'une erreur est détectée, elle est souvent corrigée dans les jours qui
suivent si la fonctionnalité concernée est effectivement utilisée, ce qui assure au final une très grande
qualité.

b) Les différentes couches logicielles sous Linux

Ainsi, un système Linux est constitué, outre du noyau, d'un certain nombre d'autres couches logicielles, qui
s'appuient les unes sur les autres. Nous allons donc présenter brièvement ces couches ici.

Le noyau se trouve bien évidemment à la base de toutes les autres couches, puisqu'il gère quasiment tout le
matériel (mémoire, disques, systèmes de fichiers, réseau, clavier, etc.). Mais comme il n'est pas exploitable
tel quel (par exemple, il n'est pas capable d'offrir une interface utilisateur permettant de lui donner les
commandes que l'ordinateur doit exécuter) il faut au moins une interface utilisateur.

Cette interface utilisateur, c'est ce qu'on appelle le « shell » (ce qui signifie grosso modo « environnement
utilisateur »). Le shell est capable de lire des commandes saisies au clavier, de les exécuter et d'afficher
leurs résultats à l'écran. En général, les programmes capables de réaliser ces opérations sont appelés des
interpréteurs de commandes. Mais le shell est bien plus que cela, car il peut être programmé, et il peut gérer
les processus (en arrêter un, en lancer un autre, etc.). Bien entendu, il existe plusieurs shells, mais le plus
utilisé sous Linux est le shell bash, qui est développé par la Free Software Foundation et distribué sous
licence GPL.

En fait, les commandes que le shell peut exécuter sont en nombre très réduit. La plupart des commandes
sont donc tout simplement prises en charge par d'autres programmes. Ces programmes, que l'on peut utiliser
directement dans le shell, sont ce que l'on appelle des programmes « en ligne de commande », parce qu'ils
sont propres à être utilisés dans les lignes de commandes que l'on saisit au clavier dans le shell. Ces
programmes sont, encore une fois, développés soit par la Free Software Foundation, soit par des bénévoles,
toujours sous la licence GPL. Toutes ces commandes sont des commandes compatibles Unix, et nous
apprendrons à nous en servir dans le Chapitre 5.

Bien entendu, ces commandes sont absolument essentielles pour pouvoir utiliser le système, mais elles sont
assez rébarbatives et peu d'utilisateurs acceptent de s'en contenter. C'est pour cela qu'une couche graphique
a été développée, pour introduire une interface graphique plus conviviale : XWindow. Encore une fois, cette
couche logicielle est constituée de plusieurs composants, dont la base est le serveur X. Le serveur X est un
programme capable de fournir les services graphiques (d'où le nom de serveur) aux autres applications.
Plusieurs implémentations concurrentes existent. L'une d'elles est particulièrement utilisée sous Linux,
puisqu'elle est libre : X.org. À vrai dire, un serveur X ne fait pas grand chose d'autre que de réaliser des
affichages sous les ordres d'autres programmes. D'autres composants permettent donc d'obtenir des
fonctionnalités de plus haut niveau.

Le gestionnaire de fenêtres (« Window Manager » en anglais) est un de ces composants. Il se place juste
au-dessus du serveur X et prend en charge, comme son nom l'indique, la gestion des fenêtres des

Administration des systèmes et réseaux Linux Page 2 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

applications graphiques sous X. C'est le gestionnaire de fenêtres qui prend en charge la gestion des
décorations des fenêtres de premier niveau (c'est-à-dire des fenêtres principales des programmes). Par
exemple, il s'occupe d'afficher les bords, la barre de titre, les boutons de réduction et de restauration, etc.
des fenêtres. C'est également lui qui s'occupe du positionnement des fenêtres, et qui donc permet à
l'utilisateur de déplacer et de réduire les fenêtres des applications graphiques. L'utilisateur est libre d'utiliser
le gestionnaire de fenêtres qu'il désire, selon ses propres goûts et ses désirs, la différence est souvent une
pure question de style.

Il existe également des environnements graphiques complets qui, en plus de fournir un gestionnaire de
fenêtres, fournissent la plupart des outils classiques que l'on est en droit d'attendre d'un système graphique
moderne. Ainsi, ces environnements comprennent des éditeurs, des outils de configuration, des navigateurs
Internet, des logiciels multimédia... En plus de ces applications, ils fournissent un cadre standard pour les
applications graphiques qui savent communiquer avec eux. Ce cadre permet d'améliorer l'intégration des
diverses applications entre elles, et c'est la raison pour laquelle on appelle souvent ces environnements des
gestionnaires de bureau. KDE et Gnome sont des exemples de tels environnements de travail.

Enfin, au-dessus de toutes ces couches logicielles, on trouve les applications X, qui sont aussi diverses que
variées (traitement de texte, tableurs, logiciels de dessin...). Quelques-unes de ces applications sont
simplement des « front-end » d'applications en ligne de commande, c'est-à-dire des interfaces graphiques
pour des programmes non graphiques. Ce concept permet d'avoir un composant unique réalisant une action,
utilisable en ligne de commande et donc scriptable, et une ou plusieurs interfaces graphiques pour ce
composant. De plus, ce modèle permet de séparer clairement l'interface graphique du traitement qu'elle
permet de réaliser. La stabilité en est d'autant plus accrue.

c) Résumé de l'architecture de Linux


En résumé, un système GNU/Linux est structuré de la manière suivante :
➢ le noyau Linux ;
➢ les programmes en ligne de commande et le shell ;
➢ le serveur XWindow ;
➢ le gestionnaire de fenêtres et le gestionnaire de bureau ;
➢ les applications XWindow.
La figure suivante vous présente comment ces différentes couches logicielles s'agencent les unes par rapport
aux autres.

Cette architecture est, comme on peut le voir, très avantageuse :

Administration des systèmes et réseaux Linux Page 3 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

➢ les systèmes Unix, donc Linux, sont très structurés, donc plus simples à utiliser, à configurer, à
maintenir et à développer ;
➢ ils sont très stables, car les composants de haut niveau n'interfèrent pas sur les composants de bas
niveau ;
➢ ils sont faciles à personnaliser, puisque l'utilisateur a le choix des outils à chaque niveau ;
➢ Linux a de plus la particularité d'être parfaitement modifiable, puisque si l'on sait programmer, on peut
personnaliser les composants du système ou en rajouter à tous les niveaux ;
➢ et il n'est pas propriétaire, c'est-à-dire que l'on n'est pas dépendant d'un éditeur de logiciel pour résoudre
un problème donné.
En bref, c'est la voie de la vérité.

2. ARBORESCENCE

Comme tout système, Linux possède son « architecture » propre, son arborescence de dossiers. Pour
assurer la compatibilité et la portabilité, les systèmes Linux respectent l'unique norme FHS (File Hierarchy
Standard).
Quasiment tous les fichiers de configuration du système sont éditables avec un éditeur de texte (Gedit
sur Gnome, Pluma sur Mate, Mousepad sur Xfce...). Signalons quelques dossiers :

/ => Racine, elle contient les répertoires principaux


/bin => Exécutables essentiels au système, utilisables par tous les utilisateurs (ls pwd cp)
/boot => fichiers permettant à Linux de démarrer
/dev => Point d'entrée de tous les périphériques (disque dur, écran, partition, consoles TTY)
/etc => contient les commandes et fichiers nécessaires à l'administrateur système (XXX.conf, passwd,
inittab, runlevels)
/home => Répertoire personnel des utilisateurs
/lib => contient les bibliothèques partagées essentielles au système lors du démarrage
/lib64 => idem /lib mais pour les 64bits (parfois, on trouvera lib et lib32. Dans ce cas, lib = 64bits et
lib32 = 32bits)
/mnt /media => contient les point de montage des partitions temporaires (clés USB, partitions de
données) , peut s'appeler aussi /media
/opt => Répertoire générique pour l'installation de programmes compilés par l'administrateur (logiciels
spécifiques non présents dans les dépôts)
/proc => n'existe pas physiquement sur un disque, elle est créée par le noyau dans la mémoire. Cette
partition permet de donner des informations sur le système.
/root => Répertoire personnel de l'administrateur (le répertoire de root n'est pas dans /home, car bien
souvent le /home est sur une partition à part. En cas d'échec de montage de /home, root à quand même accès
à son répertoire personnel).
/sbin => Contient les programmes système essentiels utilisables par l'admin uniquement.
/srv => N'est pas présent dans toutes les distributions. C'est un répertoire de données pour divers
services (stockage des documents de comptes FTP, ou pages de sites web)
/tmp => Répertoire fichier temporaires
/usr => Contient des programmes installés (/usr/bin) avec leur librairies (/usr/lib ou /usr/lib64) tels que
firefox, libreoffice, ... quelques programmes réservés à l'admin système (/usr/sbin) et les fichiers de code
source (/usr/src)
/var => contient les données variables (fichiers de log) mais parfois les bases de données
(/var/lib/mysql) et les pages de site web (/var/www/html)

Administration des systèmes et réseaux Linux Page 4 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

Ceci est peut etre une repetition mais, Parmi ces répertoires, plusieurs sont importants, on peut en citer :

/bin/ : Contient toutes les commandes de base nécessaires au démarrage et à l’utilisation d’un système
minimaliste (par exemple : cat, ls, cp, sh).
/sbin : Contient les commandes systèmes réservées aux administrateurs.
/boot : Contient les fichiers nécessaires au démarrage du système d’exploitation.
/dev : Contient des fichiers correspondants à un périphériques (disques , disquettes …).
/etc : Contient la plupart des fichiers de configuration du système.
/home/ : Utilisé pour stocker les répertoires utilisateurs (exemple : /home/user1).
/opt : Utilisé comme emplacement d’installation d’un logiciel utilisé.
/tmp/ : Utilisé pour stocker les fichiers temporaires tout comme /var/tmp et /run/tmp et généralement vidé à
chaque démarrage.

Administration des systèmes et réseaux Linux Page 5 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

Le système, dès son installation, avant même la première connexion au système a créé des users
système.
Un utilisateur n'est donc pas uniquement une personne physique, le système a besoin d'utilisateurs pour sa
gestion interne, notamment comme propriétaire des divers processus.
La commande ps aux | less montre qu'avant toute connexion d'utilisateur humain (repérée par les
lignes login --user), root a lancé init, et la plupart des services, crond, inetd, lpd, smbd, ... , avant de lancer
les connexions utilisateurs dans les consoles, y compris éventuellement la sienne !

1) Gestion des comptes

Créer un compte pour un nouvel utilisateur : Cela signifie lui permettre d'être connu du poste local,
s'y loguer, avoir un accès complet sur son rép. personnel.
Mais aussi dans une configuration réseau, de pouvoir se connecter à son compte par telnet et ftp, et de
pouvoir bénéficier de services réseau de partage distant (sous Linux par NFS et sous Windows 9x par
SMB).

❖ Pour créer l'utilisateur stagex, root passe la commande : sudo useradd stagex Ceci crée :

➢ le répertoire personnel /home/stagex, portant par défaut le nom du compte


➢ une nouvelle entrée dans les 2 fichiers fondamentaux /etc/passwd et /etc/group.
➢ Pour connaitre les options de useradd (indispensable pour gérer les comptes à l'aide de scripts) il
faut consulter le tableau ci dessous:

-u uid pour fixer l'identifiant uid


-g groupe-primaire
fixe l'appartenance de l'utilisateur à une liste
-G liste
de groupes secondaires (séparateur , sans espace)
-s shell par défaut, attribution du shell par défaut bash
-c commentaire
-d rep. personnel par défaut dans le répertoire /home
-e date-expiration fixe la date d'expiration du compte (format MM/JJ/AA)
-m pour créer le répertoire personnel
-k rep-skel recopie le contenu de rep-skel dans le rép. personnel, par défaut /etc/skel

❖ Pour lui attribuer un mot de passe a l’utilisateur stagex: passwd stagex puis saisir 2 fois le mot de
passe desire

❖ Supprimer le compte d'un utilisateur (non connecté), (suppons que nous effacons le compte totox):
userdel [-r] totox ou sudo deluser nom_utilisateur. L'option -r supprime aussi le rép. personnel et les

Administration des systèmes et réseaux Linux Page 6 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

fichiers de l'utilisateur. La commande supprime toute trace de l'utilisateur dans le fichier de


configuration : /etc/passwd y compris dans les groupes d'utiliseurs.

● Modifier le compte de l'utilisateur toto


usermod [options] totox
Les options sont les mêmes que useradd
usermod -G stagiaire,prof stagex ajoute stagex dans les 2 groupes stagiaire et profs (qui doivent
exister)

Remarques

➢ Attention : si root passe la commande passwd il s'apprête à redéfinir son propre mot de passe !
➢ Un utilisateur quelconque ne peut pas créer de compte, même s'il a le privilège de faire partie du
groupe root. A tester !
➢ Par contre, il peut modifier lui-même son mot de passe.
➢ Voir les diverses options avec useradd -h
➢ Pour une gestion sous interface graphique, cherchez des outils tels que linuxconf

Manipulations Sous l'identité de root

1. Créer quelques utilisateurs stagey et totox


2. Effectuer des vérifications : possibilité immédiate de se loguer sous ces comptes, création de leur
rép. personnel dans /home.
3. Essayer de créer un compte déjà existant.
4. Supprimer sans regret le compte de totox. Son rép. personnel a t-il été supprimé ?

2) Les groupes

Un groupe est, aussi pour Linux, un ensemble d'utilisateurs qui partagent les mêmes fichers et
répertoires. Nous verrons que les fichiers accordent des droits d'accès réglables à ces groupes.

Chaque utilisateur doit faire partie au moins d'un groupe, son groupe primaire. Celui-ci est défini au
moment de la création du compte, et par défaut, l'utilisateur appartient à un nouveau groupe créé, portant
son nom. Ainsi, dans /etc/passwd chaque utilisateur possède un groupe par défaut, précisé par son
identifiant gid dans ce fichier.

L'appartenance au groupe primaire n'étant pas exclusive, tout utilisateur peut faire partie de
plusieurs autres groupes, appelés ses groupes secondaires.
Mais le rôle joué par le groupe primaire demeure prépondérant, comme nous le verrons dans le système des
permissions des fichiers.

➢ Pour lister tous les groupes (primaire et secondaires) d'un utilisateur : groups stagex
➢ Pour créer un nouveau groupe: groupadd stagiaire
➢ Supprimer un groupe, au hasard .. encore totox. groupdel totox (Le groupe est supprimé du
fichier /etc/group.)
➢ Pour ajouter un utilisateur à un groupe Le plus simple est d'éditer le fichier /etc/group et d'ajouter une
liste d'utilisateurs (séparés par des virgules) sur la ligne du groupe (ou utiliser Linuxconf).

Administration des systèmes et réseaux Linux Page 7 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

Manipulations
Il s'agit de créer un groupe nommé stagiaire dont les membres sont les comptes stagex. On donnera ensuite
à ce groupe des droits complets sur un répertoire partagé. Comme root :

1. créer le groupe stagiaire : groupadd stagiaire


2. ajouter quelques comptes stagex dans ce groupe
3. vérifier le résultat avec la commande groups

❖ Visite des coulisses

Tout ce qui concerne la gestion et l'authentification des utilisateurs est inscrit dans un seul
fichier /etc/passwd
La gestion des groupes est assurée par /etc/group
Les mots de passe cryptés sont maintenant placés dans /etc/shadow, par sécurité lisible seulement
par root.

❖ Structure de /etc/passwd

Ce fichier comprend 7 champs, séparés par le symbole :

1. nom de connexion
2. ancienne place du mot de passe crypté
3. numéro d'utilisateur uid, sa valeur est le véritable identifiant pour le système Linux; l'uid de root est
0, le système attribut conventionnellement un uid à partir de 500 aux comptes créés.
4. numéro de groupe gid, dans lequel se touve l'utilisateur par défaut; le gid de root est 0, des groupes
d'utilisateurs au delà de 500
5. nom complet, il peut être suivi d'une liste de renseignements personnels (cf chfn)
6. rép. personnel (c'est également le rép. de connexion)
7. shell, interprétateur de commandes (par défaut /bin/bash)

❖ Structure de /etc/group

Ce fichier comprend 4 champs, séparés par le symbole :

1. nom du groupe
2. x pour remplacer un mot de passe non attribué maintenant
3. numéro de groupe, c-à-d l'identifiant gid
4. la liste des membres du groupe

3) Permissions d'accès aux fichiers

Tout fichier du système appartient à la fois à un utilisateur (son "propriétaire") et à un groupe. Ainsi, pour
chaque fichier le monde de ses utilisateurs potentiels est scindé en 3 catégories, nommées :

1. u, l'utilisateur normal, son propriétaire, bien souvent son créateur, qui n'a pas pour autant tous les
droits sur lui !
2. g, son groupe, ensemble d'utilisateurs ayant parfois des "permissions" particulières.
3. o, tous les (others) autres.

Administration des systèmes et réseaux Linux Page 8 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

Attention, l'utilisateur propriétaire et le groupe propriétaire du fichier peuvent être indépendants :

le groupe propriétaire n'est pas forcément le groupe primaire de l'utilisateur propriétaire, et même,
le propriétaire n'est pas forcément membre du groupe ! Mais (heureusement) une règle générale simple
s'applique à la création de tout nouveau fichier (ou rép):

➢ son propriétaire est l'utilisateur (humain ou système) qui l'a créé


➢ son groupe est le groupe primaire de ce même utilisateur

a) Droits d'accès des utilisateurs aux fichiers


i. Généralités
Linux permet de spécifier les droits d'action sur un fichier, que peuvent exercer les utilisateurs des 3
catégories précédentes, ou plutôt les permissions que leurs accordent les fichiers et les répertoires.
Linux a repris les 3 protections d'UNIX sur les fichiers et les répertoires. Leur notation symbolique est :

1. r, lecture
2. w, écriture
3. x, exécution

De façon générale, ces permissions sont consultables complètement par la commande : ls -l. Rappel : ll est
un alias plus court, pour la commande ls -l. Par exemple: ls -l Documents/Doc.docx

-rw-rw-r-- 1 brice brice 28156 May 6 12:52 Doc1.docx

Description globale
On trouve de gauche à droite

le 1er caractère indique la nature du fichier

"-" fichier normal, "d" un fichier répertoire, "l" un lien.

le système de droits est spécifié symboliquement par les 9 attributs suivants, correspondants aux 3
catégories d'utilisateurs du fichier.

...|...|...
u g o

La section u fixe les droits accordés au propriétaire du fichier., La section g fixe les droits accordés
aux utilisateurs faisant partie du groupe auquel appartient le fichier. La section o fixe les droits des
autres utilisateurs.

nombre de liens sur le fichier


1 signifie que le fichier n'a aucun lien qui pointe vers lui, 2 (ou plus) signifiant qu'il existe un lien
(ou plus) vers lui.
le nom du propriétaire du fichier
le nom du groupe propriétaire
la date de dernière modification
le nom complet du fichier

Administration des systèmes et réseaux Linux Page 9 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

ii. Permissions des fichiers normaux


Pour chaque fichier, les utilisateurs sont ainsi séparés en 3 catégories, le propriétaire, les membres du
groupe et tous les autres. Les permissions accordées par le fichier à ces catégories sont complètement
indépendantes mais leur signification est la même. Vis à vis de chacune de ces 3 catégories, on trouve dans
l'ordre :

le droit de lecture , afficher son contenu --> "r" si permis , "-" si refusé
le droit d'écriture , modifier son contenu --> "w" si permis , "-" si refusé
le droit d'exécution , pour un fichier script ou binaire --> "x" si permis , "-" si refusé

Exemples :

Le fichier de démarrage /etc/rc.d/rc.sysinit possède les droits rwx r-x r-x


Tous les utilisateurs ont donc le droit de lire et d'exécuter ce fichier (ce qui est à éviter); seul root
peut le modifier
La table de montage /etc/fstab : rw-r--r-- peut être lue par tous, modifiée uniquement par root

Afficher toutes les infos sur un fichier: La commande stat permet d'obtenir une information plus poussée
sur un fichier. Exemple : stat /etc/passwd

iii. Permissions des répertoires


Pour les fichiers de type répertoire, la signification des attributs est différente de celle d'un fichier normal.
Mais elle est toujours identique pour les 3 catégories d'utilisateurs du répertoire.
La présence d'un tiret "-" signifie toujours l'absence complète de droits

r : lire le contenu, la liste des fichiers ( avec ls ou dir)


w : modifier le contenu : droits de créer et de supprimer des fichiers dans le répertoire (avec cp, mv,
rm)
x : permet d'accéder aux fichiers du répertoire et de s'y déplacer (avec cd).Si on attribue w, il faut
attribuer aussi x sur le répertoire.

Exemples :

Passer les commandes cd / puis ls -l, pour lister les répertoires situés à la racine.

A qui appartienent-ils ? Un user quelconque peut-il y créer des sous-rép. ?


Commenter les 2 cas particuliers /root et /tmp

Attention ! on voit que le droit w est très étendu, et même dangereux quand il est accordé à un groupe, car
un membre du groupe peut supprimer des fichiers dont il n'est pas propriétaire et sur lesquels il n'a même
pas de droit d'écriture !
Remarque: Le droit x sur un répertoire est un préalable indispensable pour qu'un utilisateur (de la catégorie
correspondante au positionnement du x), puisse exercer d'éventuels droits sur les fichiers contenus dans le
répertoire.

Exercice 1

1. Quels sont les droits sur les répertoires personnels (par exemple stagex) ?

Administration des systèmes et réseaux Linux Page 10 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

2. Un utilisateur différent stagey peut-il y pénétrer ou seulement lister ses fichiers ? et totox, le
pourrait-il s'il faisait partie du groupe de stagex ?
3. Quelles commandes devrait écrire stagex pour accorder le droit de visite de son rép. perso seulement
à totox ?

b) Changements des droits


De façon générale, l'utilisateur qui crée un fichier en devient le propriétaire, et le groupe auquel
l'utilisateur appartient (au moment de la création) devient le groupe du fichier.

Remarques préalables

√ Mais les droits accordés au propriétaire, au groupe et aux autres dépendent du processus qui a créé
le fichier et du masque des droits.
√ D'autre part l'administrateur peut être amené à effectuer des changement de propriété (par exemple
pour permettre un travail en groupe) et des changements de droits sur des ensembles de fichiers et
de répertoires , les étendre ou les restreindre.
√ Et root n'est pas soumis à ces restrictions, il a le pouvoir absolu sur ... le système de fichiers. En
contre-partie il peut être considéré comme responsable de tout dysfonctionnement !

i. Changer le propriétaire ou le groupe propriétaire

Changer le propriétaire : chown [-R] nv-user fichiers


Commande réservée au propriétaire actuel des fichiers ou des répertoires (et à root)
L'option -R (récursif) permet d'agir sur l'ensemble des sous-répertoires.
Exemple : chown -R stage4 /home/stage1

Changer le groupe propriétaire: chgrp [-R] nv-groupe fichiers


Ceci doit être effectué par root ou le propriétaire, à condition que celui-ci soit membre du
nouveau groupe. Exemple : chgrp -R stage4 /home/stage1

Changer les 2 en même temps


chown nv-user.nv-groupe fichiers: chown new-user.fichiers
Dans ce cas, en plus, le groupe propriétaire des fichiers est changé pour le groupe primaire du
nouveau propriétaire.

ii. Changer les permissions sur les fichiers

Les droits d'accès peuvent être modifiés par le propriétaire des fichiers ou par root (ou équivalent,
d'uid 0).
La commande chmod (change mode, change le "mode" des fichiers) peut s'écrire de plusieurs
façons équivalentes, sur le modèle : chmod droits fichiers
Le paramètre droits permet de calculer les nouveaux droits d'accès.
Ceux-ci peuvent s'obtenir de façon relative, par ajout (symbole +) ou retrait (-) par rapport aux
droits existants, ou bien de façon absolue, en fixant les nouveaux droits qui remplacent les anciens
(symbole =).

Ajout, retrait ou fixation des permissions


Pour chaque fichier, on désigne par :

Administration des systèmes et réseaux Linux Page 11 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

u, g et o les 3 catégories d'utilisateurs (user, group, other) et de plus par a (=all) tous les utilisateurs.
r,w,x les 3 attributs de chaque fichier, pour chaque catégorie d'utilisateur.
+ - = l'action d'ajouter, de retirer ou de fixer un droit, qui s'applique à chaque catégorie séparément.
les changements, sur le modèle "à quelle(s) catégorie(s), quelle action, quel(s) droit(s)" sont alors
notés symboliquement :
[u g o a] [+ - =] [r w x]
par exemple chmod u+x fichier signifie "ajouter le droit d'exécution au propriétaire du fichier"
on peut regrouper les catégories si on veut exercer la même action :
chmod ug+w fichier "ajouter le droit d'exécution au propriétaire et au groupe"
chmod go-rwx fichier "enlever tous droits d'accès à tous les utilisateurs, sauf au propriétaire"

Notation relative (aux droits existants)

chmod [-R] <action-droits> fichiers


L'option -R (récursif) permet de modifier les permissions de tous les sous-répertoires.
exemple : chmod [-R] go-rwx /home/toto enlève tous les permissions d'accès des fichiers du rép.
personnel de toto (et des sous-rép.), à tous sauf au propriétaire, c'est-à-dire toto.

Notation absolue

Pour chaque groupe, elle permet de fixer les nouveaux droits qui remplacent les anciens. Si une
catégorie n'est pas présente, ses anciens droits s'appliquent.
chmod u=rwx,g=rw,o=r fichiers remplace les permissions précédentes des fichiers, en les fixant
à -rwxrw-r--
Attention : aucun espace dans la liste des droits, pas même autour des éventuelles virgules
chmod u=rwx,g=r fichiers fixe les permissions à -rwxr--??? en ne changeant pas les permissions
précédentes du groupe other
chmod u=rwx,g=r,o= fichiers fixe les permissions à -rwxr-----

iii. Remarque importante


Le "super-utilisateur" root n'est pas soumis aux restrictions des permissions. Une petite expérience :

1. Vérifier que /etc/shadow est inaccessible même en lecture aux utilisateurs


2. Vérifier que ses permissions sont --------- ou 400 en octal, seul le propriétaire root peut lire
3. Root supprime ce droit de lecture : chmod u-r /etc/shadow
Vérifier /etc/shadow
4. Root peut le lire, le copier et le modifier, ce n'est bien sûr pas recommandé, mais root peut tout se
permettre (raison de plus pour ne jamais se connecter root, sans nécessité !)
5. Mais bonne nouvelle, root peut donc retrouver de fichiers appartenant à des utilisateurs ayant
perdu leurs droits d'accès !

[stagex@p00 stagex]$ cp ./bashrc ./bashrc1


[stagex@p00 stagex]$ chmod ugo= ./bashrc1 aucune permission sur le fichier !
[stagex@p00 stagex]$ cat ./bashrc1 bien sûr il est totalement protégé en lecture
[root@p00 stagex]# cat ./bashrc1 mais pas pour root !

iv. Exercices

Exercice 2

Administration des systèmes et réseaux Linux Page 12 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

1. Comparer les permissions de /etc/passwd et /etc/shadow.


Pourquoi a t-on nommé ainsi ce dernier fichier ? stagex peut-il le lire ? et voir sa présence ?
L'examiner pour deviner son rôle.
2. Par précaution, en faire une copie sous le nom shadow.bak dans /home/temp ! vérifier les droits
de /home/temp/shadow.bak
3. Pensez-vous tout de même pouvoir supprimer le fichier précédent ? Concluez !
4. root fait maintenant une copie de shadow chez vous, dans /home/stagex, sous le nom shadow.bak et
vous accorde la propriété de la copie.
a) Comment fait-il ?
b) stagex vérifie le résultat
5. Vous éditez ce fichier avec Midnight Commander, vous le modifiez, par exemple en supprimant des
lignes, et vous faites une mise à jour.
Ecrivez le mode opératoire.
La mise à jour sera t-elle réalisée ? pourquoi ?
6. Pensez vous que stagex puisse supprimer ce fichier ?
Essayez et expliquez !

Exercice 3

1. En tant que stagex, pouvez vous créer le rép. temporaire /home/temp ? essayez ! pourquoi ?
2. Effectuez cette création comme root (pensez à la commande su ).
3. Accorder les permissions maximales sur /home/temp; vérifiez.
4. totox, toujours lui, tout content d'avoir enfin un droit d'écriture, dans /home/temp essaie de copier
les 2 fichiers système /etc/hosts et /etc/passwd dans /home/temp ? y parviendra t-il ? pourquoi ? que
donne [totox@p0x ] ll /home/temp ?
5. totox, essaie maintenant de supprimer ces 2 fichiers de /etc. Réussit-il ?
6. Effrayé à l'idée de se faire pincer par le (ou la) redoutable root, totox veut masquer sa faute tout en
faisant punir stagex à sa place ! Pour cela, il veut que stagex devienne propriétaire du fichier
copié passwd. Comment s'y prend t-il ? Réussit-il ? Et vous comment auriez vous fait ?

c) Notation octale des permissions

Il existe une autre facon d'indiquer les permissions de chaque catégorie, plus simple en utilisant la
numération octale

Voici la table de correspondance entre les 8 chiffres en numérotation octale (base 8) et les 8 valeurs de
droits fichiers.
Par convention la présence d'un droit est noté 1, l'absence 0.

Binaire ----- Droit ----- Octal


000 -------- (---) ------- 0

001 -------- (--x) ------- 1


010 -------- (-w-) ------- 2
011 -------- (-wx) ------- 3
100 -------- (r--) ------- 4
101 -------- (r-x) ------- 5
110 -------- (rw-) ------- 6
111 -------- (rwx) ------- 7

Administration des systèmes et réseaux Linux Page 13 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

Synthèse : notation globale pour les 3 catégories

propriétaire groupe autre


lecture écriture exécution lecture écriture exécution lecture écriture exécution
400 200 100 40 20 10 4 2 1

Pour obtenir les permissions exprimées en octal, il suffit d'ajouter en octal les nombres de la table de
correspondance ci-dessus, pour lesquels les droits sont positionnés.

Exemples

chmod 700 /home/rep-a-moi droits par défaut pour un rép. personnel.


ls -l /home/rep-a-moi
--> drwx------

Les 2 commandes suivantes sont équivalentes :

chmod 764 test


chmod u=rwx,g=rw,o=r testls -l test
-rwxrw-r--

Administration des systèmes et réseaux Linux Page 14 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

Dans les systèmes Linux, tout est fichier, donc, contrairement aux systèmes Windows un fichier Linux
peut être : Un fichier, un périphérique, une partition, un programme en cours d’exécution, un répertoire …
Pour structurer ces fichier, Linux ne dispose pas d’unités C: , D: , E: Linux utilise le standard FHS pour
définir son arborescence. Ce standard propose une structure de répertoires dont chacun possède un rôle
spécifique définit dans FHS (Filesystem Hierarchy Standard)

Chaque utilisateur connecté au système d’exploitation est capable de diriger la machine en exécutant une
commande dans un terminal : la syntaxe d’une commande est de la forme suivante : COMMANDE
OPTIONS ARGUMENTS

La commande étant la commande elle-même, suivie d’une ou plusieurs options facultatives qui servent à
modifier le comportement de la commande tandis que les arguments ,facultatifs aussi, représentent les
objets sur lesquels la commande agit. Un exemple concret peut être : ls -a /home ou ls est la commande qui
permet de lister l’ensemble des fichiers d’un répertoire, en l’occurrence, le répertoire /home et l’option -a
permet d’inclure les fichiers cachés dans le résultat. Voici une liste des commandes les plus populaires et
que vous devriez connaitre lors de la manipulation d’un système Linux :

1. La Commande pwd : Cette commande permet d’afficher l’emplacement ou on se situe actuellement


dans la hiérarchie FHS.
2. La Commande cd Cette commande permet de changer de répertoire courant et de se situer sur un autre
3. La Commande ls Permet de lister les fichiers disponibles dans un répertoire, si appelé sans arguments, ls
liste les fichiers du répertoire courant.
4. La Commande mkdir Cette commande permet de créer un répertoire.
5. La Commande rmdir Cette commande permet de supprimer un répertoire.
6. La Commande touch Cette commande permet de changer la date du dernier accès ou modification d’un
fichier, mais permet également de créer un fichier vide.
7. La Commande cp Cette commande permet de copier un fichier ou un répertoire.
8. La Commande rm Cette commande permet de supprimer un fichier ou un répertoire. Cette commande
est à utiliser avec précaution car avec l’option -f ou -rf, cette commande peut endommager voir supprimer
tout votre système de fichiers de manière irréversible.
9. La Commande mv ette commande sert à renommer ou déplacer un fichier ou un répertoire. Exemple mv
fichier3 /home/Documents cat permet d’afficher le contenu d’un fichier.
10. La Commande echo permet d’afficher une ligne. Exemple echo “Bonjour ”
11. La Commande man permet d’afficher le manuel d’aide de n’importe quelle autre commande
disponible, ex : man ls
12. La Commande find permet de chercher un fichier sous Linux
13. La Commande curl La commande curl permet d’envoyer ou télécharger un fichier accessible sur le
réseau

Synthese
cat f Affiche le contenu d’un fichier
cat f1 f2 >f3 opère une concaténation entre f1(fichier 1) & f2(fichier 2) dans f3(fichier 3)
cd Retour vers le dossier principal
cd / Ramène à la racine, aussi haut que possible
cd + /filename aller vers un dossier

Administration des systèmes et réseaux Linux Page 15 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

cd .. permet de remonter dans l’architecture


cd ../../.. permet de remonter dans l’architecture de 3 niveaux

Change les droits. l’ordre est: utilisateur|groupe|univers (rwxrwxrwx).


chmod ###
(read=1, write=2, execute=4)

clear permet de nettoyer l’écran (utile quand votre putty est rempli de lignes de code!)
compress Compresse un fichier
cp f1 f2 Copie le fichier f1 dans le fichier f2
cp -r D1D2 Copie le dossier D1 et le renomme en D2
ctrl-c Permet de tuer un process
ctrl-d Permet de fermer une fenêtre ouverte
df donne l’utilisation du disque
diff f1 f2 liste les différences entre les fichiers f1 et f2
dig host nom de domaine, IP addresse et alias pour le domaine déterminé.
du montre tous les sous dossiers et leur taille
du -a lists all files and their sizes (in blocks?) in present directory and total directory size (in blocks?)
(takes a long time)
du -s lists overall directory size (in blocks?) (long but clean)
env Montre le réglage de l’environnement courant
find permet de trouver un document dans l’arborescence
ftp pour établir une connexion avec le protocole ftp entre deux machines
gzip permet de zipper un fichier/dossier
gunzip decompress files created by gzip, compress or pack.
ispell f permet de vérifier l’orthographe dans un fichier

kill -9 -1 permet de mettre fin à un processus en cours grâce à son ID

lpq montre la queue d’impression UNIX


lpr pour imprimer un fichier
lpqrm job# supprimer une tâche de la queue d’impression
ls shows listing of files in present directory
ls -a montre tous les fichiers dans le répertoire courant
ls -l montre la liste des fichiers dans le répertoire courant
man command affiche le manuel pour la commande. Voir la méthode RTFM
mkdir D créer un nouveau dossier D
more permet d’afficher le contenu d’un fichier. Pressez Q pour sortir du mode lecture
mv f1 f2 renommer f1 en f2
mv f1D moves the file called f1 to the directory D
passwd permet de changer le mot de passe sur votre machine linux
ping host permet de savoir si le serveur fonctionne et répond.
pwd répertoire courant
ps Commande unix permettant de lister tous les processus en cours
ps -flu montre de façon le détail des processus en cours
pquota montre l’utilisation du disque et ses limites
rlogin permet de se connecter à une autre machine
rm f supprime le fichier f

Administration des systèmes et réseaux Linux Page 16 sur 17


BTS GENIE INFORMATIQUE - GENIE LOGICIEL

rm -i f A afficher en cas de suppression d’un fichier (utilisation avec la commande prompt)


rm dir D supprime le dossier D vide
rm – r D supprime le dossier D et tous ses fichiers
sf tri alphabétiquement le fichier f
talk établit une session e-talk avec user@machinename
tar combine plusieurs fichiers dans un et vice-versa
telnet protocole de communication entre plusieurs machines
uncompress pour décompresser
users montre qui est logué sur l’OS linux
vi commande à saisir pour rentrer dans l’éditeur de texte VI sous linux
who montre qui est actuellement connecté sur le serveur linux
whoami montre le nom utilisateur de la personne connectée
whois domain_name Montre les informations rattachées à un nom de domaine
* alias pour « tous » – idem que le « SELECT * » en SQL
date Montre la date et l’heure sous linux
date -u montre l’heure de Greenwich
. un raccourci représentant l’endroit où vous êtes dans l’arborescence
.. Se déplacer vers le dossier parent
pwd permet d’afficher où l’utilisateur se situe dans l’arborescence
~ abréviation pour le répertoire d’accueil
zip meilleure compression pour les fichiers IBM

Administration des systèmes et réseaux Linux Page 17 sur 17

Vous aimerez peut-être aussi