Bonjour,
j'ai un script sur lequel je met les droits en --x--x--x
Et lorsque je tente de le lancer j'ai un "permission denied"
c'est normal ça? Je ne trouve aucune réponse claire nulle part....
merci pour tout éclaircissement![]()
Bonjour,
j'ai un script sur lequel je met les droits en --x--x--x
Et lorsque je tente de le lancer j'ai un "permission denied"
c'est normal ça? Je ne trouve aucune réponse claire nulle part....
merci pour tout éclaircissement![]()
les utilisateurs n'en ont pas toujours conscience mais chaque fois qu'on lance un programme on en fait en réalité une copie dans la mémoire donc le fichier doit être lisible pour être copié...donc R & X.
Le shell est un interpréteur de commandes; Donc si tu empêche la lecture, il ne peut pas lire et donc pas interpréter les commandes. Le probleme n'est pas le meme pour un binaire, il me semble.
J'avais fait cette solution de contournement tordue :
Supposons que le shell appartient au user toto et que titi doit pouvoir l exécuter sans pouvoir lire le code.
je crée le script monscript.sh avec le user toto avec les droits RWX pour toto. Les droits pour titi on s'en fiche, donc j avais probablement mis les droits rwx------
Je crée un programme en langage C monprog.c qui fait juste un exec du shell monscript.sh, que je compile en "monprog".
Je lui mets des droits afin que titi puisse l executer mais je met egalement un droit supplementaire qu on appelle le 'set uid bit' : Le programme appartenant à toto et ayant le setuid bit s'exécute avec les permissions de toto, et donc aura le droit d executer le shell.
conclusion, Titi aura exécuté le contenu du shell de toto sans pouvoir le lire... mais quel bordel...
Je te laisse le soin de cherche sur le net comment on positionne le set uid bit car je ne m'en souviens plus.
bon courage.
ok c'est bien ce que je pensais. Mais bon je voulais avoir confirmation car mon client me tanne pour que je mette ses scripts en --x: avant de lui répondre que c'est impossible je préferais avoir un avis ici
résolu![]()
Bonjour
Uniquement pour les scripts car les exécutables, eux, s'exécutent directement sans être lus (bon peut-être qu'ils sont lus par le noyau mais absolument pas par l'utilisateur) donc pour les exécutables, le x suffit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 moi@debian:~$ /usr/bin/id && /bin/ls -l /bin/ls /usr/bin/id uid=2001(moi) gid=2000(users) groupes=2000(users),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),108(netdev),109(bluetooth),115(scanner) ---x--x--x 1 root root 96400 21 avril 2012 /bin/ls ---x--x--x 1 root root 26708 21 avril 2012 /usr/bin/id moi@debian:~$
Exact. Le x suffit
Oui ça marche. Toutefois un utilisateur n'ayant aucun droit, il est absurde de parler des droits de titi...
Le chmod octal a 4 chiffres. Le premier étant à 0 par défaut n'est généralement pas nécessaire c'est pourquoi on voit comunément 3 chiffres.
Mais si on positionne ce premier a une valeur différente de 0, on pourra placer
1 => le sticky bit
2 => le setgid
4 => le setuid
Et tout autre chiffre sera vu comme la combinaison de ces 3 premiers
Ou bien on rajoute les droits "sst" dans le chmod littéral => chmod u+s ...
A la limite, tu peux même mettre tes scripts en r-- ils pourront quand-même être exécutés. Faudra juste spécifier "sh nom_du_script" pour indiquer à Unix qu'il doit utiliser l'exécutable sh pour traiter le script.
Mais en revanche, le r reste impératif et c'est sans appel...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Partager