Comment vérifier si un fichier est accessible en écriture sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si un fichier est accessible en écriture (writable) sous Linux en utilisant diverses méthodes. Nous commencerons par utiliser la commande test -w pour déterminer rapidement l'accessibilité en écriture et comprendre son utilisation dans les scripts shell.

Ensuite, vous vérifierez en détail les autorisations (permissions) du fichier à l'aide de la commande ls -l, en interprétant la sortie pour comprendre les droits d'accès en fonction du propriétaire, du groupe et des autres utilisateurs. Enfin, vous inspecterez plus en profondeur les informations d'accès au fichier avec la commande stat.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") subgraph Lab Skills linux/echo -.-> lab-558714{{"Comment vérifier si un fichier est accessible en écriture sous Linux"}} linux/test -.-> lab-558714{{"Comment vérifier si un fichier est accessible en écriture sous Linux"}} linux/ls -.-> lab-558714{{"Comment vérifier si un fichier est accessible en écriture sous Linux"}} linux/touch -.-> lab-558714{{"Comment vérifier si un fichier est accessible en écriture sous Linux"}} linux/cd -.-> lab-558714{{"Comment vérifier si un fichier est accessible en écriture sous Linux"}} end

Tester l'accessibilité en écriture avec test -w

Dans cette étape, nous apprendrons à vérifier si vous avez la permission d'écrire dans un fichier ou un répertoire en utilisant la commande test avec l'option -w. Comprendre les autorisations de fichier (file permissions) est crucial sous Linux, car cela détermine qui peut lire, écrire et exécuter des fichiers.

La commande test est une commande intégrée au shell qui vérifie des conditions et renvoie un statut de sortie de 0 (vrai) ou 1 (faux). L'option -w vérifie spécifiquement si un fichier ou un répertoire est accessible en écriture (writable) par l'utilisateur actuel.

Créons un fichier simple dans votre répertoire ~/project. Nous utiliserons la commande touch, qui crée un fichier vide s'il n'existe pas.

Accédez à votre répertoire de projet si vous n'y êtes pas déjà :

cd ~/project

Maintenant, créez un fichier nommé my_test_file.txt :

touch my_test_file.txt

Vous pouvez vérifier que le fichier a été créé en utilisant la commande ls :

ls

Vous devriez voir my_test_file.txt répertorié dans la sortie.

Maintenant, utilisons la commande test -w pour vérifier si vous pouvez écrire dans ce fichier. Nous la combinerons avec une commande echo pour voir le résultat.

test -w my_test_file.txt && echo "Writable" || echo "Not writable"

Décortiquons cette commande :

  • test -w my_test_file.txt : Cela vérifie si my_test_file.txt est accessible en écriture.
  • && echo "Writable" : Si la commande test renvoie vrai (statut de sortie 0), l'opérateur && exécute la commande suivante, qui affiche "Writable".
  • || echo "Not writable" : Si la commande test renvoie faux (statut de sortie 1), l'opérateur || exécute la commande suivante, qui affiche "Not writable".

Étant donné que vous avez créé le fichier en tant qu'utilisateur labex dans votre répertoire personnel, vous devriez avoir les autorisations d'écriture, et la sortie devrait être :

Writable

La commande test -w est souvent utilisée dans les scripts shell pour vérifier les autorisations avant d'essayer d'écrire dans un fichier, évitant ainsi les erreurs potentielles.

Cliquez sur Continue pour passer à l'étape suivante.

Vérifier les autorisations avec ls -l

Dans cette étape, nous utiliserons la commande ls -l pour afficher des informations détaillées sur les fichiers et les répertoires, y compris leurs autorisations (permissions). Cette commande est essentielle pour comprendre qui peut accéder à quoi sur un système Linux.

La commande ls liste les fichiers et les répertoires. L'option -l fournit un format de liste longue ("long listing"), qui inclut les autorisations, le propriétaire, la taille et la date de modification.

Assurez-vous d'être dans le répertoire ~/project :

cd ~/project

Maintenant, exécutez la commande ls -l pour voir les détails des fichiers dans ce répertoire. Vous devriez voir le fichier my_test_file.txt que vous avez créé à l'étape précédente.

ls -l

La sortie ressemblera à ceci :

-rw-rw-r-- 1 labex labex    0 Month Day HH:MM my_test_file.txt

Décortiquons la première partie de la sortie, qui représente les autorisations de fichier :

-rw-rw-r--

Cette chaîne de dix caractères vous indique le type de fichier et ses autorisations pour différents utilisateurs.

  1. Le premier caractère (- dans ce cas) indique le type de fichier.
    • - : Fichier ordinaire (Regular file)
    • d : Répertoire (Directory)
    • l : Lien symbolique (Symbolic link)
    • Et d'autres...
  2. Les neuf caractères suivants sont groupés en trois ensembles de trois :
    • Le premier ensemble (rw-) : Autorisations pour le propriétaire du fichier.
    • Le deuxième ensemble (rw-) : Autorisations pour le groupe auquel le fichier appartient.
    • Le troisième ensemble (r--) : Autorisations pour les autres (tous les autres utilisateurs du système).

