2006-aujourd'hui (MCF)

Année 2011-2012

Environnement Informatique 1 (PeP1)

Objectifs du thème n°2

Introduction aux fichiers, répertoires et utilisateurs

Ce TP est destiné à vous familiariser avec les fichiers sous l'environnement Unix/Linux et Windows 7. Fortement accès sur la pratique, il aborde la création, la suppression de fichiers, de répertoires et la gestion des utilisateurs. Ce TP est dispensé durant 3 heures, à raison de 1 heure 30 par semaine et par étudiant, durant deux semaines.

Ce TP est réalisé par :
Hélène Renard et Nicolas Ferry
Date de dernière de modification : 11/09/11

Environnement de travail

Top

Durant la partie sous Linux, vous allez utiliser l'interpréteur de commandes à l'aide d'un terminal

Interpréteurs de commandes : outils pour exécuter des commandes tapées par un utilisateur dans un terminal

Appelés « shells » (coquilles) parce qu'ils masquent sous leur surface les détails du système d'exploitation sous-jacent

Les commandes sont tapées dans un terminal en mode texte, constitué par une fenêtre dans un environnement graphique, ou plus rarement par une console sur un écran en texte seul

Les résultats sont aussi affichés sur le terminal. Une sortie graphique n'est pas obligatoire (pour la plupart des commandes la sortie est du texte)

Les interpréteurs de commandes peuvent être programmables : ils fournissent toutes les ressources nécessaire pour l'écriture de programmes complexes (variables, conditions, boucles...)

