Linux introduction/fr: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
(Created page with "Les 10 caractères au début de chaque ligne indiquent les permissions. Le premier caractère indique le type de fichier : * <tt>-</tt> : un fichier normal * <tt>d</tt> : un r...")
(Created page with "SHARCNET offre un tutoriel de formation autonome; cliquez sur [https://training.sharcnet.ca/courses/enrol/index.php?id=182 Introduction to the Shell].")
 
(72 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages />
<languages />
Cet article s'adresse aux utilisateurs de systèmes Windows ou Mac ayant peu ou pas d'expérience sous environnement UNIX. Il devrait vous donner les bases nécessaires pour accéder aux serveurs de calcul et être rapidement capable de les utiliser.  
Cet article s'adresse aux utilisateurs de systèmes Windows ou Mac ayant peu ou pas d'expérience dans un environnement UNIX. Il devrait vous donner les bases nécessaires pour accéder aux serveurs de calcul et être rapidement capable de les utiliser.  


La connexion aux serveurs utilise le protocole SSH en mode texte. Vous ne disposez pas d'une interface graphique, mais d'une ''console''.  Notez que les exécutables Windows ne fonctionnent pas sur nos serveurs, à moins d'utiliser un émulateur.
La connexion aux serveurs utilise le protocole [[SSH/fr|SSH]] en mode texte. Vous ne disposez pas d'une interface graphique, mais d'une <b>console</b>.  Notez que les exécutables Windows ne fonctionnent pas sur nos serveurs sans l'utilisation d'un émulateur.
 
SHARCNET offre un tutoriel de formation autonome; cliquez sur [https://training.sharcnet.ca/courses/enrol/index.php?id=182 Introduction to the Shell].


== Obtenir de l'aide ==
== Obtenir de l'aide ==
En général, les commandes sont documentées dans les manuels de référence disponibles sur les serveurs. Vous pouvez y accéder à partir du terminal :
En général, les commandes sont documentées dans les manuels de référence disponibles sur les serveurs. Vous pouvez y accéder à partir du terminal avec
{{Commande|man command}}
{{Command|man command}}
<tt>man</tt> utilise <tt>less</tt> (voir section [[#Visualiser et éditer des fichiers|Visualiser et éditer des fichiers]]); il faut appuyer sur <tt>q</tt> pour quitter le programme.
<tt>man</tt> utilise <code>less</code> (voir section [[#Visualiser et éditer des fichiers|Visualiser et éditer des fichiers]]); il faut appuyer sur <code>q</code> pour quitter le programme.
 
Pour trouver des pages de manuel se rapportant à un sujet ou mot-clé, vous pouvez taper :
{{Commande|apropos sujet}}
Par convention, les exécutables contiennent eux-mêmes une aide sur la façon dont ils doivent être utilisés


En général, on invoque cette aide en passant <tt>-h</tt> ou <tt>--help</tt> en argument à la commande et, dans certains cas, <tt>-help</tt>.
Par convention, les exécutables contiennent eux-mêmes de l'aide sur la façon dont ils doivent être utilisés.
De façon générale, vous obtenez l'information avec les arguments en ligne de commande <code>-h</code>, <code>--help</code> ou dans certains cas <code>-help</code>, par exemple
{{Command|ls --help}}


== S'orienter sur le système ==
== S'orienter sur le système ==
Au moment de la connexion, vous serez dirigé dans le répertoire <tt>$HOME</tt> (terme UNIX pour ''dossier'' ou ''répertoire'') de votre compte utilisateur.
Au moment de la connexion, vous serez dirigé dans le répertoire <code>$HOME</code> (terme UNIX pour <i>dossier</i> ou <i>répertoire</i>) de votre compte utilisateur.
Lors de la création d'un compte, le <tt>$HOME</tt> ne contient rien d'autre que des fichiers de configuration qui sont cachés (fichiers préfixés par un « . »).
Lors de la création d'un compte, le <code>$HOME</code> ne contient rien d'autre que des fichiers de configuration qui sont cachés, soit ceux qui sont préfixés par un point (.).


Dans un système Linux, il est fortement déconseillé de créer des fichiers ou répertoires dont les noms contiennent des espaces ou des caractères spéciaux; ces caractères spéciaux incluent les accents.
Dans un système Linux, il est fortement déconseillé de créer des fichiers ou répertoires dont les noms contiennent des espaces ou des caractères spéciaux; ces caractères spéciaux incluent les accents.


=== Lister le contenu d'un répertoire ===
=== Lister le contenu d'un répertoire ===
Pour lister les fichiers d'un répertoire dans un terminal, on utilise la commande <tt>ls</tt> (''list'') :
Pour lister les fichiers d'un répertoire dans un terminal, on utilise la commande <code>ls</code> (<i>list</i>)
{{Commande|ls}}
{{Command|ls}}
Pour inclure les fichiers cachés :
Pour inclure les fichiers cachés
{{Commande|ls -a}}
{{Command|ls -a}}
Pour trier les résultats par date (du plus récent au plus ancien) plutôt qu'en ordre alphabétique :
Pour trier les résultats par date (du plus récent au plus ancien) plutôt qu'en ordre alphabétique
{{Commande|ls -t}}
{{Command|ls -t}}
Pour obtenir des informations détaillées sur les fichiers (permissions d'accès, propriétaire, groupe, taille et date de dernière modification) :
Pour obtenir des informations détaillées sur les fichiers (permissions d'accès, propriétaire, groupe, taille et date de dernière modification)  
{{Commande|ls -l}}
{{Command|ls -l}}
L'option <tt>-h</tt> donne la taille des fichiers dans un format aisément lisible par les humains.
L'option <code>-h</code> donne la taille des fichiers dans un format aisément lisible par les humains.


Les options peuvent être combinées, par exemple :
Les options peuvent être combinées, par exemple
{{Commande|ls -alth}}
{{Command|ls -alth}}


=== Naviguer dans le système de fichiers ===
=== Naviguer dans le système de fichiers ===
Pour se déplacer dans le système de fichiers, on utilise la commande <tt>cd</tt> (''change directory'').
Pour se déplacer dans le système de fichiers, on utilise la commande <code>cd</code> (<i>change directory</i>).


Ainsi, pour se déplacer dans <tt>mon_répertoire</tt>, on tapera :
Ainsi, pour se déplacer dans <code>mon_répertoire</code>, entrez
{{Commande|cd mon_répertoire}}
{{Command|cd mon_répertoire}}
Pour revenir au dossier parent, on tapera :
Pour revenir au dossier parent, entrez
{{Commande|cd ..}}
{{Command|cd ..}}
Enfin, pour revenir à la racine de son compte utilisateur (<tt>$HOME</tt>) :
Enfin, pour revenir à la racine de votre compte utilisateur (<code>$HOME</code>) entrez
{{Commande|cd}}
{{Command|cd}}


=== Créer et supprimer des répertoires ===
=== Créer et supprimer des répertoires ===
Pour créer un répertoire, on utilise la commande <tt>mkdir</tt> (''make directory'') :
Pour créer un répertoire, on utilise la commande <code>mkdir</code> (<i>make directory</i>)
{{Commande|mkdir mon_répertoire}}
{{Command|mkdir mon_répertoire}}
Pour supprimer un répertoire, on utilise la commande <tt>rmdir</tt> (''remove directory'') :
Pour supprimer un répertoire, on utilise la commande <code>rmdir</code> (<i>remove directory</i>)
{{Commande|rmdir mon_répertoire}}
{{Command|rmdir mon_répertoire}}
La suppression d'un répertoire avec cette méthode ne fonctionnera que si celui-ci est vide.
La suppression d'un répertoire avec cette méthode ne fonctionnera que si celui-ci est vide.


=== Supprimer des fichiers ===
=== Supprimer des fichiers ===
On efface des fichiers grâce à la commande <tt>rm</tt> (''remove'') :
On efface des fichiers avec la commande <code>rm</code> (<i>remove</i>)
{{Commande|rm mon_fichier}}
{{Command|rm mon_fichier}}
On peut effacer un répertoire récursivement :
On peut effacer un répertoire récursivement
{{Commande|rm -r mon_répertoire}} TRANSLATOR'S NOTE maybe this command belongs in the previous section on folders??
{{Command|rm -r mon_répertoire}}  
L'option (potentiellement dangereuse!) <tt>-f</tt> peut être utile pour passer outre les demandes de confirmation de suppression et poursuivre l'opération après une erreur.
L'option (potentiellement dangereuse!) <code>-f</code> peut être utile pour passer outre les demandes de confirmation de suppression et poursuivre l'opération après une erreur.


=== Copier et renommer des fichiers ou répertoires ===
=== Copier et renommer des fichiers ou répertoires ===
Pour copier un fichier on utilise la commande <tt>cp</tt> (''copy'') :
Pour copier un fichier on utilise la commande <code>cp</code> (<i>copy</i>)
{{Commande|cp fichier_source fichier_destination}}
{{Command|cp fichier_source fichier_destination}}
Pour copier récursivement un répertoire :
Pour copier récursivement un répertoire
{{Commande|cp -R dossier_source dossier_destination}}
{{Command|cp -R dossier_source dossier_destination}}
Pour renommer un fichier ou un dossier, on utilise la commande <tt>mv</tt> (''move'') :
Pour renommer un fichier ou un dossier, on utilise la commande <code>mv</code> (<i>move</i>)
{{Commande|mv fichier_source fichier_destination}}
{{Command|mv fichier_source fichier_destination}}
Cette commande permet aussi de déplacer un dossier. Remplacez alors <tt>fichier_source</tt> par <tt>dossier_source</tt> et <tt>fichier_destination</tt> par <tt>dossier_destination</tt>.
Cette commande permet aussi de déplacer un dossier. Remplacez alors <code>fichier_source</code> par <code>dossier_source</code> et <code>fichier_destination</code> par <code>dossier_destination</code>.


== Permissions associées aux fichiers ==  
== Permissions associées aux fichiers ==  
Un système UNIX comporte trois niveaux de permission : lecture (<tt>r</tt>), écriture (<tt>w</tt>) et exécution (<tt>x</tt>). Pour un fichier, il faut que le fichier soit accessible en lecture pour être lu, en écriture pour qu'on puisse le modifier et en exécution pour l'exécuter (si c'est un exécutable ou un script). Pour un répertoire, il faut la permission de lecture pour en lister le contenu, la permission d'écriture pour en modifier le contenu (ajouter ou supprimer un fichier) et la permission d'exécution pour modifier le répertoire.
Un système UNIX comporte trois niveaux de permissions&nbsp;: lecture (<code>r</code>), écriture (<code>w</code>) et exécution (<code>x</code>). Pour un fichier, il faut que le fichier soit accessible en lecture pour être lu, en écriture pour qu'on puisse le modifier et en exécution pour l'exécuter (si c'est un exécutable ou un script). Pour un répertoire, il faut la permission de lecture pour en lister le contenu, la permission d'écriture pour en modifier le contenu (ajouter ou supprimer un fichier) et la permission d'exécution pour modifier le répertoire.


Les permissions s'appliquent à trois types d'utilisateurs : le propriétaire (<tt>u</tt>), le groupe (<tt>g</tt>) et les autres personnes (<tt>o</tt>). Pour connaitre les permissions associées aux fichiers et sous-répertoires du répertoire courant, on utilise la commande :
Les permissions s'appliquent à trois types d'utilisateurs&nbsp;: le propriétaire (<code>u</code>), le groupe (<code>g</code>) et toutes les autres personnes (<code>o</code>). Pour connaitre les permissions associées aux fichiers et sous-répertoires du répertoire courant, on utilise la commande
{{Commande|ls -la}}
{{Command|ls -la}}


Les 10 caractères au début de chaque ligne indiquent les permissions.
Les 10 caractères au début de chaque ligne indiquent les permissions.
Le premier caractère indique le type de fichier :
Le premier caractère indique le type de fichier&nbsp;:
* <tt>-</tt> : un fichier normal
* <code>-</code> : un fichier normal
* <tt>d</tt> : un répertoire
* <code>d</code> : un répertoire
* <tt>l</tt> : un lien symbolique
* <code>l</code> : un lien symbolique


Then, from left to right, this command shows read, write and execute permissions of the owner, the group and other users. Here are some examples :
Ensuite, de gauche à droite, on trouve les permissions en lecture, en écriture et en exécution du propriétaire, du groupe et des autres utilisateurs. Voici quelques exemples&nbsp;:
* <tt>drwxrwxrwx</tt>: a world-readable and world-writable directory
* <code>drwxrwxrwx</code> : un répertoire accessible en lecture et en écriture par tous
* <tt>drwxr-xr-x</tt>: a directory that can be listed by everybody, but only the owner can add or remove files
* <code>drwxr-xr-x</code> : un répertoire qui peut être listé par tous, mais où seul le propriétaire peut ajouter ou supprimer des fichiers
* <tt>-rwxr-xr-x</tt>: a world-readable and world-executable file that can only be changed by its owner
* <code>-rwxr-xr-x</code> : un fichier exécutable par tous, mais qui ne peut être modifié que par son propriétaire
* <tt>-rw-r--r--</tt>: a world-readable file that can only be changed by its owner.
* <code>-rw-r--r--</code> : un fichier lisible par tous, mais qui ne peut être modifié que par son propriétaire
* <tt>-rw-rw----</tt>: a file that can be read and changed by its owner and by its group
* <code>-rw-rw----</code> : un fichier qui peut être lu et modifié par son propriétaire ou par son groupe
* <tt>-rw-------</tt>: a file that can only be read and changed by its owner
* <code>-rw-------</code> : un fichier qui ne peut être lu ou modifié que par son propriétaire
* <tt>drwx--x--x</tt>: a directory that can only be listed or modified by its owner, but all others can still pass it on their way to a deeper subdirectory
* <code>drwx--x--x</code> : un répertoire qui ne peut être listé ou modifié que par son propriétaire, mais par lequel tous peuvent passer pour se rentre à un sous-répertoire plus profond
* <tt>drwx-wx-wx</tt>: a directory that everybody can enter and modify but where only the owner can list its contents
* <code>drwx-wx-wx</code> : un répertoire dans lequel tous peuvent écrire, mais dont seul le propriétaire peut lister le contenu


Important note: to be able to read or write in a directory, you need to have execute permissions (<tt>x</tt>) set in all parent directories, all the way up to the file system's root ('''<tt>/</tt>'''). So if your home directory has <tt>drwx------</tt> permissions and contains a subdirectory with <tt>drwxr-xr-x</tt> permissions, other users cannot read the contents of this subdirectory because they do not have access (by the executable bit) to its parent directory.
Il est important de noter que pour pouvoir lire ou écrire dans un répertoire, il est nécessaire d'avoir l'accès en exécution (<code>x</code>) dans tous les répertoires parents, jusqu'à la racine <b><code>/</code></b> du système de fichiers. Ainsi, si votre répertoire personnel a les permissions <code>drwx------</code> et qu'il contient un sous-répertoire avec les permissions <code>drwxr-xr-x</code>, les autres utilisateurs ne pourront pas lire le contenu de ce sous-répertoire, car ils n'ont pas l'accès en exécution au répertoire parent.


After listing the permissions, <tt>ls -la</tt> command gives a number, followed by the file owner's name, the file group's name, its size, last modification date, and name.
La commande <code>ls -la</code> donne ensuite un nombre, suivi du nom du propriétaire du fichier, du nom du groupe du fichier, de la taille du fichier, de la date de sa dernière modification et de son nom.


The <tt>chmod</tt> command allows you to change file permissions. The simple way to use it is to specify which permissions you wish to add or remove to which type of user. To do this, you specify the list of users (<tt>u</tt> for the owner, <tt>g</tt> for the group, <tt>o</tt> for other users, <tt>a</tt> for all), followed by a <tt>+</tt> to add permissions or <tt>-</tt> to remove permissions, which is then followed by a list of permissions to modify (<tt>r</tt> for read, <tt>w</tt> for write, <tt>x</tt> for execute). Non-specified permissions are not affected. Here are a few examples:
La commande <code>chmod</code> permet de modifier les permissions associées à un fichier. La manière simple de l'utiliser est de spécifier quelles permissions on veut ajouter ou enlever à quel type d'utilisateur. Ainsi, on spécifie la liste des utilisateurs (<code>u</code> pour le propriétaire, <code>g</code> pour le groupe, <code>o</code> pour les autres utilisateurs, <code>a</code> pour les trois options), suivie d'un <code>+</code> pour ajouter une permission ou d'un <code>-</code> pour retirer une permission, et suivie de la liste des permissions à modifier (<code>r</code> pour lecture, <code>w</code> pour écriture, <code>x</code> pour exécution). Les permissions non spécifiées ne sont pas affectées. Voici quelques exemples&nbsp;:


* Prevent group members and all others to read or modify the file <tt>secret.txt</tt>: {{Command|chmod go-rwx secret.txt}}
* Empêcher les membres du groupe et les autres utilisateurs de lire ou de modifier le fichier <code>secret.txt</code> {{Command|chmod go-rwx secret.txt}}
* Allow everybody to read the file <tt>public.txt</tt>: {{Command|chmod a+r public.txt}}
* Permettre à tous de lire le fichier <code>public.txt</code> {{Command|chmod a+r publique.txt}}
* Make the file <tt>script.sh</tt> executable: {{Command|chmod a+x script.sh}}
* Rendre le fichier <code>script.sh</code> exécutable {{Command|chmod a+x script.sh}}
* Allow group members to read and write in the directory <tt>shared</tt>: {{Command|chmod g+rwx shared}}
* Permettre aux membres du groupe de lire et d'écrire dans le répertoire <code>partage</code>{{Command|chmod g+rwx partage}}
* Prevent other users to read or modify your home directory: {{Command|chmod go-rw ~}}
* Empêcher d'autres utilisateurs de lire le contenu de son répertoire personnel {{Command|chmod go-rw ~}}


== Viewing and editing files ==
== Visualiser et éditer des fichiers ==  
=== Viewing a file ===
=== Visualiser un fichier ===
To view a file read-only, use the <tt>less</tt> command:
Pour visualiser un fichier en lecture seule, on utilise la commande <code>less</code>  
{{Command|less file_to_view}}
{{Command|less fichier_a_visualiser}}  
You can then use the arrow keys or the mouse wheel to navigate the document.
On utilise alors les flèches du clavier ou la molette de la souris pour se déplacer dans le document.
You can search for something in the document by typing <tt>/what_to_search_for</tt>.
On peut rechercher un terme dans le document en entrant <code>/terme_a_rechercher</code>.
You can quit <tt>less</tt> by pressing the <tt>q</tt> key.
On quitte en appuyant sur <code>q</code>.


=== Comparing two files ===
=== Comparer deux fichiers ===  
The <tt>diff</tt> command allows you to compare two files:
La commande <code>diff</code> permet de voir les différences entre deux fichiers
{{Command|diff file1 file2}}
{{Command|diff fichier1 fichier2}}
The <tt>-y</tt> option shows both files side by side.
L'option <code>-y</code> permet d'afficher les fichiers côte à côte.


=== Searching within a file ===
=== Rechercher dans un fichier ===  
The <tt>grep</tt> command allows you to look for a given expression in one
La commande <code>grep</code> permet de recherche une expression donnée dans un fichier
{{Command|grep 'tata' file1}}
{{Command|grep 'tata' fichier1}}
or multiple files.
ou plusieurs fichiers
{{Command|grep 'tata' fil*}}.
{{Command|grep 'tata' fich*}}.
Note that, in Linux, the "<tt>*</tt>" wildcard matches zero or more characters. The "<tt>?</tt>" wilcard matches exactly one character.
Notez que, sous Linux, le caractère <code>*</code> permet de remplacer aucun, un, ou une série de caractères.  
Le caractère <code>?</code> remplace (exactement) un caractère.


The text to be searched for can also be variable. For example, to look for
Le texte recherché peut également contenir des variables. Par exemple, pour rechercher le texte <i>No. 10</i> ou <i>No. 11</i>, etc. avec n'importe quel nombre entre 10 et 29, on peut utiliser la commande
the text "number 10 » or "number 11", etc. with any number between 10 and 29,
{{Command|grep 'No. [1-2][0-9]' fichier}}
the following command can be used:
Le texte recherché doit être sous la forme d'une expression régulière. Pour en savoir plus sur les expressions régulières, consultez [http://www.cyberciti.biz/faq/grep-regular-expressions].
{{Command|grep 'number [1-2][0-9]' file
}}
A regular expression must be used for the search text. To learn more about regular expressions,
look at the following sites:<br />
[http://www.cyberciti.biz/faq/grep-regular-expressions/ A very complete list of regular expressions] <br />

Latest revision as of 14:49, 24 October 2024

Other languages:

Cet article s'adresse aux utilisateurs de systèmes Windows ou Mac ayant peu ou pas d'expérience dans un environnement UNIX. Il devrait vous donner les bases nécessaires pour accéder aux serveurs de calcul et être rapidement capable de les utiliser.

La connexion aux serveurs utilise le protocole SSH en mode texte. Vous ne disposez pas d'une interface graphique, mais d'une console. Notez que les exécutables Windows ne fonctionnent pas sur nos serveurs sans l'utilisation d'un émulateur.

SHARCNET offre un tutoriel de formation autonome; cliquez sur Introduction to the Shell.

Obtenir de l'aide

En général, les commandes sont documentées dans les manuels de référence disponibles sur les serveurs. Vous pouvez y accéder à partir du terminal avec

Question.png
[name@server ~]$ man command

man utilise less (voir section Visualiser et éditer des fichiers); il faut appuyer sur q pour quitter le programme.

Par convention, les exécutables contiennent eux-mêmes de l'aide sur la façon dont ils doivent être utilisés. De façon générale, vous obtenez l'information avec les arguments en ligne de commande -h, --help ou dans certains cas -help, par exemple

Question.png
[name@server ~]$ ls --help

S'orienter sur le système

Au moment de la connexion, vous serez dirigé dans le répertoire $HOME (terme UNIX pour dossier ou répertoire) de votre compte utilisateur. Lors de la création d'un compte, le $HOME ne contient rien d'autre que des fichiers de configuration qui sont cachés, soit ceux qui sont préfixés par un point (.).

Dans un système Linux, il est fortement déconseillé de créer des fichiers ou répertoires dont les noms contiennent des espaces ou des caractères spéciaux; ces caractères spéciaux incluent les accents.

Lister le contenu d'un répertoire

Pour lister les fichiers d'un répertoire dans un terminal, on utilise la commande ls (list)

Question.png
[name@server ~]$ ls

Pour inclure les fichiers cachés

Question.png
[name@server ~]$ ls -a

Pour trier les résultats par date (du plus récent au plus ancien) plutôt qu'en ordre alphabétique

Question.png
[name@server ~]$ ls -t

Pour obtenir des informations détaillées sur les fichiers (permissions d'accès, propriétaire, groupe, taille et date de dernière modification)

Question.png
[name@server ~]$ ls -l

L'option -h donne la taille des fichiers dans un format aisément lisible par les humains.

Les options peuvent être combinées, par exemple

Question.png
[name@server ~]$ ls -alth

Naviguer dans le système de fichiers

Pour se déplacer dans le système de fichiers, on utilise la commande cd (change directory).

Ainsi, pour se déplacer dans mon_répertoire, entrez

Question.png
[name@server ~]$ cd mon_répertoire

Pour revenir au dossier parent, entrez

Question.png
[name@server ~]$ cd ..

Enfin, pour revenir à la racine de votre compte utilisateur ($HOME) entrez

Question.png
[name@server ~]$ cd

Créer et supprimer des répertoires

Pour créer un répertoire, on utilise la commande mkdir (make directory)

Question.png
[name@server ~]$ mkdir mon_répertoire

Pour supprimer un répertoire, on utilise la commande rmdir (remove directory)

Question.png
[name@server ~]$ rmdir mon_répertoire

La suppression d'un répertoire avec cette méthode ne fonctionnera que si celui-ci est vide.

Supprimer des fichiers

On efface des fichiers avec la commande rm (remove)

Question.png
[name@server ~]$ rm mon_fichier

On peut effacer un répertoire récursivement

Question.png
[name@server ~]$ rm -r mon_répertoire

L'option (potentiellement dangereuse!) -f peut être utile pour passer outre les demandes de confirmation de suppression et poursuivre l'opération après une erreur.

Copier et renommer des fichiers ou répertoires

Pour copier un fichier on utilise la commande cp (copy)

Question.png
[name@server ~]$ cp fichier_source fichier_destination

Pour copier récursivement un répertoire

Question.png
[name@server ~]$ cp -R dossier_source dossier_destination

Pour renommer un fichier ou un dossier, on utilise la commande mv (move)

Question.png
[name@server ~]$ mv fichier_source fichier_destination

Cette commande permet aussi de déplacer un dossier. Remplacez alors fichier_source par dossier_source et fichier_destination par dossier_destination.

Permissions associées aux fichiers

Un système UNIX comporte trois niveaux de permissions : lecture (r), écriture (w) et exécution (x). Pour un fichier, il faut que le fichier soit accessible en lecture pour être lu, en écriture pour qu'on puisse le modifier et en exécution pour l'exécuter (si c'est un exécutable ou un script). Pour un répertoire, il faut la permission de lecture pour en lister le contenu, la permission d'écriture pour en modifier le contenu (ajouter ou supprimer un fichier) et la permission d'exécution pour modifier le répertoire.

Les permissions s'appliquent à trois types d'utilisateurs : le propriétaire (u), le groupe (g) et toutes les autres personnes (o). Pour connaitre les permissions associées aux fichiers et sous-répertoires du répertoire courant, on utilise la commande

Question.png
[name@server ~]$ ls -la

Les 10 caractères au début de chaque ligne indiquent les permissions. Le premier caractère indique le type de fichier :

  • - : un fichier normal
  • d : un répertoire
  • l : un lien symbolique

Ensuite, de gauche à droite, on trouve les permissions en lecture, en écriture et en exécution du propriétaire, du groupe et des autres utilisateurs. Voici quelques exemples :

  • drwxrwxrwx : un répertoire accessible en lecture et en écriture par tous
  • drwxr-xr-x : un répertoire qui peut être listé par tous, mais où seul le propriétaire peut ajouter ou supprimer des fichiers
  • -rwxr-xr-x : un fichier exécutable par tous, mais qui ne peut être modifié que par son propriétaire
  • -rw-r--r-- : un fichier lisible par tous, mais qui ne peut être modifié que par son propriétaire
  • -rw-rw---- : un fichier qui peut être lu et modifié par son propriétaire ou par son groupe
  • -rw------- : un fichier qui ne peut être lu ou modifié que par son propriétaire
  • drwx--x--x : un répertoire qui ne peut être listé ou modifié que par son propriétaire, mais par lequel tous peuvent passer pour se rentre à un sous-répertoire plus profond
  • drwx-wx-wx : un répertoire dans lequel tous peuvent écrire, mais dont seul le propriétaire peut lister le contenu

Il est important de noter que pour pouvoir lire ou écrire dans un répertoire, il est nécessaire d'avoir l'accès en exécution (x) dans tous les répertoires parents, jusqu'à la racine / du système de fichiers. Ainsi, si votre répertoire personnel a les permissions drwx------ et qu'il contient un sous-répertoire avec les permissions drwxr-xr-x, les autres utilisateurs ne pourront pas lire le contenu de ce sous-répertoire, car ils n'ont pas l'accès en exécution au répertoire parent.

La commande ls -la donne ensuite un nombre, suivi du nom du propriétaire du fichier, du nom du groupe du fichier, de la taille du fichier, de la date de sa dernière modification et de son nom.

La commande chmod permet de modifier les permissions associées à un fichier. La manière simple de l'utiliser est de spécifier quelles permissions on veut ajouter ou enlever à quel type d'utilisateur. Ainsi, on spécifie la liste des utilisateurs (u pour le propriétaire, g pour le groupe, o pour les autres utilisateurs, a pour les trois options), suivie d'un + pour ajouter une permission ou d'un - pour retirer une permission, et suivie de la liste des permissions à modifier (r pour lecture, w pour écriture, x pour exécution). Les permissions non spécifiées ne sont pas affectées. Voici quelques exemples :

  • Empêcher les membres du groupe et les autres utilisateurs de lire ou de modifier le fichier secret.txt
    Question.png
    [name@server ~]$ chmod go-rwx secret.txt
    
  • Permettre à tous de lire le fichier public.txt
    Question.png
    [name@server ~]$ chmod a+r publique.txt
    
  • Rendre le fichier script.sh exécutable
    Question.png
    [name@server ~]$ chmod a+x script.sh
    
  • Permettre aux membres du groupe de lire et d'écrire dans le répertoire partage
    Question.png
    [name@server ~]$ chmod g+rwx partage
    
  • Empêcher d'autres utilisateurs de lire le contenu de son répertoire personnel
    Question.png
    [name@server ~]$ chmod go-rw ~
    

Visualiser et éditer des fichiers

Visualiser un fichier

Pour visualiser un fichier en lecture seule, on utilise la commande less

Question.png
[name@server ~]$ less fichier_a_visualiser

On utilise alors les flèches du clavier ou la molette de la souris pour se déplacer dans le document. On peut rechercher un terme dans le document en entrant /terme_a_rechercher. On quitte en appuyant sur q.

Comparer deux fichiers

La commande diff permet de voir les différences entre deux fichiers

Question.png
[name@server ~]$ diff fichier1 fichier2

L'option -y permet d'afficher les fichiers côte à côte.

Rechercher dans un fichier

La commande grep permet de recherche une expression donnée dans un fichier

Question.png
[name@server ~]$ grep 'tata' fichier1

ou plusieurs fichiers

Question.png
[name@server ~]$ grep 'tata' fich*

.

Notez que, sous Linux, le caractère * permet de remplacer aucun, un, ou une série de caractères. Le caractère ? remplace (exactement) un caractère.

Le texte recherché peut également contenir des variables. Par exemple, pour rechercher le texte No. 10 ou No. 11, etc. avec n'importe quel nombre entre 10 et 29, on peut utiliser la commande

Question.png
[name@server ~]$ grep 'No. [1-2][0-9]' fichier

Le texte recherché doit être sous la forme d'une expression régulière. Pour en savoir plus sur les expressions régulières, consultez [1].