L'autorisation d'exécution du bit est vérifiée par le noyau lors de l'exécution de l'appel système exec (2) (et ses cousins). Vous n'en aurez besoin que pour exécuter des programmes au niveau du noyau.
Seuls les programmes avec ce bit activé (quel que soit le résultat qui vous est attribué en tant que propriétaire, groupe ou autre est ce qui est vérifié) peuvent être exec () ed par le noyau.
Une autre chose différente est ce que fait le shell lors de l'interprétation d'un script shell ou perl, ou quel que soit l'interpréteur que vous avez. Sur les scripts, le noyau vérifie le #! ...
au début du fichier comme un nombre magique, et lance le shell indiqué ici (vous aurez également besoin d'une autorisation d'exécution pour le shell), et vous ont besoin des autorisations de lecture sur ce script, car le shell doit l'ouvrir et le lire pour être interprété. Pour les scripts shell, vous aurez besoin d'une autorisation de lecture ainsi que d'une autorisation d'exécution. Mais pour les scripts shell, vous avez uniquement besoin d'une autorisation de lecture, car vous pouvez toujours exécuter un script shell en exécutant le shell et en passant le script shell en tant que paramètre (ou fichier d'entrée )
Bien sûr, comme cela a été indiqué, le bit d'exécution peut être contourné en copiant le programme et en le rendant exécutable, mais vous ne pourrez pas le copier si vous n'avez pas lu autorisations pour faire cette copie (vous continuez à pouvoir l'exécuter).
Essayez de changer (en tant que root bien sûr) les autorisations en ls (1) et faites-en 0111
( --- x - x - x
) et essayez d'en faire une copie exécutable, et voyez comment vous ne pouvez pas obtenir votre copie exécutable, même si vous continuez à pouvoir l'exécuter.
Sur les répertoires, exécuter bit signifie une chose différente. Le noyau utilise l'autorisation ' x
' lors de l'itération dans le chemin (dans la fonction noyau namei () ) donc si vous n'avez pas les autorisations d'exécution sur un répertoire, vous ne soit l'utiliser, ni les fichiers accessibles par son intermédiaire. Même vous pouvez lire le contenu d'un répertoire avec des autorisations de lecture, mais vous ne pouvez pas accéder aux fichiers qu'il contient. Ou au contraire, vous pouvez avoir des autorisations d'exécution sur un répertoire mais pas un accès en lecture, et vous pourrez utiliser les fichiers à l'intérieur, mais vous ne pourrez pas voir le contenu du répertoire.