LIRE fichier executable SANS PERMISSION read

LIRE fichier executable SANS PERMISSION read - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 21-02-2008 à 17:16:23    

Bonjour,
 
OU, grosso modo, comment se fait-il que l'on puisse executer des fichiers sans pouvoir les lire ?
Exemple, si il y a un fichier executable avec les permissions --x--x--x ou 111, comment se fait-il que l'on puisse l'executer sans pour autant avoir les droits de lecture.... ?
En effet, pour executer un fichier ou un binaire, il faut bien pouvoir le lire, non ?
 
je suis sur qu'il y a une raison evidente dont je n'ai pas conscience, si c'est evident pour vous merci d'avance de m'eclairer sur cette bizarrerie :)
 
++


Message édité par kryzantem le 21-02-2008 à 17:16:47
Reply

Marsh Posté le 21-02-2008 à 17:16:23   

Reply

Marsh Posté le 21-02-2008 à 20:19:23    


[nico:~] chmod 111 check_snmp_fmd.pl  
[nico:~] ./check_snmp_fmd.pl  
Can't open perl script "./check_snmp_fmd.pl": Permission non accordée


:spamafote:


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 21-02-2008 à 21:08:37    

black_lord a écrit :


[nico:~] chmod 111 check_snmp_fmd.pl  
[nico:~] ./check_snmp_fmd.pl  
Can't open perl script "./check_snmp_fmd.pl": Permission non accordée


:spamafote:


 
Ca c'est parce que c'est du script. Le kernel détermine si ton fichier est un binaire exécutable, en le lisant (enfin il le sait quoi). Si c'est un exécutable, il va l'exécuter sinon il en déduit que c'est un fichier texte il lit la première ligne qui est "#!/usb/bin/perl" (à ce moment je ne sais pas s'il faut absolument les droits en lecture, mais de toute façon ça revient au même, voir la suite). Il connait l'interpréteur donc il exécute l'interprétant en ton nom et flush le contenu du fichier sur le stdin de l'interpréteur, et là si tu n'as pas les droits en lecture, ça ne marchera de toute façon pas.
 
Pour revenir à la question, non tu n'as pas besoin de droit en lecture pour exécuter un binaire. C'est très utile pour faire des programmes avec le bit suid, pour éviter que l'on ne "pompe" le fichier pour voir ce qu'il contient.


Message édité par czh le 21-02-2008 à 21:24:25
Reply

Marsh Posté le 29-02-2008 à 03:51:38    

merci de ces explications, ce que je ne saisis pas c'est la difference de traitement entre un fichier script executable et binaire executable.. Quand on lance un fichier binaire executable il s'execute egalement avec l'uid/gid de l'utilisateur l'appelant, comme pour un fichier script. Dans les 2 cas le fichier est de toute facon lu pour etre execute... bizarre je trouve...

Message cité 1 fois
Message édité par kryzantem le 29-02-2008 à 03:53:18
Reply

Marsh Posté le 29-02-2008 à 04:01:47    

kryzantem a écrit :

merci de ces explications, ce que je ne saisis pas c'est la difference de traitement entre un fichier script executable et binaire executable.. Quand on lance un fichier binaire executable il s'execute egalement avec l'uid/gid de l'utilisateur l'appelant, comme pour un fichier script. Dans les 2 cas le fichier est de toute facon lu pour etre execute... bizarre je trouve...


 
un binaire c'est du langage machine, ce n'est pas lu par l'os, contrairement à un script interprété qui est doit être lu par l'interpréteur (celui défini dans le shebang par exemple) afin d'en faire du code machine (compris directement par le cpu)


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 01-03-2008 à 10:08:11    

ben oui mais le code machine faut bien que le cpu le lise.... il faut bien que l'OS fasse le lien entre le materiel et logiciel.... sinon a quoi servirait-il ?

Reply

Marsh Posté le 01-03-2008 à 10:32:09    

kryzantem a écrit :

ben oui mais le code machine faut bien que le cpu le lise.... il faut bien que l'OS fasse le lien entre le materiel et logiciel.... sinon a quoi servirait-il ?


Oui mais comme tu le dis, c'est l'OS qui l'execute, et c'est lui aussi qui gère les permissions, donc si t'as le droit en execution, il a droit de le lire pour toi :D


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 01-03-2008 à 10:33:00    

zecrazytux a écrit :


 
un binaire c'est du langage machine, ce n'est pas lu par l'os, contrairement à un script interprété qui est doit être lu par l'interpréteur (celui défini dans le shebang par exemple) afin d'en faire du code machine (compris directement par le cpu)


 [:mullet]


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 01-03-2008 à 11:38:19    


 
t'as vu à quelle heure j'ai écris ça ?  :lol:


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 03-03-2008 à 02:49:16    

e_esprit a écrit :


Oui mais comme tu le dis, c'est l'OS qui l'execute, et c'est lui aussi qui gère les permissions, donc si t'as le droit en execution, il a droit de le lire pour toi :D


 
oui mais alors pourquoi ne peut-il pas faire la meme chose pour un fichier script executable : le lire pour moi pour lexecuter sans pour autant que j'ai le droit de le lire...  :pt1cable:

Message cité 1 fois
Message édité par kryzantem le 03-03-2008 à 02:49:40
Reply

Marsh Posté le 03-03-2008 à 02:49:16   

Reply

Marsh Posté le 03-03-2008 à 08:59:42    

kryzantem a écrit :

oui mais alors pourquoi ne peut-il pas faire la meme chose pour un fichier script executable : le lire pour moi pour lexecuter sans pour autant que j'ai le droit de le lire...  :pt1cable:

 

à mon avis, parce qu'executer un script revient à exécuter l'interpréteur (jusque là pas de problèmes), puis lire le contenu du fichier script pour ensuite l'envoyer sur l'entrée standard de l'interpréteur...

Message cité 1 fois
Message édité par darkpenguin le 03-03-2008 à 09:01:09

---------------
Counting all the assh*les in the room, well I'm definitely not alone...
Reply

Marsh Posté le 03-03-2008 à 09:06:46    

Voila, c'est pas un vrai executable, c'est une facilité :D


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 04-03-2008 à 06:08:27    

darkpenguin a écrit :


 
à mon avis, parce qu'executer un script revient à exécuter l'interpréteur (jusque là pas de problèmes), puis lire le contenu du fichier script pour ensuite l'envoyer sur l'entrée standard de l'interpréteur...


 
ca parait etre l'hypothese la plus probable :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed