Comment vérifier si un fichier est exécutable 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, vous apprendrez à déterminer si un fichier est exécutable sous Linux en utilisant diverses méthodes. Vous commencerez par utiliser la commande test avec l'option -x pour vérifier les autorisations d'exécution et comprendre comment interpréter son statut de sortie.

Ensuite, vous explorerez comment utiliser la commande ls -l pour afficher les autorisations détaillées des fichiers et identifier le drapeau d'exécution. Enfin, vous apprendrez à utiliser la commande stat pour inspecter les informations d'accès aux fichiers, offrant ainsi une autre façon de confirmer l'exécutabilité.


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/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") subgraph Lab Skills linux/echo -.-> lab-558712{{"Comment vérifier si un fichier est exécutable sous Linux"}} linux/test -.-> lab-558712{{"Comment vérifier si un fichier est exécutable sous Linux"}} linux/ls -.-> lab-558712{{"Comment vérifier si un fichier est exécutable sous Linux"}} linux/chmod -.-> lab-558712{{"Comment vérifier si un fichier est exécutable sous Linux"}} linux/cd -.-> lab-558712{{"Comment vérifier si un fichier est exécutable sous Linux"}} end

Tester l'exécutabilité avec test -x

Dans cette étape, vous apprendrez à vérifier si un fichier est exécutable en utilisant la commande test avec l'option -x. La commande test est une commande intégrée au shell qui évalue des expressions conditionnelles. L'option -x vérifie spécifiquement les autorisations d'exécution.

Tout d'abord, créons un simple fichier texte dans votre répertoire ~/project. Nous utiliserons la commande echo pour insérer du texte dans un fichier nommé my_script.sh.

echo "echo 'Hello from the script!'" > ~/project/my_script.sh

Maintenant, vérifions si ce fichier est exécutable. Par défaut, lorsque vous créez un nouveau fichier de cette manière, il n'a pas d'autorisations d'exécution.

Utilisez la commande test -x suivie du chemin du fichier :

test -x ~/project/my_script.sh

