Chaque fichier qui se trouve dans un système de fichiers compatible POSIX (Ext4, Btrfs, XFS, JFS, etc.) a des "bits de mode" qui lui sont attribués.
Pour rendre un fichier exécutable sous Linux, le bit de mode exécutable doit être activé.
Pour définir le bit de mode exécutable, la commande chmod est utilisée comme ceci :
chmod u+x <file>
Avec cela, vous pouvez exécuter ledit fichier depuis le terminal :
./file
C'était le résumé rapide. Voyons les choses un peu en détail.
Rendre un fichier exécutable sous Linux
Il existe plusieurs façons de rendre un fichier exécutable sous Linux. Les méthodes les plus courantes consistent à utiliser le chmod
commande, de différentes manières.
Pour vérifier si vous pouvez exécuter un fichier, utilisez le -l
drapeau avec ls
commande.
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
Dans la première colonne, -rw-r--r--
signifie que le propriétaire peut lire et écrire, que les utilisateurs du groupe ne peuvent que lire et que tous les autres ne peuvent que lire le fichier.
Notez l'absence de x
à partir des symboles d'autorisation. Cela signifie que lhb.txt
n'est pas exécutable.
Je vous recommande vivement de lire sur les autorisations de fichiers Linux et de réviser vos bases pour mieux comprendre ces commandes.
Méthode 1 :Rendre le fichier exécutable pour tout le monde
La première méthode, et la plus simple, consiste à rendre un fichier exécutable à l'aide de la commande suivante :
chmod +x <file>
Le x
flag est de définir ou de désactiver l'autorisation exécutable d'un fichier. Et en utilisant +
signe avant x
signifie que nous voulons le définir comme un fichier exécutable.
Cela rendra le fichier exécutable pour le propriétaire, le groupe et tous les autres. N'importe qui sur le système pourra également l'exécuter.
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod +x lhb.txt
$ ls -l lhb.txt
-rwxr-xr-x 1 pratham staff 0 Mar 10 20:49 lhb.txt
Comme vous pouvez le voir maintenant, tout le monde, le propriétaire, le groupe et les autres ont l'exécutable x
jeu de bits. Cela signifie que tout le monde peut exécuter ce fichier maintenant.
Méthode 2 :Rendre le fichier exécutable uniquement pour certains utilisateurs ou groupes
Si vous ne voulez pas que tout le monde puisse exécuter un fichier, vous devez spécifier des classes avant d'ajouter/supprimer des autorisations de fichier.
Les cours disponibles sont :
u
:autorisations pour le propriétaire/utilisateurg
:autorisations pour le groupeo
:autorisations pour les autresa
:autorisations pour tout le monde
Lorsque vous spécifiez une classe, la syntaxe est essentiellement similaire à celle que vous avez vue dans la première méthode.
chmod <class>+x <file>
Cela signifie que si je veux rendre le fichier exécutable de manière à ce que seul le propriétaire du fichier puisse l'exécuter, et personne d'autre, je dois utiliser la commande suivante :
chmod u+x <file>
Voici un exemple :
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod u+x lhb.txt
$ ls -l lhb.txt
-rwxr--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
De même, pour le rendre exécutable pour tout le monde dans le groupe propriétaire de ce fichier, je dois utiliser la commande suivante :
chmod g+x <file>
Voici un exemple :
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod g+x lhb.txt
$ ls -l lhb.txt
-rw-r-xr-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
Lorsque vous spécifiez le a
classe, c'est presque comme si vous n'en spécifiiez aucune. Jetons un coup d'œil.
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod +x lhb.txt
$ ls -l lhb.txt
-rwxr-xr-x 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod 644 lhb.txt #reset permissions
$ chmod a+x lhb.txt
$ ls -l lhb.txt
-rwxr-xr-x 1 pratham staff 0 Mar 10 20:49 lhb.txt
Ces commandes peuvent apparaître différemment, mais elles ont le même résultat.
Méthode 3 :Utiliser les nombres octaux
Si vous suivez la première méthode, vous activez uniquement le drapeau exécutable d'un fichier en faisant un +x
, ce qui permet à n'importe qui de l'exécuter.
Mais, parfois, vous ne voudrez peut-être pas que tout le monde exécute un fichier, peut-être qu'il devrait avoir besoin de certains privilèges. Dans ce cas, vous pouvez spécifier l'ensemble complet des autorisations.
Cela se fait généralement en fournissant une valeur octale ou une valeur symbolique pour activer les autorisations de fichiers.
Cela vous permet d'avoir un contrôle plus précis sur la façon dont les drapeaux sont définis. Vous trouverez ci-dessous la syntaxe d'utilisation des valeurs octales avec chmod
commande :
chmod <octal> <file>
Si vous n'êtes pas bon avec les chiffres, vous pouvez utiliser une calculatrice chmod en ligne, qui vous aide à générer des valeurs octales correctes et ainsi éviter d'utiliser la mauvaise valeur et de gâcher les autorisations de fichiers.
Supposons que je souhaite rendre le fichier exécutable uniquement pour le propriétaire et le groupe, je dois d'abord connaître ses autorisations actuelles et y ajouter les bits exécutables à l'aide de [chmod-calculator].
Voyons comment procéder.
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod 754 lhb.txt
$ ls -l lhb.txt
-rwxr-xr-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
Comme vous pouvez le voir, seuls le propriétaire et le groupe peuvent exécuter le fichier.
Conclusion
Cet article explique comment rendre un fichier exécutable dans un système Linux. Il s'est principalement concentré sur les différentes façons d'utiliser le chmod
commande. Si vous voulez en savoir plus, nous avons quelques exemples sur la façon d'utiliser le chmod
commande.