Modifier les permissions des fichiers avec chmod (mode symbolique)
Dans cette étape, vous apprendrez à modifier les permissions des fichiers à l'aide de la commande chmod
en mode symbolique. Le mode symbolique utilise des lettres et des symboles pour représenter les modifications de permissions, ce qui le rend intuitif pour ajouter, supprimer ou définir des permissions spécifiques.
La commande chmod
en mode symbolique suit la syntaxe : chmod QUI OPÉRATION PERMISSIONS FICHIER
.
- QUI : Spécifie à qui la modification de permission s'applique.
u
: utilisateur (propriétaire)
g
: groupe
o
: autres
a
: tous (utilisateur, groupe et autres)
- OPÉRATION : Spécifie comment modifier les permissions.
+
: Ajouter une permission.
-
: Supprimer une permission.
=
: Définir les permissions exactement comme spécifié, en remplaçant les permissions existantes.
- PERMISSIONS : Spécifie le type de permission.
r
: lecture
w
: écriture
x
: exécution
Continuons avec le fichier ~/project/my_files/document.txt
et le répertoire ~/project/my_files
créés à l'étape précédente.
Tout d'abord, supprimons les permissions d'écriture pour le groupe et les autres sur document.txt
. Rappelons que ses permissions actuelles sont -rw-rw-r--
.
chmod go-w ~/project/my_files/document.txt
Vérifions la modification à l'aide de ls -l
:
ls -l ~/project/my_files/document.txt
La sortie devrait maintenant afficher :
-rw-r--r-- 1 labex labex 0 Jun 6 17:36 /home/labex/project/my_files/document.txt
Remarquez que la permission w
(écriture) pour le groupe et les autres a été supprimée.
Ensuite, ajoutons la permission d'exécution pour le propriétaire (u
) à document.txt
. Ceci est souvent fait pour les scripts afin de les rendre exécutables.
chmod u+x ~/project/my_files/document.txt
Vérifions la modification :
ls -l ~/project/my_files/document.txt
La sortie devrait maintenant être :
-rwxr--r-- 1 labex labex 0 Jun 6 17:36 /home/labex/project/my_files/document.txt
Le propriétaire a maintenant la permission d'exécution (x
).
Maintenant, pratiquons avec le répertoire ~/project/my_files
. Ses permissions actuelles sont drwxrwxr-x
. Supprimons la permission d'écriture pour les autres (o
) du répertoire.
chmod o-w ~/project/my_files
Vérifions la modification :
ls -ld ~/project/my_files
La sortie devrait maintenant afficher :
drwxr-xr-x 2 labex labex 4096 Jun 6 17:36 /home/labex/project/my_files
Pourquoi o-w
n'a-t-il pas modifié la sortie ? C'est parce que les autres (o
) n'avaient déjà pas la permission d'écriture. Le r-x
pour les autres signifie lecture et exécution, mais pas d'écriture. Cela démontre que chmod
n'applique les modifications que si elles sont différentes de l'état actuel.
Essayons de définir les permissions exactement. Nous allons définir les permissions de document.txt
à rw-r--r--
pour tous (propriétaire, groupe, autres). Cela signifie que le propriétaire obtient lecture/écriture, le groupe obtient lecture, et les autres obtiennent lecture.
chmod a=rw,g=r,o=r ~/project/my_files/document.txt
Vérifions la modification :
ls -l ~/project/my_files/document.txt
La sortie devrait maintenant être :
-rw-r--r-- 1 labex labex 0 Jun 6 17:36 /home/labex/project/my_files/document.txt
Cette commande a=rw,g=r,o=r
est un peu redondante car a=rw
appliquerait rw
à tous, puis g=r
définirait le groupe sur r
(remplaçant le w
de a=rw
), et o=r
définirait les autres sur r
(remplaçant le w
de a=rw
). Une façon plus simple d'obtenir rw-r--r--
serait chmod u=rw,go=r
. Essayons cela.
chmod u=rw,go=r ~/project/my_files/document.txt
Vérifions la modification :
ls -l ~/project/my_files/document.txt
La sortie devrait toujours être :
-rw-r--r-- 1 labex labex 0 Jun 6 17:36 /home/labex/project/my_files/document.txt
Enfin, rendons document.txt
exécutable pour tous.
chmod a+x ~/project/my_files/document.txt
Vérifions la modification :
ls -l ~/project/my_files/document.txt
La sortie devrait maintenant être :
-rwxr-xr-x 1 labex labex 0 Jun 6 17:36 /home/labex/project/my_files/document.txt