Dans chaque ensemble de trois caractères :

  • r : Autorisation de lecture (Read permission) (permet de voir le contenu du fichier ou de lister le contenu d'un répertoire).
  • w : Autorisation d'écriture (Write permission) (permet de modifier le fichier ou de créer/supprimer des fichiers dans un répertoire).
  • x : Autorisation d'exécution (Execute permission) (permet d'exécuter le fichier comme un programme ou d'entrer dans un répertoire).
  • - : Indique que l'autorisation n'est pas accordée.

Donc, pour my_test_file.txt avec les autorisations -rw-rw-r-- :

  • Le propriétaire (labex) a les autorisations de lecture (r) et d'écriture (w).
  • Le groupe (labex) a les autorisations de lecture (r) et d'écriture (w).
  • Les autres ont seulement l'autorisation de lecture (r).

Cette sortie confirme pourquoi la commande test -w à l'étape précédente a retourné "Writable" pour l'utilisateur labex – parce que le propriétaire (labex) a l'autorisation d'écriture (w).

Comprendre la sortie de ls -l est fondamental pour gérer les fichiers et les autorisations sous Linux.

Cliquez sur Continue pour passer à l'étape suivante.

Inspecter l'accès aux fichiers avec stat

Dans cette étape, nous utiliserons la commande stat pour obtenir des informations détaillées sur un fichier ou un système de fichiers. Alors que ls -l vous donne un aperçu rapide, stat fournit un examen beaucoup plus complet des métadonnées du fichier, y compris les horodatages d'accès, de modification et de changement.

Assurez-vous d'être dans le répertoire ~/project :

cd ~/project

Maintenant, utilisons la commande stat sur le fichier my_test_file.txt que vous avez créé précédemment :

stat my_test_file.txt

La sortie sera assez détaillée et pourrait ressembler à ceci :

  File: my_test_file.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: ---h/---d       Inode: ---         Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 5000/   labex)   Gid: ( 5000/   labex)
Access: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Modify: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Change: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
 Birth: -

Examinons certaines des informations clés fournies par stat :

  • File : Le nom du fichier.
  • Size : La taille du fichier en octets.
  • Access: (0664/-rw-rw-r--) : Cette ligne montre les autorisations à la fois au format octal (0664) et symbolique (-rw-rw-r--). Cela correspond aux autorisations que nous avons vues avec ls -l.
  • Uid: ( 5000/ labex) : L'identifiant utilisateur (User ID - UID) et le nom d'utilisateur du propriétaire du fichier.
  • Gid: ( 5000/ labex) : L'identifiant de groupe (Group ID - GID) et le nom du groupe auquel appartient le fichier.
  • Access : La dernière fois que le fichier a été consulté (lu).
  • Modify : La dernière fois que le contenu du fichier a été modifié.
  • Change : La dernière fois que les métadonnées du fichier (comme les autorisations, la propriété, etc.) ont été modifiées.
  • Birth : La date de création du fichier (peut ne pas être disponible sur tous les systèmes de fichiers).

La commande stat offre une exploration plus approfondie des propriétés d'un fichier que ls -l. Elle est particulièrement utile lorsque vous avez besoin d'horodatages précis ou d'informations détaillées sur la propriété et les autorisations des fichiers dans différents formats.

Vous pouvez également utiliser stat avec des options pour obtenir des informations spécifiques. Par exemple, pour voir uniquement les autorisations d'accès au format octal :

stat -c "%a" my_test_file.txt

Cette commande utilise l'option -c pour spécifier un format personnalisé. "%a" est le spécificateur de format pour les autorisations d'accès au format octal. La sortie devrait être :

664

Cela correspond à l'autorisation octale 0664 affichée dans la sortie complète de stat (le zéro initial est souvent omis).

Cliquez sur Continue pour terminer ce laboratoire.

Résumé

Dans ce laboratoire, nous avons appris à vérifier si un fichier est accessible en écriture sous Linux en utilisant la commande test -w. Cette commande est un moyen simple et efficace de déterminer les autorisations d'écriture et est souvent utilisée dans les scripts shell pour éviter les erreurs. Nous avons pratiqué la création d'un fichier, puis l'utilisation de test -w combinée avec les opérateurs && et || pour afficher si le fichier est accessible en écriture.

Nous avons également exploré comment vérifier les autorisations de fichier à l'aide de la commande ls -l, qui fournit des informations détaillées sur la propriété, le groupe et les autorisations des fichiers dans un format lisible par l'homme. Enfin, nous avons appris à inspecter les détails d'accès aux fichiers en utilisant la commande stat, qui offre des informations plus complètes sur l'état d'un fichier, y compris les horodatages d'accès, de modification et de changement.