Pages : 1
#1 Le 24/09/2020, à 15:28
- Nuliel

à quoi sert la permission d'exécuter?
Bonjour,
J'ai découvert aujourd'hui qu'on peut exécuter des programmes qui n'ont pas la permission d'exécuter, du moment qu'il a la permission de lecture.
Exemple pour bash:
./monprogrammedemande le droit d'exécution,
bash monprogrammenon.
On peut faire la même chose avec des programmes C compilés.
Du coup, question toute bête: à quoi sert vraiment la permission d'exécuter?
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
En ligne
#2 Le 24/09/2020, à 16:36
- rogn...
Re : à quoi sert la permission d'exécuter?
Je suis étonné que bash monprogramme ne te demande rien mais... à moitié car "bash" va en fait chercher un exécutable avec les droits x comme exécutable.
ls -l $(which bash)
-rwxr-xr-x 1 root root 928016 10 juil. 18:57 /usr/bin/bashDonc va exécuter comme si tu faisais
programme <fichier à lire>#3 Le 25/09/2020, à 08:32
- bruno
Re : à quoi sert la permission d'exécuter?
Très bonne question ![]()
Pour les scripts, dès lors que le fichier est accessible en lecture on peut l'exécuter en appelant l'interpréteur du langage utilisé :
python truc.py
perl machin.pl
bash bidule.sh
php bitonio.phpetc.
ou implicitement si l'interpréteur est spécifié dans le shebang du fichier . Par exemple si le fchier truc.py commence par :
#!/usr/bin/env python3on peut exécuter avec
./truc.pyqui utilisera automatiquement python 3.
Rendre le script exécutable a d'abord un côté pratique. Il suffit d’appeler le script par son nom sans avoir à se préoccuper du langage utilisé, ni de sa version, dès lors que le shebang est correctement établi.
C'est d'autant plus utile lorsque le script se trouve dans le PATH (ex : /usr/local/bin) ou qu'il doit être appelé par un autre script, un démon, une tâche cron, une unité systemd, etc.
Un autre intérêt est la possibilité d'avoir des scripts exécutables mais non accessibles en lecture ou d'associer cela avec SUID, SGID.
On peut faire la même chose avec des programmes C compilés.
Tu as un exemple ?
Hors ligne
#4 Le 25/09/2020, à 08:58
- Nuliel

Re : à quoi sert la permission d'exécuter?
Merci rogn... et bruno pour vos réponses.
Effectivement, on se ramène au final à des programmes exécutables.
Effectivement, dans le cas de l'utilisation du suid/sgid, empêcher la lecture tout en gardant l'exécution est utile
Pour des programmes 64 bits, on peut faire
/lib64/ld-linux-x86-64.so.2 ./programmeet programme n'a pas besoin d'avoir le bit exécutable pour être exécuté (j'ai testé avec un programme assez simple)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
En ligne
#5 Le 25/09/2020, à 09:40
- bruno
Re : à quoi sert la permission d'exécuter?
Ah bien vu ! J’aurais du y penser puisqu'il suffit de faire :
file programmepour savoir quel interpréteur utiliser pour exécuter programme.
Mais bon c'est moins pratique que de taper juste programme ![]()
Hors ligne
#6 Le 25/09/2020, à 21:59
- Nuliel

Re : à quoi sert la permission d'exécuter?
J'annonce qu'il y a une deuxième méthode pour lancer un programme compilé, je pourrai annoncer la réponse dès que je l'aurais trouvé (dans moins d'une semaine)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
En ligne
#7 Le 26/09/2020, à 06:48
- diesel

