Introduction
Dans ce laboratoire, nous allons plonger dans l'univers des permissions de fichiers sous Linux. Nous explorerons trois commandes essentielles : chown, touch et chmod. Ces outils sont cruciaux pour gérer l'accès aux fichiers et aux répertoires sur un système Linux. À la fin de ce laboratoire, vous maîtriserez la création de fichiers, le changement de propriétaire et la modification des permissions. La compréhension de ces commandes vous permettra de contrôler qui peut lire, écrire et exécuter des fichiers sur votre système.
Création d'un nouveau fichier
Commençons par créer un nouveau fichier à l'aide de la commande touch. Cette commande polyvalente permet de créer de nouveaux fichiers vides et de mettre à jour les horodatages de fichiers existants. Considérez-la comme un moyen rapide de « toucher » un fichier, soit pour le faire exister, soit pour mettre à jour sa dernière date d'accès.
Tout d'abord, assurez-vous d'être dans le bon répertoire. Nous travaillerons dans votre répertoire project :
cd ~/project
La commande cd signifie "change directory" (changer de répertoire). Le symbole ~ représente votre répertoire personnel (home), et /project spécifie le sous-répertoire dans lequel nous voulons nous déplacer. Si le répertoire project n'existe pas, cette commande échouera probablement. Il est généralement recommandé de créer le répertoire au préalable si vous n'êtes pas sûr. Cependant, dans cet environnement de laboratoire, le répertoire devrait déjà exister.
Maintenant, créons un nouveau fichier nommé example.txt :
touch example.txt
Cette commande crée un fichier vide appelé example.txt dans votre répertoire actuel. Pour confirmer que le fichier a bien été créé, utilisez la commande ls :
ls
ls signifie "list" (lister). Elle affiche les fichiers et répertoires présents à votre emplacement actuel. Vous devriez voir example.txt dans la sortie. Si vous ne le voyez pas, vérifiez que vous avez exécuté la commande touch correctement et que vous êtes bien dans le répertoire ~/project.
Changement du propriétaire d'un fichier
Maintenant que nous avons créé un fichier, apprenons à changer son propriétaire. La commande chown nous permet de modifier à la fois l'utilisateur et le groupe propriétaire d'un fichier. La propriété détermine qui a le contrôle sur le fichier.
Tout d'abord, vérifions la propriété actuelle de notre fichier example.txt :
ls -l example.txt
La commande ls -l (lister au format long) fournit des informations détaillées sur le fichier, y compris ses permissions, son propriétaire et son groupe. Vous devriez voir une sortie similaire à celle-ci :
-rw-rw-r-- 1 labex labex 0 Jul 29 15:11 example.txt
Analysons cette sortie :
-rw-rw-r--représente les permissions du fichier (nous explorerons cela plus en détail à l'étape 4). Le premier caractère indique le type de fichier (-pour un fichier ordinaire,dpour un répertoire, etc.). Les caractères restants représentent les permissions de lecture, d'écriture et d'exécution pour le propriétaire, le groupe et les autres.- Le premier
labexest le propriétaire actuel du fichier. Il s'agit du nom d'utilisateur qui possède le fichier. - Le second
labexest le groupe actuel du fichier. Un groupe est un ensemble d'utilisateurs pouvant partager des permissions. 0est la taille du fichier en octets. Comme le fichier est vide, sa taille est nulle.Jul 29 15:11est la date et l'heure de la dernière modification.example.txtest le nom du fichier.
Maintenant, changeons le propriétaire du fichier pour l'utilisateur root. root est le compte administrateur sur les systèmes Linux, et il possède des privilèges spéciaux.
sudo chown root:root example.txt
Voici ce que fait cette commande :
sudoexécute la commande avec les privilèges root. Il est probable que votre mot de passe vous soit demandé.chownnécessite des privilèges élevés car c'est une commande puissante pouvant affecter la sécurité du système. Sanssudo, vous obtiendrez une erreur "Permission denied" (Permission refusée).chownest la commande pour changer la propriété.root:rootspécifie le nouveau propriétaire et le nouveau groupe (tous deux définis sur root). La syntaxe estpropriétaire:groupe.example.txtest le fichier cible.
Vérifions le changement :
ls -l example.txt
Vous devriez maintenant voir que le propriétaire et le groupe ont été changés en root :
-rw-rw-r-- 1 root root 0 Jul 29 15:11 example.txt
Si vous voyez toujours labex au lieu de root, assurez-vous d'avoir utilisé sudo lors de l'exécution de la commande chown et d'avoir saisi votre mot de passe correctement.
Changement de la propriété d'un répertoire
La commande chown peut également changer la propriété de répertoires entiers et de leur contenu. Voyons cela en action. C'est particulièrement utile pour gérer des structures de répertoires complexes où vous souhaitez vous assurer que tous les fichiers et sous-répertoires ont le même propriétaire.
Tout d'abord, créons un nouveau répertoire avec quelques fichiers :
mkdir -p new-dir/subdir
echo "Hello, world" > new-dir/file1.txt
echo "Another file" > new-dir/subdir/file2.txt
Analysons ces commandes :
mkdir -p new-dir/subdircrée le répertoirenew-diret son sous-répertoiresubdir. L'option-pindique àmkdirde créer les répertoires parents si nécessaire. Sans-p, sinew-dirn'existait pas, la création denew-dir/subdiréchouerait.echo "Hello, world" > new-dir/file1.txtcrée un fichier nomméfile1.txtà l'intérieur du répertoirenew-diret y écrit le texte "Hello, world". Le symbole>est utilisé pour la redirection ; il prend la sortie de la commandeechoet la redirige vers le fichier spécifié.echo "Another file" > new-dir/subdir/file2.txtcrée de la même manière un fichier nomméfile2.txtà l'intérieur du répertoirenew-dir/subdiret y écrit le texte "Another file".
Vérifions maintenant la propriété actuelle :
ls -lR new-dir
ls -lR liste le contenu de new-dir de manière récursive. L'option -R (récursive) permet à ls de lister tous les fichiers et sous-répertoires à l'intérieur de new-dir ainsi que leur contenu.
Vous devriez voir quelque chose comme ceci :
new-dir:
total 4
-rw-rw-r-- 1 labex labex 13 Jul 29 09:15 file1.txt
drwxrwxr-x 2 labex labex 23 Jul 29 09:15 subdir
new-dir/subdir:
total 4
-rw-rw-r-- 1 labex labex 13 Jul 29 09:15 file2.txt
Cela montre que le répertoire new-dir, son sous-répertoire subdir, ainsi que les fichiers file1.txt et file2.txt appartiennent tous à labex.
Maintenant, changeons la propriété de new-dir et de tout son contenu pour l'utilisateur root :
sudo chown -R root:root new-dir
Dans cette commande :
- L'option
-Rindique àchownd'opérer de manière récursive, en changeant la propriété de tous les fichiers et sous-répertoires à l'intérieur denew-dir. C'est crucial ; sans-R, seule la propriété du répertoirenew-dirchangerait, mais les fichiers et sous-répertoires à l'intérieur resteraient la propriété delabex.
Vérifions le changement :
ls -lR new-dir
Vous devriez maintenant voir :
new-dir:
total 4
-rw-rw-r-- 1 root root 13 Jul 29 09:15 file1.txt
drwxrwxr-x 2 root root 23 Jul 29 09:15 subdir
new-dir/subdir:
total 4
-rw-rw-r-- 1 root root 13 Jul 29 09:15 file2.txt
Comme vous pouvez le constater, la propriété du répertoire et de tout son contenu a été transférée à root. Cela démontre la puissance de l'option -R pour effectuer des changements de propriété étendus au sein d'une structure de répertoires.
Changement des permissions d'un fichier
Sous Linux, les permissions de fichiers sont représentées par une série de lettres ou de chiffres. Explorons comment lire et modifier ces permissions. Comprendre les permissions est vital pour sécuriser vos fichiers et empêcher tout accès non autorisé.
Tout d'abord, examinons les permissions actuelles de notre fichier example.txt :
ls -l example.txt
Vous pourriez voir quelque chose comme ceci :
-rw-rw-r-- 1 root root 0 Jul 29 15:11 example.txt
La partie -rw-rw-r-- représente les permissions du fichier. C'est ici qu'interviennent les notations numériques et symboliques. Analysons-les :
- Le premier caractère (
-) indique qu'il s'agit d'un fichier ordinaire. D'autres indicateurs courants sontdpour un répertoire etlpour un lien symbolique. - Les trois caractères suivants (
rw-) représentent les permissions du propriétaire (lecture et écriture, mais pas exécution).rsignifie permission de lecture : le propriétaire peut ouvrir et lire le fichier.wsignifie permission d'écriture : le propriétaire peut modifier le fichier.xsignifie permission d'exécution : le propriétaire peut exécuter le fichier (s'il s'agit d'un programme ou d'un script). Un-signifie que la permission est refusée.
- Les trois suivants (
rw-) concernent le groupe. Ils ont la même signification que ci-dessus, mais s'appliquent aux membres du groupe du fichier. - Les trois derniers (
r--) concernent les autres (tout le monde). Ils ont également la même signification, mais s'appliquent aux utilisateurs qui ne sont ni le propriétaire ni membres du groupe du fichier.
Maintenant, changeons ces permissions à l'aide de la commande chmod. chmod signifie "change mode" (changer le mode), et il vous permet de modifier ces permissions. Nous commencerons par la notation numérique.
sudo chmod 700 example.txt
Dans cette commande :
700est une représentation numérique des permissions :- Le premier chiffre (
7) représente les permissions du propriétaire. - Le deuxième chiffre (
0) représente les permissions du groupe. - Le troisième chiffre (
0) représente les permissions des autres.
- Le premier chiffre (
Chaque chiffre est un nombre de 0 à 7, calculé en additionnant les valeurs des permissions de lecture (4), d'écriture (2) et d'exécution (1) :
4: Permission de lecture2: Permission d'écriture1: Permission d'exécution0: Aucune permission
Ainsi, 7 (premier chiffre) donne au propriétaire les permissions de lecture (4), d'écriture (2) et d'exécution (1) : 4+2+1=7.
0 (deuxième chiffre) ne donne aucune permission au groupe (0+0+0=0).
0 (troisième chiffre) ne donne aucune permission aux autres (0+0+0=0).
Par conséquent, 700 signifie : Propriétaire : lecture, écriture, exécution. Groupe : aucune. Autres : aucune.
Vérifions le changement :
ls -l example.txt
Vous devriez maintenant voir :
-rwx------ 1 root root 0 Jul 29 15:11 example.txt
Le propriétaire a maintenant les permissions rwx (lecture, écriture et exécution), tandis que le groupe et les autres n'ont aucune permission.
Changement des permissions d'un répertoire
Le changement des permissions pour les répertoires fonctionne de manière similaire à celui des fichiers. Entraînons-nous en créant un nouveau répertoire et en modifiant ses permissions. Les permissions de répertoire contrôlent qui peut lister le contenu du répertoire, créer de nouveaux fichiers dans le répertoire et accéder aux fichiers déjà présents.
Tout d'abord, créons un nouveau répertoire et définissons des permissions non standard :
mkdir ~/test-dir
chmod 700 ~/test-dir
Maintenant, vérifions les permissions actuelles :
ls -ld ~/test-dir
L'option -d dans ls -l indique à ls de lister le répertoire lui-même, plutôt que son contenu. Sans -d, ls listerait les fichiers et sous-répertoires à l'intérieur de test-dir, qui est vide pour le moment. Vous devriez voir :
drwx------ 2 labex labex 4096 Jul 29 15:45 /home/labex/test-dir
Le d au début indique qu'il s'agit d'un répertoire. Le rwx------ indique que le propriétaire a les permissions de lecture, d'écriture et d'exécution, tandis que le groupe et les autres n'ont aucune permission. Pour les répertoires :
- La permission de lecture (
r) vous permet de lister le contenu du répertoire à l'aide dels. - La permission d'écriture (
w) vous permet de créer de nouveaux fichiers et sous-répertoires dans le répertoire. - La permission d'exécution (
x) vous permet d'accéder aux fichiers et sous-répertoires dans le répertoire (c'est-à-dire d'y entrer aveccd).
Maintenant, changeons les permissions :
chmod -R 755 ~/test-dir
Dans cette commande :
-Rapplique le changement de manière récursive à tous les fichiers et sous-répertoires (bien que notre répertoire soit vide dans ce cas). Il est recommandé de l'inclure lors de la manipulation de répertoires, même s'ils sont actuellement vides, au cas où vous ajouteriez des fichiers plus tard.755donne les permissions de lecture, d'écriture et d'exécution au propriétaire, et les permissions de lecture et d'exécution au groupe et aux autres.
Analysons 755 :
- Propriétaire (7) : Lecture (4) + Écriture (2) + Exécution (1) = 7
- Groupe (5) : Lecture (4) + Exécution (1) = 5
- Autres (5) : Lecture (4) + Exécution (1) = 5
Vérifions le changement :
ls -ld ~/test-dir
Vous devriez maintenant voir :
drwxr-xr-x 2 labex labex 4096 Jul 29 15:45 /home/labex/test-dir
Cela montre clairement le changement de permissions, passant d'un accès réservé au seul propriétaire (700) à un accès complet pour le propriétaire, tandis que les autres peuvent lire et exécuter (755). Désormais, n'importe qui peut lister le contenu de test-dir et accéder aux fichiers qu'il contient, mais seul le propriétaire peut créer de nouveaux fichiers ou modifier ceux existants.
Utilisation de la notation symbolique pour les permissions
Bien que la notation numérique soit concise, la notation symbolique peut être plus intuitive, surtout lorsque vous souhaitez modifier une seule permission. La notation symbolique utilise des lettres pour représenter l'utilisateur, le groupe et les autres, ainsi que des opérateurs pour ajouter ou supprimer des permissions.
Dans cette étape, vous allez créer un petit script shell, puis lui ajouter la permission d'exécution.
Tout d'abord, créons un nouveau fichier de script avec du contenu :
cd ~/project
echo '#!/bin/bash' > script.sh
echo 'echo "Hello, World"' >> script.sh
Ces commandes font deux choses :
- La première commande
echocréescript.shet y écrit la première ligne,#!/bin/bash. Cette ligne est appelée "shebang" et indique à Linux d'exécuter le script avec Bash. - La seconde commande
echoajoute une nouvelle ligne à la fin du fichier avec>>. Elle écritecho "Hello, World", qui afficheraHello, Worldlors de l'exécution du script.
Vous pouvez confirmer que le fichier contient maintenant deux lignes distinctes avec :
cat script.sh
Vous devriez voir :
#!/bin/bash
echo "Hello, World"
Maintenant, vérifions ses permissions initiales :
ls -l script.sh
Vous devriez voir quelque chose comme :
-rw-rw-r-- 1 labex labex 32 Jul 29 16:30 script.sh
Comme vous pouvez le constater, initialement, le script n'a que les permissions de lecture et d'écriture pour le propriétaire et le groupe, et la permission de lecture pour les autres. Il n'a pas la permission d'exécution, qui est requise pour l'exécuter en tant que programme.
Essayons d'exécuter le script :
./script.sh
Vous devriez voir une erreur "Permission denied" car le script n'a pas encore les permissions d'exécution. La partie ./ indique au shell d'exécuter le script situé dans le répertoire actuel.
Maintenant, ajoutons la permission d'exécution pour le propriétaire en utilisant la notation symbolique :
chmod u+x script.sh
Dans cette commande :
ufait référence à l'utilisateur (propriétaire). Les autres options sontgpour le groupe,opour les autres etapour tous (utilisateur, groupe et autres).+xajoute la permission d'exécution. Le symbole+ajoute une permission, tandis que le symbole-supprime une permission.
Ainsi, u+x signifie "ajouter la permission d'exécution pour le propriétaire".
Vérifions le changement :
ls -l script.sh
Vous devriez maintenant voir :
-rwxrw-r-- 1 labex labex 32 Jul 29 16:30 script.sh
Le propriétaire a maintenant les permissions rwx (lecture, écriture et exécution).
Maintenant, essayons d'exécuter à nouveau le script :
./script.sh
Cette fois, vous devriez voir la sortie :
Hello, World
Cet exemple démontre clairement pourquoi nous devons ajouter des permissions d'exécution aux scripts, ainsi que la différence avant et après l'ajout de ces permissions. La notation symbolique facilite la modification de permissions spécifiques sans avoir à recalculer toute la représentation numérique.
Résumé
Dans ce laboratoire, nous avons exploré les commandes Linux essentielles pour gérer les permissions de fichiers :
- Nous avons utilisé
touchpour créer de nouveaux fichiers et mettre à jour ceux existants. - Nous avons appris à utiliser
chownpour changer la propriété des fichiers et des répertoires, y compris les changements récursifs pour des structures de répertoires entières. - Nous nous sommes entraînés à utiliser
chmodavec les notations numérique et symbolique pour modifier les permissions, en comprenant les différents niveaux de permission pour le propriétaire, le groupe et les autres. - Nous avons vu des exemples pratiques de l'importance des permissions, comme la nécessité d'avoir les permissions d'exécution pour lancer des scripts.
- Nous avons clarifié les différences entre les notations numérique et symbolique pour
chmodet quand chacune peut être plus appropriée.
Ces commandes sont cruciales pour maintenir la sécurité et contrôler l'accès sur les systèmes Linux. N'oubliez pas d'être toujours prudent lors de la modification des permissions, surtout lors de l'utilisation de sudo, car des changements incorrects peuvent avoir des conséquences significatives sur la sécurité et le fonctionnement du système. Vérifiez toujours vos commandes avant de les exécuter et comprenez les implications des changements que vous effectuez.