Après avoir exécuté cette commande, vous ne verrez aucune sortie si le test est réussi (ce qui signifie que le fichier N'EST PAS exécutable). Si le fichier était exécutable, test -x retournerait un statut de 0, qui est généralement interprété comme "vrai" ou "succès" en script shell, mais il n'imprime rien dans le terminal par défaut.

Pour voir le résultat de la commande test, nous pouvons vérifier le statut de sortie de la commande précédente en utilisant $?. Un statut de sortie de 0 signifie que le test était vrai (le fichier est exécutable), et un statut non nul (généralement 1) signifie que le test était faux (le fichier n'est pas exécutable).

echo $?

Vous devriez voir une sortie de 1, indiquant que my_script.sh n'est actuellement pas exécutable.

Maintenant, rendons le fichier exécutable en utilisant la commande chmod. chmod est utilisé pour modifier les autorisations des fichiers et des répertoires. Nous utiliserons +x pour ajouter l'autorisation d'exécution pour le propriétaire du fichier.

chmod +x ~/project/my_script.sh

Maintenant, testons à nouveau l'exécutabilité :

test -x ~/project/my_script.sh

Et vérifions le statut de sortie :

echo $?

Cette fois, la sortie devrait être 0, confirmant que le fichier est maintenant exécutable.

Enfin, essayons d'exécuter le script pour voir la sortie :

~/project/my_script.sh

Vous devriez voir :

Hello from the script!

Cela confirme que vous avez réussi à rendre le fichier exécutable et à l'exécuter.

Vérifier les autorisations avec ls -l

Dans cette étape, vous apprendrez à afficher les autorisations détaillées des fichiers en utilisant la commande ls -l. Cette commande fournit un format de liste détaillée, affichant diverses attributs des fichiers et des répertoires, notamment les autorisations, la propriété, la taille et la date de modification.

Accédez à votre répertoire ~/project si vous n'y êtes pas déjà. Vous pouvez utiliser la commande cd :

cd ~/project

Maintenant, liste les fichiers de ce répertoire en utilisant la commande ls -l :

ls -l

Vous devriez voir une sortie similaire à celle-ci (les détails exacts comme la date et l'heure varieront) :

-rwxr-xr-x 1 labex labex   30 <date> <time> my_script.sh

Décortiquons la première partie de la sortie, qui représente les autorisations du fichier : -rwxr-xr-x. Cette chaîne de dix caractères vous indique beaucoup de choses sur qui peut faire quoi avec le fichier.

Le premier caractère indique le type de fichier :

  • - : Un fichier ordinaire (comme notre my_script.sh)
  • d : Un répertoire
  • l : Un lien symbolique

Les neuf caractères suivants sont groupés en trois ensembles de trois, représentant les autorisations pour :

  1. Propriétaire : L'utilisateur qui possède le fichier (dans ce cas, labex).
  2. Groupe : Le groupe qui possède le fichier (également labex).
  3. Autres : Tous les autres utilisateurs du système.

Dans chaque ensemble de trois caractères, les autorisations sont représentées comme suit :

  • r : Autorisation de lecture (permet de voir le contenu du fichier)
  • w : Autorisation d'écriture (permet de modifier ou de supprimer le fichier)
  • x : Autorisation d'exécution (permet d'exécuter le fichier comme un programme)
  • - : Indique que l'autorisation n'est pas accordée

Donc, pour -rwxr-xr-x :

  • Le propriétaire (labex) a les autorisations rwx : lecture, écriture et exécution.
  • Le groupe (labex) a les autorisations r-x : lecture et exécution, mais pas d'écriture.
  • Les autres ont les autorisations r-x : lecture et exécution, mais pas d'écriture.

Cette sortie confirme qu'après avoir utilisé chmod +x à l'étape précédente, le propriétaire (labex) a maintenant l'autorisation d'exécution (x) pour my_script.sh.

Vous pouvez également utiliser ls -l pour vérifier les autorisations des répertoires. Par exemple, regardons les autorisations du répertoire ~/project lui-même :

ls -ld ~/project

L'option -d indique à ls de lister le répertoire lui-même, et non son contenu. La sortie pourrait ressembler à ceci :

drwxr-xr-x 2 labex labex 4096 <date> <time> /home/labex/project

Ici, le premier caractère d indique qu'il s'agit d'un répertoire. Les autorisations rwxr-xr-x signifient :

  • Le propriétaire (labex) a les autorisations de lecture, d'écriture et d'exécution sur le répertoire. Pour un répertoire, l'autorisation d'exécution vous permet d'entrer dans le répertoire et d'accéder à son contenu.
  • Le groupe (labex) et les autres ont les autorisations de lecture et d'exécution sur le répertoire, mais pas d'écriture.

Comprendre la sortie de ls -l est fondamental pour travailler avec les fichiers et les autorisations sous Linux.

Inspecter l'accès aux fichiers avec stat

Dans cette étape, vous utiliserez la commande stat pour obtenir des informations détaillées sur un fichier, notamment ses horodatages d'accès, de modification et de changement, ainsi que ses autorisations dans un format plus structuré que ls -l.

La commande stat affiche l'état d'un fichier. Elle peut être particulièrement utile pour les scripts ou lorsque vous avez besoin de timestamps précis.

Utilisons stat sur le fichier my_script.sh que vous avez créé dans les étapes précédentes. Assurez-vous d'être dans le répertoire ~/project ou fournissez le chemin complet du fichier.

stat ~/project/my_script.sh

Vous verrez une sortie similaire à celle-ci :

  File: /home/labex/project/my_script.sh
  Size: 30              Blocks: 8          IO Block: 4096   regular file
Device: <device_id>     Inode: <inode_number>  Links: 1
Access: (<permissions>/-rwxr-xr-x)  Uid: ( 5000/   labex)   Gid: ( 5000/   labex)
Access: <date> <time>.<nanoseconds> +<timezone_offset>
Modify: <date> <time>.<nanoseconds> +<timezone_offset>
Change: <date> <time>.<nanoseconds> +<timezone_offset>
 Birth: -

Examinons quelques lignes clés de la sortie :

  • File : Le nom et le chemin du fichier.
  • Size : La taille du fichier en octets.
  • Access: (<permissions>/-rwxr-xr-x) : Cette ligne montre les autorisations du fichier à la fois au format octal (par exemple, 0755 qui correspond à rwxr-xr-x) et au format symbolique que vous avez vu avec ls -l. Elle montre également l'identifiant utilisateur (Uid) et l'identifiant de groupe (Gid) du propriétaire et du groupe du 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 (telles que 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 vue plus détaillée des informations sur le fichier par rapport à ls -l. Elle est particulièrement utile lorsque vous avez besoin d'examiner les timestamps ou la représentation numérique des autorisations.

Vous pouvez également utiliser stat sur les répertoires :

stat ~/project

La sortie sera similaire, mais le type File indiquera qu'il s'agit d'un répertoire.

Expérimentez avec stat sur différents fichiers et répertoires de votre répertoire ~/project pour voir les variations dans la sortie.

Résumé

Dans ce laboratoire (lab), vous avez appris à vérifier si un fichier est exécutable sous Linux en utilisant la commande test -x. Vous avez créé un fichier de script simple, utilisé test -x et vérifié le code de sortie (echo $?) pour confirmer son état initial non exécutable (code de sortie 1). Vous avez ensuite utilisé chmod +x pour ajouter les autorisations d'exécution et vérifié le changement avec test -x et echo $?, observant un code de sortie de 0.

Vous avez également exploré des méthodes alternatives pour vérifier les autorisations des fichiers. En utilisant ls -l, vous avez appris à interpréter la chaîne d'autorisations, en particulier le caractère 'x', pour identifier les fichiers exécutables. Enfin, vous avez utilisé la commande stat pour afficher des informations détaillées sur le fichier, y compris les autorisations d'accès, offrant ainsi une autre façon de confirmer l'exécutabilité.