Re : à quoi sert la permission d'exécuter?
Je trouve ça très nul qu'on puisse exécuter un programme dont le bit exécutables est désactivé.
Ça veut dire, en gros, que quasiment n'importe qui peut exécuter n'importe quoi sur la machine. C'est grave. ![]()
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#8 Le 26/09/2020, à 07:17
- bruno
Re : à quoi sert la permission d'exécuter?
Ça veut dire, en gros, que quasiment n'importe qui peut exécuter n'importe quoi sur la machine. C'est grave.
Non il faut que le fichier soit accessible en lecture à l'utilisateur et que sont exécution ne soit pas restreinte par un autre mécanisme (ACL, apparmor, SELinux, SUID, StickyBit, etc.)
Je comprends que cela puisse paraître curieux ou peu logique, mais le bit d'exécution n'est là que pour des raisons pratiques (cf #3). Sur les fichiers ce n'est pas une « permission » à proprement parler.
@nuliel : il y a certainement plusieurs moyens pour lancer un programme compilé (ELF) qui n'est pas exécutable, à commencer par les outils de développement et de débogage.
Hors ligne
#9 Le 26/09/2020, à 12:30
- erresse

Re : à quoi sert la permission d'exécuter?
C'est un peu un faux débat, car en fait, lorsque tu exécutes un script qui n'est pas marqué comme exécutable, ce n'est pas le script que tu lances, mais l'interpréteur qui lui, lit le script et l'exécute.
Dans ce cas, le script n'est rien d'autre qu'un "document" utilisé par un programme, il n'est pas réellement un programme lui-même...
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#10 Le 26/09/2020, à 13:10
- bruno
Re : à quoi sert la permission d'exécuter?
C'est un peu un faux débat, car en fait, lorsque tu exécutes un script qui n'est pas marqué comme exécutable, ce n'est pas le script que tu lances, mais l'interpréteur qui lui, lit le script et l'exécute.
Et quand le script est marqué comme exécutable, que se passe-t-il ?
Et bien ce n'est pas le script que tu lances mais l'interpréteur précisé dans le shebang qui exécute le script.
Dans ce cas, le script n'est rien d'autre qu'un "document" utilisé par un programme, il n'est pas réellement un programme lui-même...
Un script est un programme.
Tu veux sans doute faire la distinction entre un programme sous forme de fichier texte interprété par un autre programme (Bash, Python, Perl, Php, Ruby, etc.) et un programme binaire compilé. Mais dans ce débat sur l'utilité du bit d'exécution, cette distinction n'a pas lieu d'être.
Hors ligne
#11 Le 26/09/2020, à 14:00
- diesel

Re : à quoi sert la permission d'exécuter?
Nous sommes bien d'accord.
Il n'empêche que j'aimerais bien pouvoir interdire l'exécution de tout ce que je n'ai pas autorisé (ou ce que canonical n'a pas autorisé). Je vous vois venir, vous allez me dire que snap est fait pour ça... Faut quand-même pas déconner.
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#12 Le 26/09/2020, à 14:22
- bruno
Re : à quoi sert la permission d'exécuter?
snap… pouah
Si tu crées un fichier exécutable en 700 (rwx------), toi seul pourra l'exécuter.
Les exécutables installés par les paquets le sont par tout le monde sauf restriction supplémentaire (demande d'élévation des privilèges).
Je ne vois pas où est le problème…
Hors ligne
#13 Le 26/09/2020, à 16:44
- Nuliel

Re : à quoi sert la permission d'exécuter?
Sans le droit de lecture (à défaut d'avoir le droit d'exécution), on ne peut pas lancer le programme. Donc pas d'inquiétude diesel.
Non non, snap n'a rien à voir, je cherche seulement à comprendre les permissions sous linux. En fait j'ai des cours sur la sécurité des systèmes, d'où la question.
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
En ligne
#14 Le 26/09/2020, à 16:51
- erresse

Re : à quoi sert la permission d'exécuter?
Un script est un programme.
Tu veux sans doute faire la distinction entre un programme sous forme de fichier texte interprété par un autre programme (Bash, Python, Perl, Php, Ruby, etc.) et un programme binaire compilé. Mais dans ce débat sur l'utilité du bit d'exécution, cette distinction n'a pas lieu d'être.
C'est vrai aussi, en fait je voulais juste expliquer que le script marqué exécutable est plus ou moins considéré comme un programme exécutable. En définitive, ce bit ne sert qu'à ça, indiquer au système que ce fichier contient des instructions par opposition à un simple fichier texte.
Si tu retires ce bit sur un vrai exécutable binaire, en double-cliquant dessus, il te l'ouvre comme un fichier texte au lieu de l'exécuter.
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#15 Le 26/09/2020, à 19:25
- diesel

Re : à quoi sert la permission d'exécuter?
snap… pouah
Si tu crées un fichier exécutable en 700 (rwx------), toi seul pourra l'exécuter.
Les exécutables installés par les paquets le sont par tout le monde sauf restriction supplémentaire (demande d'élévation des privilèges).
Je ne vois pas où est le problème…
Ben..., le problème est que quelqu'un de mal intentionné réussisse à installer un exécutable malveillant (sans le bit d'exécution) et réussisse à le lancer malgré tout.
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
Pages : 1