Objectifs
- Naviguer efficacement dans le système de fichiers.
- Manipuler les fichiers et dossiers (créer, copier, déplacer, supprimer).
- Comprendre le modèle de permissions Unix (propriétaire, groupe, droits
rwx). - Modifier les permissions d’un fichier ou d’un dossier avec
chmod.
Commandes de base (Rappel)
- Navigation :
pwd,ls,cd. - Manipulation :
mkdir,touch,cp,mv,rm.
La maîtrise de ces commandes est le prérequis à toute automatisation.
Le Modèle de Permissions Unix
Chaque fichier et dossier sur un système de type Unix possède des permissions qui déterminent qui peut faire quoi. C’est un concept de sécurité fondamental.
La commande ls -l mon_fichier.txt affiche quelque chose comme :
-rwxr-xr-- 1 alice staff 1024 Jul 12 10:30 mon_fichier.txt
Le premier bloc de 10 caractères (-rwxr-xr--) représente les permissions.
- Le premier caractère : type de fichier (
-pour un fichier,dpour un dossier). - Les 9 suivants sont trois groupes de trois :
- Propriétaire (User) :
rwx(lire, écrire, exécuter). - Groupe (Group) :
r-x(lire, pas écrire, exécuter). - Autres (Others) :
r--(lire seulement).
- Propriétaire (User) :
Modifier les permissions avec chmod
La commande chmod (Change Mode) permet de changer ces permissions.
Syntaxe Symbolique (relative)
C’est la plus intuitive pour des changements simples.
u(user),g(group),o(others),a(all).+(ajouter),-(retirer),=(définir).r(read),w(write),x(execute).
# Ajouter la permission d'exécution pour le propriétaire
chmod u+x mon_script.sh
# Retirer la permission d'écriture pour le groupe et les autres
chmod go-w config.json
# Donner les droits de lecture/écriture à l'utilisateur, et lecture seule aux autres
chmod u=rw,go=r mon_fichier.txt
Syntaxe Octale (absolue)
C’est une manière numérique et rapide de définir toutes les permissions d’un coup. Chaque droit a une valeur :
r(read) = 4w(write) = 2x(execute) = 1
On additionne les valeurs pour chaque catégorie (user, group, other).
7= 4+2+1 =rwx6= 4+2 =rw-5= 4+1 =r-x4= 4 =r--
# rwx r-x r-x (permissions courantes pour un script)
chmod 755 mon_script.sh
# rw- r-- r-- (permissions courantes pour un fichier de données)
chmod 644 donnees.csv
Changer le propriétaire avec chown
La commande chown (Change Owner) permet de changer le propriétaire et/ou le groupe d’un fichier. Cette commande nécessite souvent des privilèges d’administrateur (sudo).
# Changer le propriétaire en 'bob'
sudo chown bob mon_fichier.txt
# Changer le propriétaire en 'bob' et le groupe en 'developers'
sudo chown bob:developers mon_fichier.txt
Bonnes pratiques
- Principe du moindre privilège : Donnez toujours les permissions les plus restrictives possible. Un fichier de configuration ne devrait être modifiable que par son propriétaire (
chmod 600). - Utilisez la syntaxe octale dans les scripts :
chmod 755 ...est plus concis et moins ambigu que plusieurs commandes symboliques. - Vérifiez les permissions par défaut : La commande
umaskdéfinit les permissions qui sont retirées à la création d’un fichier. Uneumaskde022est une bonne pratique courante.
Pièges courants
chmod -R 777 .: La pire commande possible. Elle rend tous les fichiers et dossiers du répertoire courant (et de ses enfants) lisibles, modifiables et exécutables par n’importe qui sur le système. C’est une faille de sécurité béante. Ne l’utilisez jamais.- Oublier de rendre un script exécutable : Une erreur classique qui résulte en une erreur “Permission denied” lorsque vous essayez de lancer
./mon_script.sh. La solution :chmod +x mon_script.sh.
Exercices
-
Inspection :
- Créez un nouveau fichier
test.txt. - Utilisez
ls -l test.txtpour voir ses permissions par défaut. - Créez un dossier
test_diret comparez ses permissions par défaut à celles du fichier.
- Créez un nouveau fichier
-
Modification symbolique :
- Retirez toutes les permissions pour le “groupe” et les “autres” sur
test.txt. - Vérifiez le résultat avec
ls -l.
- Retirez toutes les permissions pour le “groupe” et les “autres” sur
-
Modification octale :
- Créez un script
hello.sh. - Utilisez la syntaxe octale pour lui donner les permissions
rwxr-xr-x(755). - Exécutez le script pour confirmer qu’il est bien exécutable.
- Créez un script