40 votes

Que fait la permission "exécuter" ?

Je suis choqué que je ne comprenne toujours pas la permission "Exécuter" sous Linux.

Il y a trois permissions - lecture, écriture et exécution. Je comprends la lecture et l'écriture littéralement, mais que fait exactement l'exécution?

Disons que j'ai exemple.php avec la permission d'exécution. Que puis-je faire avec exemple.php?

40voto

Essentiellement, cela signifie que vous pouvez indiquer au système d'exploitation d'exécuter le code dans le fichier. Par exemple, si le fichier était un exécutable binaire, l'accès en lecture vous permettrait de le visualiser, l'accès en écriture vous permettrait de le modifier, mais sans autorisations d'exécution, vous ne seriez pas en mesure d'exécuter le programme. Dans le cas d'un script, c'est un peu plus compliqué, car vous n'avez pas nécessairement besoin de "lancer" le programme, vous pouvez simplement lire son contenu dans un interpréteur, qui a lui-même le privilège d'exécution, mais vous n'avez pas besoin d'autorisations d'exécution sur le script lui-même.

Certains scripts sous Linux sont eux-mêmes exécutables, vous verrez souvent une ligne en haut comme

#!/bin/bash

ou

#!/bin/python

Cette ligne indique au noyau que le fichier peut être exécuté en appelant le programme pertinent (et n'est pas juste du texte). Ensuite, vous pouvez simplement exécuter votre script comme

./script

au lieu de devoir faire

python ./script

19voto

Louis Gerbarg Points 33025

"exécuter" permet à l'utilisateur d'exécuter des exécutables. Pour les répertoires, c'est l'autorisation d'entrer dans le répertoire en utilisant la commande cd.

4voto

Adam Lee Points 140

Pour des raisons pratiques, la permission de lire implique la capacité d'exécuter.

Cependant, l'inverse n'est pas vrai; il y a une certaine valeur dans la capacité à donner la permission d'exécuter du code sans donner la permission de le lire.

3voto

Maciek Sawicki Points 1120

C'est pour exécuter des applications à partir de l'interface graphique ou de la ligne de commande. Pour une utilisation "normale" de php (via un serveur web), cela ne change rien. En parlant précisément, cela dépend de la configuration, mais dans la plupart des cas courants, vous n'avez pas besoin de la permission +x pour permettre le chargement de votre page web php via le navigateur.

Pour exécuter depuis la ligne de commande, vous avez besoin de :

  • ajouter #!/usr/bin/php au début du script
  • ajouter la permission +x
  • votre script doit se trouver dans votre chemin de recherche exécutable (variable d'environnement $PATH) ou vous devez spécifier le répertoire dans lequel il se trouve avant le nom de votre script.  Cela peut être un chemin absolu, comme /etc/xdg/foo ou /home/fred/bar, ou un répertoire relatif, comme dir1/prog1 ou ./prog2.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X