astuce Une commande informatique est un mot ou une phrase à la syntaxe bien particulière entrée dans un éditeur de ligne de commande (l'invité de commande, par exemple) et donnant l'ordre d'une action à exécuter par l'ordinateur. Une commande Unix peut avoir 0, un nombre fixe ou un nombre variable d'arguments, plus un certain nombre d'options. Une option commence en général par un tiret ( - ) et deux tirets à la suite ( -- ) indiquent la fin des options sur une ligne de commande.
Si vous voulez connaître une date, tapez dans un terminal, la commande date et Linux vous l'indiquera !
La commande cal 2011 vous indique le calendrier de l'année 2011.

Retour sur la gestion de fichiers

Top

Ce qu'est un répertoire

Un répertoire est un objet informatique qui contient des fichiers. Et même les répertoires sont des fichiers, contenant une liste de fichiers et de sous-répertoires.

Imaginez une grande commode qui contient des tiroirs dans lesquels pourraient se trouver des fichiers et d'autres tiroirs ... un répertoire peut donc contenir :

  • des fichiers;
  • d'autres répertoires.

Si l'on reprend notre exemple de la commode, la plus grande entité contenant d'autres entités est la commode : elle ne peut pas se trouver dans un tiroir !

Dans le cas de l'informatique, on appelle cette entité le répertoire racine (appelé parfois tout simplement « racine » en anglais root directory) : il s'agit de l'entité de plus bas niveau, car elle peut contenir des fichiers ou des répertoire mais ne peut pas se trouver elle-même dans un répertoire !

Donc, si nous retournons dans le système bien informatique : le système de fichiers est organisé en une unique arborescence, les répertoires sont les noeuds de l'arborescence, la racine est unique (contrairement à Windows) et notée /, les périphériques sont cachés (contrairement à Windows) et les fichiers sont cités dans les répertoires.

Arborescence : Structure hiérarchisée des répertoires et des sous répertoires sur un disque dur, par exemple. Le tronc étant représenté par la racine du disque et les branches par les répertoires, etc.. Comme dans un arbre il existe plusieurs chemins (sous Linux) pour se rendre de la racine au répertoire voulu.

Racine : Point de départ d'une arborescence.

Périphériques : Une pièce de matériel qui peut effectuer une fonction particulière.

Homedir (HOME) : C'est VOTRE répertoire personnel, i.e. ~/ ou encore /home/mailis/.

Répertoire : Une liste de descriptions de fichiers. Du point de vue du système de fichiers, il est traité comme un fichier dont le contenu est la liste des fichiers référencés. Un répertoire a donc les mêmes types de propriétés qu'un fichier comme le nom, la taille, la date, les droits d'accès et les divers autres attributs. Lorsque d'un répertoire, on veut aller au répertoire parent, celui-ci est désigné par « .. » sur la plupart des systèmes (on tapera donc « cd .. » sous UNIX pour accéder à un répertoire parent).

Chemin : (« path ») Séquence de répertoires imbriqués, avec un fichier ou un répertoire à la fin, séparés par le caractère /

Chemin relatif :       docs/cours/unix.html
Relatif au répertoire courant


Chemin absolu :       /home/john/docs/cours/unix.html
Chemin depuis le répertoire racine du système (/)



Structure arborescente Linux


Les différents types de répertoires basiques et spéciaux

Depuis le début d'Unix, aucune limitation majeure n'est inclut quant à la longueur d'un nom de fichier. Tout caractère (les espaces en particulier) peut être utilisé dans le nom, et les extensions sont facultatives. Les différences de majuscules ou de minuscules constituent des fichiers distincts.

Le répertoire relatif ./

Le répertoire courant. Il est utilisé pour les commandes qui ont un répertoire comme argument. Il est également utilisé parfois pour lancer des commandes dans le répertoire courant (voir plus tard)
Ainsi ./lisezmoi.txt et lisezmoi.txt sont équivalents

Le répertoire relatif ../

Le répertoire parent. Il fait toujours partie du répertoire . (voir ls -a). Il est unique référence au répertoire parent.
L'utilisation la plus courante :

cd ..
Le répertoire absolu ~/

Il n'est pas vraiment un répertoire spécial. Les interpréteurs de commande le remplacent juste par le homedir de l'utilisateur courant et il ne peut pas être utilisé dans la plupart des programmes, car il n'est pas un vrai répertoire (voir la variable HOME)

Le répertoire absolu ~Mailis/

De façon analogue, il est remplacé par les shells par le répertoire utilisateur de l'utilisateur Mailis

astuce Si vous ne savez plus dans quel répertoire vous êtes, tapez la commande pwd et Linux vous l'indiquera !
La commande mkdir sert à créer un répertoire.

Manipulation des répertoires (LINUX)

Nous allons apprendre à « lire » le contenu d'un système de fichiers, ainsi qu'à consulter et comprendre tous les types de fichiers de Linux.

La commande ls (abréviation du mot liste) est prévue à cet effet. Elle affiche les fichiers et les sous-répertoires qui se trouvent dans un répertoire.

Les options de la commande ls
Option Objectif
-a (abréviation de mot « all » : tous) Affiche tous les fichiers en incluant ceux qui commencent par un point (i.e. les fichiers cachés)
-c Affiche la dernière fois où le fichier a été modifié
--color Affiche en couleur suivant le type des éléments
-l (abréviation de mot « long ») Affiche en format long (type, date, taille, propriétaire, permissions)
-R Affiche les contenus des répertoires du répertoire en cours
-S (abréviation de mot « size » : taille) Liste les fichiers par taille (les fichiers les plus gros en premier)
-t (abréviation de mot « temps ») Liste les fichiers selon la date de la dernière modification
-u Liste les fichiers selon la date du dernier accès
-r (abréviation de mot « reserve » : inversé) Affiche les fichiers en ordre inverse

Ces options peuvent être utilisées séparement ou combinées. Par exemple :

-ltr        Format long, les fichiers les plus récents à la fin

Parmi les options de ce tableau, les options -a et -l sont les utilisées. Et la commande ls possède une cinquantaine d'options !

Exercices

Exercice n°0 (pour se mettre en jambe !)

Testez la commande ls en affichant, depuis votre répertoire personnel initial (home directory), la liste de tous vos fichiers et sous-répertoires :

  1. . de cinq façons différentes (faites varier le paramètre de ls)
  2. . sous un format condensé
  3. . sous un format long (donnant le propriétaire, les permissions, la taille, ...)
  4. . en affichant aussi les fichiers cachés (dont le nom commence par un point)
  5. . en colorant le type des fichiers et en ordre inverse
  6. . avec un format long et en affichant les fichiers cachés, mais dans l'ordre alphabétique inverse
  7. . avec un format long et en affichant les fichiers cachés, mais du plus récent au plus ancien
  8. . avec un format long et en affichant les fichiers cachés, mais du plus ancien au plus récent
Comment se déplacer dans les répertoires ?

Pour se déplacer à l'intérieur de l'arborescence, il y a cd qui est une commande intégrée à bash, le shell par défaut sur les systèmes GNU/Linux. Elle s'utilise en lui donnant le répertoire qui doit devenir celui courant pour les actions suivantes.

> cd répertoire

Le répertoire peut être indiqué de manière absolue (par rapport à la racine en commençant le chemin par / ) ou relative (par rapport au répertoire courant). On peut aussi utiliser .. qui désigne le répertoire parent d'un répertoire ou . qui désigne le répertoire courant. Par exemple pour remonter dans l'arborescence, on utilise :

> cd ..

Faites bien attention de séparer par un espace « cd » et « ..», UNIX exige une grande précision dans la syntaxe des commandes. Soumettez la commande au système grâce à la touche « Entrée », évidemment !

Vous êtes maintenant dans le répertoire racine :

[root@mistra /]#

Que contient-il ? Tapez la commande ls, et voyez le résultat, vous devez obtenir quelque chose comme :

bin boot cdrom etc usr var vmlinux

Si certains fichiers ou répertoires manquent, ce n'est pas important.

Déplaçons-nous dans le répertoire qui contient une grande partie des programmes (souvent simplement appelés « binaires ») de linux : /usr/bin : cd /usr/bin. Vous pouvez là aussi obtenir le contenu du répertoire en utilisant la commande ls.

Maintenant allons voir ce que contient le répertoire /etc (aperçu lorsque nous avons listé le répertoire racine /). Nous avons deux possibilités pour nous y rendre : soit nous revenons dans le répertoire racine et nous nous rendons ensuite dans le répertoire etc; soit nous nous rendons immédiatement dans le répertoire /etc :

Méthode n°1 : - cd / (pour se rendre à la racine) puis cd etc

Cette méthode est fastidieuse car elle nécessite de taper deux commandes successives. Nous pouvons utiliser la deuxième méthode pour nous rendre directement dans le répertoire /etc en écrivant le chemin complet dans la commande cd :

Méthode n°2 : cd /etc

Et nous sommes directement dans le répertoire /etc. Dans cette commande nous avons indiqué que pour se rendre dans le répertoire etc, il fallait d'abord se rendre dans le répertoire racine. Pour se faire nous avons placé un / devant etc.

Lorsque l'on ajoute un ~ au lieu d'un chemin à la commande cd, celle-ci nous replace automatiquement dans notre répertoire utilisateur. Si vous êtes en administrateur système la commande par cd ~ vous placera dans le répertoire /root. Dans le cas où je suis (je suis loggé en tant qu'utilisateur delcros) je vais automatiquement me retrouver dans le répertoire de l'utilisateur delcros qui se trouve dans /home/delcros. Les répertoires des utilisateurs sont tous sous /home.

[delcros@mistra bin]$cd ~

Ceci est la méthode orthodoxe, sinon vous pouvez faire simplement :

[delcros@mistra bin]$cd

Et vous reviendrez ainsi dans votre répertoire personnel.

Lors d'une indication de chemin relatif, en plus du répertoire courant, cd regarde dans ceux définis dans la variable d'environnement $CDPATH (Pour connaître cette valeur, il suffit de faire : echo $CDPATH - Nous le verrons plus tard). Cette dernière contient une liste de noms de répertoires séparés par : (deux points). Si par exemple $CDPATH contient "/usr:.", la commande suivante fera de /usr/local le répertoire courant quelque soit le répertoire actuel. (Nous reviendrons plus tard sur ce cas de figure !)

>cd local

À la suite de cd on peut aussi utiliser - (tiret) qui désigne le répertoire précédent. Cela permet de revenir au répertoire précédemment visité. Mais ce ne se fait que sur un seul niveau. Une fois revenu dans le répertoire précédent, - désigne celui d'où on vient.

>cd -

Exercices

Exercice n°1

Où que vous soyez, quel est l'effet de la commande cd sans paramètre ?

Ce qu'est un fichier

Un fichier est une suite d'informations binaires, c'est-à-dire une suite de 0 et de 1. Ce fichier peut être stocké pour garder une trace de ces informations. Un fichier texte est un fichier composé de caractères stockés sous la forme d'octets

Vous n'y comprenez rien ?? C'est normal !

Un fichier est enregistré sur le disque dur sous la forme « nom_du_fichier.ext ». « .ext » représente l'extension c'est un moyen de reconnaître le type de programme avec lequel ce fichier peut être ouvert (attention cela ne garantit pas le type de fichier: lorsque l'on change l'extension on ne change pas le type de fichier!).

Les types de fichiers Linux
Désignation Type Description
- Fichier standard C'est un fichier ordinaire tel qu'un fichier texte ou un programme
b Périphérique bloc L'élément est un pilote (programme de contrôle) pour un support tel qu'un disque dur ou un lecteur de CD-ROM.
c Périphérique caractère L'élément est un pilote (programme de contrôle) pour un matériel qui transmet des données, tel un modem.
d Répertoire C'est l'élément qui contient les fichiers, en référence au dossier d'un système d'exploitation.
l Lien Un élément qui est soit un lien hard, soit un lien soft.
attention Il faut avoir créer un répertoire pour y ranger le fichier !!

Sous Linux, il existe essentiellement trois manières de créer de nouveaux fichiers. La première est la commande touch, la plus simple !

La commande touch.
La commande touch fixe la date de dernière modification du fichier au moment présent. Si le fichier n'existe pas, la commande crée un fichier vide.


L'autre méthode dépend du type de fichier à créer. Si c'est un fichier texte, utilisez un des éditeurs de texte, par exemple Emacs

Avec Emacs
Édition d'un fichier inexistant (Ctrl-x Crtl-f) puis sauvegarde (Ctrl-x Crtl-s) le créer.


Enfin, les fichiers qui ne sont pas du texte brut, sont des documents de texte mis en forme, des fichiers graphiques, des fichiers image, etc. Nous les verrons un peu plus tard dans les thèmes.

La commande cp ou copier des fichiers et des répertoires

La commande cp (abréviation du mot « copy ») copie un fichier existant vers un autre. Elle a deux arguments :

  • le fichier à copier, qui doit exister et pouvoir être lu,
  • le fichier résultat, qui doit être placé dans un répertoire où on a le droit d'écriture (voir le TP3).

Si le fichier existe déjà, alors il est remplacé par un autre nom, par exemple :

>cp    VariableAléatoire     Laplace

Si on met un nom de répertoire comme destination, le fichier copié a le même nom que le fichier à copier.

>cp    VariableAléatoire     khi2/   
>ls khi2/
  VariableAléatoire
ou :
>cd    khi2/
>cp    ../VariableAléatoire     .   
>ls
  VariableAléatoire

C'est la même chose au répertoire près !

La commande cp peut avoir plusieurs arguments :

>cp    -r    VariableAléatoire    khi2/    LoiCauchy    LoiBernoulli    Probabilités/         (cp -r : copie récursive qui prend le répertoire et tout ce qu'il contient, y compris les autres répertoires) En gros, on copie toute la branche d'un arbre, i.e. tout un tiroir !
>ls     Probabilités/
  VariableAléatoire    khi2/    LoiCauchy     LoiBernoulli
ou :
>cd    Probabilités/
>cp    -r    ../VariableAléatoire    ../khi2/    ../LoiCauchy    ../LoiBernoulli    .         (cp -r : copie du répertoire du entier)
>ls
  VariableAléatoire    khi2/    LoiCauchy     LoiBernoulli

En règle générale, la commande cp a 2 ou plus arguments :

  • n-1 premiers sont les noms de fichiers (ou de répertoires) à copier,
  • le dernier est le nom du répertoire où copier
  • les noms sont systématiquement les mêmes.
attention Nous venons de voir que l'utilisation de cp est dangereuse et l'on risque parfois d'effacer des fichiers importants. Les options de cp peuvent vous éviter des situations fâcheuses.
La commande mv ou déplacer, renommer des fichiers et des répertoires

La commande mv (abréviation du mot « move ») déplace un fichier existant ou le renomme. Sous sa forme la plus simple, elle a 2 arguments :

  • le fichier source, qui doit exister et pouvoir être lu et supprimé,
  • le fichier destination, qui doit être dans un répertoire où on a le droit d'écriture.
attention Renommer un fichier, c'est le déplacer !

Si le fichier destination existe déjà, il est remplacé; si les 2 fichiers sont dans le même répertoire, cela revient à en changer le nom (renommer). Et comme pour la commande cp, il peut y avoir n arguments, le dernier étant un répertoire.

Bombe Soyez prudent si vous utilisez le compte root (Nous verrons dans gestion des utilisateurs à la fin du TP). Renommer, déplacer ou supprimer des fichiers système peut entraîner de très sérieux dégâts !
La commande rm ou supprimer des fichiers et des répertoires

Quel que soit votre système d'exploitation, nettoyez de temps en temps le système de fichiers. Si vous ne le faites pas, vous risquez de ne plus avoir d'espace disque disponible. Linux possède deux commandes pour supprimer les fichiers et les répertoires. La première est la commande rm (abréviation du mot « remove »), utilisée sans option et supprimant des fichiers spécifiés.

Les options de la commande rm
Option Description
-f Supprime des éléments sans demander de confirmation
-i Demande confirmation avant de supprimer quoi que ce soit
-r Accède aux sous-répertoires et supprime les éléments qui s'y trouvent
-v Affiche des informations au cours du processus de suppression

Ces options peuvent être utilisées séparement ou combinées.

Bombe La commande rm -rf est peut-être la plus dangereuse des commandes Linux, en particulier si vous êtes loggé sous root. Les fichiers supprimés ne pourraont pas être restaurés !

Pour supprimer des répertoires, vous utilisez la commande rmdir qui se contente de supprimer les répertoires vides. De nombreux utilisateurs préfèrent utiliser une combinaison de commandes rm pour supprimer les fichiers, puis la commande rmdir pour supprimer les répertoires, les erreurs étant ainsi moindres.

Bombe Si vous tapez rm -rf * vous supprimez sans confirmation tout ce que se trouve à l'intérieur de ce répertoire, y compris les sous-répertoires et leur contenu. C'est une commande très dangereuse lorsqu'elle est exécutée sous root, elle risque de générer des dégâts irréversibles !
Réferences à plusieurs fichiers - Caractères génériques

Beaucoup de commandes acceptent une liste de fichiers dont les noms sont séparés par des espaces et constituent autant d'arguments.
Le shell fournit une notation pour citer plusieurs fichiers à la fois :

  • le joker « * » représente une chaîne quelconque, éventuellement vide,
    *.c       doc*unix.html
  • le joker « ? » dénote un caractère quelconque,
    ?nix       *.s??
  • les caractères « . » (en début de nom de fichier) et « / » ne peuvent pas être reconnus par un joker.
  • [...] représente un caractère appartenant à un ensemble
    .[^co]       [^[:upper:]]*
  • [^...] dénote un caractère n'appartenant pas à un ensemble
    [Uu]nix       *.sx[ci]

La notation « ~nom d'utilisateur » désigne le répertoire personnel de l'uitilsateur cité. Par exemple :

~/Mailis >

La notation « ~ » représente le répertoire personnel de l'utilisateur courant. Par exemple :

~ >
astuce Le shell possède la carctéristique de terminer les noms de fichiers à votre place. Si vous écrivezun nom de fichier long sur la ligne de commandes, entrez les premières lettres, puis appuyez sur la touche Tab, le shell le reste ! C'est pareil pour les commandes.

(http://deptinfo.unice.fr/~guingne/L1MI-SI/cours-chap02.pdf) et (http://www.c-sait.net/cours/fichiers.php)

Exercices

Exercice n°2

Dans votre répertoire courant, créez en une commande les fichiers suivants :
annee1   Annee2   annee4   annee45   annee41   annee510   annee_saucisse   banane

Exercice n°3

Créer le répertoire Year dans votre répertoire courant, en une commande déplacez les fichiers précédemment créés dans le répertoire Year.

Exercice n°4

  1. Créez un répertoire system sous votre répertoire de travail linux, puis un répertoire tp1 sous system
  2. Effacez le répertoire system avec la commande rmdir. Que constatez-vous ?
  3. Après avoir effacé les répertoires tp1 et system, créez à l'aide d'une seule commande les répertoires system, system/tp1, system/tp2
  4. Renommez le répertoire system en test
  5. Copiez un fichier de votre choix du répertoire /bin dans le répertoire test/tp1 :
    1. depuis le répertoire /bin
    2. depuis le répertoire test/tp1
    3. depuis votre homedir, en utilisant des chemins absolus
    4. depuis votre homedir, en utilisant des chemins relatifs
  6. Effacez à l'aide d'une seule commande les répertoires test/tp1 et test/tp2

Exercice n°5

  1. Combien y a-t-il de noms de répertoires dans la racine ?
  2. Désignez ses propes fichiers :
    • par un chemin relatif;
    • par un chemin absolu.
  3. Désignez un fichier qui ne vous appartient pas.
  4. Essayez de livrer un de vos fichiers à un autre utilistateur.

Exercice n°6

Dans votre répertoire d'accueil (/home/user par exemple), créez l'aborescence suivante, en n'utilisant que des chemins relatifs :
Une arborescence dans un exo
puis, vérifiez.

Exercice n°7

Comment déplacer toute l'arborescence rep3 sous le répertoire rep2 ? Supprimez tout sauf rep1, fich11 et fich12.

Exercice n°8

Copier les fichiers dont l'avant dernier caractère est un 4 ou 1 dans le répertoire /tmp en une seule commande.

(http://www.funix.org/fr/unix/exercices.htm) et le livre « Linux pour les nuls »

Gestion des utilisateurs (LINUX)

Top

Super-utilisateur

Linux est un système multi-utilisateurs (plusieurs utilisateurs peuvent travailler sur la même machine) sécurisé,  chaque utilisateur, pour travailler, doit s'identifier. Ses fichiers lui appartiennent et il peut en autoriser ou en interdire l'accès aux autres utilisateurs. Il existe un utilisateur spécial pour administrer un système unix appelé : administrateur, root ou encore super-utilisateur. Contrairement aux utilisateurs classiques ce compte à tous les doits sur le système. Il peut entre autre lire ou modifier tout fichier du système, ajouter/retirer des utilisateurs, installer de nouveaux logiciels ... On préfère donc utiliser ce compte utilisateur ponctuellement. Pour ce faire, on utilise la commande sudo.

attention Pensez à ne pas utiliser le même mot de passe pour le super utilisateur et les autres utilisateurs.

sudo (Substitute User DO) est une commande permettant à n'importe quel utilisateur d'exécuter des commandes qui ne peuvent être utilisée que par le super-utilisateur. Elle s'utilise comme suit :

sudo commande
puis tapez votre mot de passe utilisateur

Sous Ubuntu le principe de gestion des super-utilisateurs est le suivant. À l'aide du fichier de configuration /etc/sudoers on peut accorder à des utilisateurs le droit d'effectuer des tâches en tant que super-utilisateur (donc d'utiliser la commande sudo).

bombe On pourrait être tenté d'utiliser le super utilisateur au quotidien, afin de ne pas avoir à changer d'utilisateur lorsqu'il faut reconfigurer le système. Il ne faut pas faire cela !!!
En effet, avec le super utilisateur, une mauvaise manipulation peut causer la perte irrémédiable de vos données !

Utilisateur

Le fichier /etc/passwd contient toutes les informations relatives aux utilisateurs (login, mots de passe crypté, ...). C'est ce fichier que le système consulte lorsque vous vous connectez à votre compte en tapant votre mot de passe et identifiant. Si ce que vous avez tapé n'existe pas dans ce fichier alors vous ne pourrez pas vous connecter. Ce fichier respecte le format suivant :

nom_du_compte : mot_de_passe : numero_utilisateur : numero_de_groupe : commentaire : répertoire : programme_de_demarrage

·                    nom du compte = identifiant de l'utilisateur de l'utilisateur

·                    mot de passe = mot de passe de l'utilisateur. Celui-ci est codé, il est inutile de l'éditer tel quel. Un bon mot de passe doit être long, dénué de sens, et doit contenir des caractères (majuscule et minuscule), chiffres et caractères spéciaux.

·                    Numéro utilisateur = un entier qui identifie l'utilisateur pour le système. Cet identifiant est unique. Les valeurs supérieures à 100 sont pour les comptes utilisateurs. Il est appelé UID (User Identifier).

·                    Numéro de groupe   = un entier qui identifie le groupe de l'utilisateur. C'est un identifiant unique appelé GID (Groupe Identifier).

·                    Commentaire = des informations sur l'utilisateur

·                    Répertoire = le répertoire dans lequel se retrouve l'utilisateur après s'être connecté.

·                    Commande = la commande exécutée après connexion au système

Il pourrait ressembler à ceci :

root:x:0:0:root:/root:/bin/bash
nobody:x:99:99:Nobody:/:/sbin/nologin
tian:x:500:100:Tian:/home/tian:/bin/bash
tv:x:501:100:Television:/home/tv:/bin/bash

Pour interdire l'accès à un compte, il suffit de remplacer le mot de passe chiffré par une étoile : "*". Les accès à un compte peuvent éventuellement être ouverts en laissant le champ mot_de_passe vide. Toute personne voulant se connecter avec ce compte pourra alors le faire.

Le super-utilisateur lorsqu'il souhaite créer un nouveau compte utilisateur peut utiliser soit l'interface graphique (menu système->administration->Utilisateurs et groupes) de son système soit la commande :

useradd nom-utilisateur

Biensur il faut également créer le homedir de l'utilisateur pour ce faire on utilise l'option -m

useradd -m nom-utilisateur

Cette dernière créée :

·                    le répertoire personnel /home/nom-utilisateur

·                    la modification du fichier /etc/passwd

 

Pour attribuer un mot de passe à ce nouvel utilisateur le super-utilisateur peut utiliser la commande suivante :

passwd nom-utilisateur

Exercices

Exercice n°9

Créez un nouvel utilisateur ayant pour nom votre login polytech et attribuez-lui un mot de passe via l'interface graphique.

Exercice n°10

Allez vérifier le contenu du fichier /etc/passwd.

Exercice n°11

Créez un nouvel utilisateur Eve avec les commandes useradd et passwd.

Quel est le type de codage utilisé par cette commande ?

Groupes

Le fichier /etc/group contient la liste des utilisateurs appartenant aux différents groupes. En effet, lorsque de nombreux utilisateurs peuvent avoir accès au système, ceux-ci sont fréquemment rassemblés en différents groupes ayant chacun leurs propres droits d'accès aux fichiers et aux répertoires. Les entrées dans ce fichier /etc/group ont la syntaxe suivante :

nom_de_groupe : champ_special : numero_de_groupe : membre1, membre2


Le champ spécial est fréquemment vide.
Le numéro de groupe est le numéro qui fait le lien entre les fichiers /etc/group et
/etc/passwd.

Un même utilisateur peut apparaître dans plusieurs groupes. Lorsqu'il se connecte au système, il appartient au groupe spécifié dans le fichier /etc/passwd (le champ GID). Il peut en changer à l'aide de la commande :

newgrp

Pour ajouter un groupe, l'administrateur peut modifier le fichier /etc/group à l'aide d'un éditeur de texte. Il peut également utiliser la commande

addgroup ou groupadd (pas toujours présentes)

Dans le premier cas, il aura uniquement là où les lignes correspondant aux groupes, à ajouter. Pour ajouter un utilisateur à un groupe, il suffit d'éditer le fichier /etc/group et de rajouter ce nom au bout de la ligne en séparant le nom des membres par une virgule.

Pour supprimer un groupe, il suffit d'éditer le fichier /etc/group et d'effacer la ligne correspondante. Mais attention, il ne faut pas oublier de changer dans le fichier /etc/passwd les numéros (GID) du groupe supprimé

Pour plus d'infos : http://www.commentcamarche.net/contents/linux/linusr.php3

attention Pour que l'ajout soit pris en compte, l'utilisateur doit se déconnecter puis se reconnecter :
  • S'il utilise une session graphique, il doit la quitter et se reconnecter.
  • S'il utilise une connexion ssh ou un terminal, il doit quitter sa connexion ssh ou son terminal et se reconnecter.

Exercices

Exercice n°12

Ajoutez l'utilisateur ayant votre nom de login Polytech à votre groupe.

Exercice n°13

Créez un nouveau groupe et ajoutez-y eve (pour éditez les fichiers /etc/passwd ou /etc/group utilisez sudo emacs nom_du_fichier).

 

La personnalisation du shell

Il est possible à partir du Shell de modifier l'interpréteur de commandes.

Pour ce faire, il faut utiliser la commande chsh.

astuce La commande chsh est invoquée pour changer le shell qui est appelé lors de la connexion de l'utilisateur. Si aucun shell n'est mentionné sur la ligne de commande, chsh va en réclamer un.

Par exemple :
chsh -s /usr/local/bin/bash

Linux cherche alors dans le fichier /etc/shells le programme que vous avez spécifié. Seules les commandes présentes dans ce fichier seront acceptées et remplaceront la valeur actuelle du champ programme_de_demarrage. Ces restrictions ne s'appliquent pas au compte du superutilisateur.

Assurez-vous que les droits d'accès du fichier /etc/shells sont les mêmes que pour le fichier /etc/passwd.

Le fichier /etc/profile permet de configurer le Shell. Il concerne tous les utilisateurs.

On y trouve tout d'abord les variables du Shell telles que OPENWINHOME, PATH, ... le type de terminal et la variable TERM. Une partie est consacrée au prompt du Shell, enfin une dernière permet la définition des couleurs de la commande ls ...

Si l'administrateur veut avoir un prompt qui se nomme : "Bonjour#", il lui suffit alors d'éditer le fichier /etc/profile. Celui-ci contient une variable appelée PS1. Toutes les lignes concernant cette variable doivent alors être précédées d'un dièze: #. Il s'agit alors d'ajouter la ligne PS1='Bonjour#'.

Il ne reste plus qu'à sauvegarder et se relogger. On peut alors apercevoir quelques changements.

astuce Laisser un blanc après le prompt pour une meilleure lisibilité.

Il est également possible d'utiliser des variables dans le prompt (pour afficher par exemple l'heure ou le nom de la machine...) :

\d     pour ajouter la date (format anglais)
\t     pour ajouter l'heure (hh:mm:ss)
\u     pour ajouter le nom de l'utilisateur
\r     pour un retour à la ligne
\w     pour ajouter le chemin complet du répertoire courant
\W     pour ajouter le répertoire courant
\h     pour ajouter le nom de la machine

La couleur peut également être changée. Pour ceci, il faut utiliser la variable PS1 comme ceci :

PS1='\[\033[num_couleurm]prompt_voulu\033[0m]'

Le numéro de la couleur sera pris dans la liste suivante :

Noir 0;30 Rouge 0;31
Vert 0;32 Brun 0;33
Violet 0;35 Cyan 0;36
Gris Clair 0;37 Gris 1;30
Rose 1;31 Vert Clair 1;32
Brun Clair 1;33 Bleu Clair 1;34
Violet Clair  1;35 Blanc 1;37
Bleu 0;34 Cyan Clair  1;36

Voici un exemple qui indique l'heure suivie du nom de l'utilisateur en rouge :

PS1='\t \[\033[0;31m]\u\033[0m]'

Au démarrage de Linux, il est agréable d'avoir le pavé numérique allumé, ce qui n'est pas le cas par défaut.

Il y a donc quelques lignes à rajouter au fichier /etc/profile qui sont :

INITTY=/dev/tty[1-7]
for tty in $INITTY;
do setleds -D +num < $tty
done

Lors de la connexion au Shell, la première chose qui apparaît est le prompt, celui-ci peut être configuré au gré de l'utilisateur.

Pour plus d'infos : http://www.commentcamarche.net/contents/linux/linusr.php3

Exercices

Exercice n°14

Configuez votre shell à la couleur que vous souhaitez quand que ça reste lisible ! (ne mettez pas du noir sur noir ou blanc sur blanc !)

Synthèse d'exercices pour les fichiers et les répertoires

Exercice A

Déterminez les commandes permettant de réaliser les actions suivantes :

  • Déterminer le répertoire par défaut dans la hiérarchie des répertoires ?
  • Y a t-il des fichiers, des répertoires dans ce répertoire?
  • Entrer du texte dans un fichier nommé « Mon_fichier » que vous avez créé au préalable.
  • Lister le contenu de « Mon_fichier ».
  • Lister le répertoire courant.
  • Lister les répertoires /bin et /dev.
  • Créer sous votre répertoire deux sous-répertoires : « Source » et « Data ».
  • Se positionner sous « Source ».
  • Listez le répertoire courant.
  • Revenir sous le répertoire de départ et détruire « Source ».
  • Créer un deuxième fichier nommé « Mon_fichier_2 ».
  • Copier chaque fichier en nom_de_fichier.old.
  • Créer un répertoire « Old ».
  • Déplacer les fichiers avec l'extension old vers le répertoire « Old ».
  • Copiez les fichiers sans extension dans le repertoire « Data ».
  • Effacer tous les fichiers crées.

Exercice B

Exploration de l'arborescence Linux.

ls, cp, mv, rm, cd, pwd, mkdir, rmdir

  • Indiquez par une commande dans quel répertoire vous vous trouvez.
  • Allez dans le répertoire /usr/share/doc, puis vérifiez le chemin de votre répertoire courant.
  • Remonter dans le répertoire parent puis vérifier.
  • Allez dans votre répertoire personnel sans taper son chemin.
  • Retournez dans votre répertoire précédent sans taper son chemin.
  • Retourner dans votre répertoire personnel et listez les fichiers présents.
  • Listez maintenant tout les fichiers (même ceux cachés).
  • Affichez de façon détaillée le contenu du répertoire /usr sans changer le répertoire de travail.
  • Affichez l'arborescence de fichiers contenue dans /var sans changer le répertoire de travail.
  • Affichez de façon détaillée le contenu du répertoire /var/log en classant les fichier du plus vieux au plus récent.

Exercice C

Répertoires et consultation de fichiers.

  • Allez dans votre répertoire personnel.
  • Créez un répertoire portant le nom de CommandesLinux.
  • Allez dans votre répertoire CommandesLinux.
  • Créez l'arborescence cours1/cours2/cours3/cours4.
  • Listez le contenu du répertoire courant de façon récursive.
  • Supprimez le répertoire cours1. Est-ce possible ?
  • Supprimez l'arborescence de répertoire cours1/cours2/cours3/cours4, puis vérifiez en listant le répertoire de façon récursive.
  • Allez dans le dossier CommandesLinux et créez les répertoires suivants :
Code :
.
 |--couleur
 |  `--froide
 `--forme
    |--angle
    `--courbe
  • Copiez le fichier /etc/services dans votre répertoire CommandesLinux.
  • À qui appartient le fichier que vous venez de copier ? Quelle est sa date de sa dernière modification ?
  • Créez les fichiers ne contenant aucune donnée et dont les noms sont les suivants :
    rond.txt, triangle.txt, carre.txt, rectangle.txt, vert.txt et bleu.txt
  • Déplacez le fichier rond.txt dans le répertoire courbe et les fichiers triangle.txt, carré.txt, rectangle.txt dans le répertoire angle.
  • Déplacez les fichiers vert.txt et bleu.txt dans le répertoire froide.
  • Allez dans le répertoire couleur et afficher le contenu du répertoire de façon récursive.
  • Copier le répertoire sous le nom chaude. Est-ce possible ? Comment ?
  • Allez dans le répertoire chaude et renommez le fichier bleu.txt en rouge.txt et vert.txt en jaune.txt.
  • Remontez dans le répertoire CommandesLinux et renommez le répertoire couleur en peinture. Est-il besoin de spécifier une option particulière à la commande mv.
  • Listez la totalité de l'arborescence contenue dans le répertoire CommandeLinux.
  • Affichez le contenu du fichier /etc/issue. Que contient-il ?

Synthèse d'exercices pour la gestion des utilisateurs

Exercice D

Gestion des comptes

Sous l'identité de root :

  • Créez quelques utilisateurs stagey et totox
  • Effectuez des vérifications : possibilité immédiate de se loguer sous ces comptes, création de leur rép. personnel dans /home.
  • Essayez de créer un compte déjà existant.
  • Supprimez sans regret le compte de totox. Son répertoire personnel a t-il été supprimé ?

Exercice E

Les groupes

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 :

  • Créez le groupe stagiaire :
    groupadd stagiaire
  • Ajoutez quelques comptes stagex dans ce groupe.
  • Vérifiez le résultat avec la commande groups.