Que fait l'autorisation «exécuter»?

31

Je suis choqué que je ne comprenne toujours pas l'autorisation "Exécuter" sous Linux.

Il existe trois autorisations: lire, écrire et exécuter. Je comprends que lire et écrire littéralement, mais que fait exactement exécuter?

Disons que j'ai une example.phpautorisation d'exécution. Que puis-je faire avec example.php?

user45326
la source

Réponses:

32

Fondamentalement, cela signifie que vous pouvez dire 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 écriture vous permettrait de le modifier, l'accès en lecture vous permettrait de le visualiser, 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é, parce que 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'exécuter autorisations 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 approprié (et pas seulement du texte). Ensuite, vous pouvez simplement exécuter votre script comme

./scénario

au lieu d'avoir à faire

python ./script

bdk
la source
Qu'est-ce que cela signifie pour les types de fichiers non textuels, par exemple. .pngou .avi?
iono
1
Fondamentalement, la même chose, l'extension de fichier n'a pas d'importance. Si vous avez #!/bin/bashau début de votre .avifichier, il sera exécuté en bash. S'il s'agit d'un vrai format avi, vous ne pourrez probablement pas l'exécuter car l'interpréter comme des commandes n'aura aucun sens et échouera.
Mifeet
Est-ce #!vraiment interprété par le noyau?
masterxilo
17

"exécuter" permet à l'utilisateur d'exécuter des exécutables. Pour les répertoires, il est permis d'entrer dans le répertoire à l'aide de la commande cd.

Phil Rykoff
la source
1
Cet accès à la partie répertoire est énorme. Vous ne devineriez jamais cela uniquement à partir du nom du mode lui-même.
oldboy
2

À des fins pratiques, l'autorisation de lire implique la capacité à exécuter.

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

Adam Lee
la source
Cela a en fait beaucoup de sens.
masterxilo
J'ai eu une confusion avec READ / EXECUTE et j'attendais une telle réponse. merci
T.Todua
2

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

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

  • ajouter #!/usr/bin/phpau début du script
  • ajouter la permission + x
  • votre script doit être 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. Il peut s'agir d'un nom de chemin absolu, comme /etc/xdg/fooou /home/fred/bar, ou d'un répertoire relatif, comme dir1/prog1ou ./prog2.
Maciek Sawicki
la source