Pb de droits utilisateur ds un script

Fermé
Manu - 3 oct. 2005 à 09:06
 Manu - 5 oct. 2005 à 14:13
Bonjour,

J'ai ecrit un script qui fonctionne sous la session root mais pas sous la session utilisateur (acces a des fichiers interdits).
Il faudrait que l'execution du script soit transparente vis a vis de l'utilisateur de sa session, c'est a dire qu'il n'ait pas a rentrer de mdp.
Est-ce possible ? Comment fonctionnne la commande 'sudo' ?

Merci d'avance pour votre aide. Je suis bien embêté !!

8 réponses

[Dal] Messages postés 6187 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 14 juin 2024 1 088
3 oct. 2005 à 10:24
Salut Manu,

J'ai ecrit un script qui fonctionne sous la session root mais pas sous la session utilisateur (acces a des fichiers interdits).

Tu pourrais simplement octroyer à ces fichiers les droits dont tu as besoin à un groupe auquel appartiendraient tes utilisateurs.

Donc :

- Tu crées un groupe d'utilisateur
- Tu y inclus tous les utilisateurs auxquels tu veux donner ce type de droits
- Tu affecte les permissions adéquates de groupe aux fichiers "interdits"

Il faudrait que l'execution du script soit transparente vis a vis de l'utilisateur de sa session, c'est a dire qu'il n'ait pas a rentrer de mdp.

Si tu nous disais ce que fait ton script (la commande de ton script qui échoue et son message d'erreur), on irait plus vite.

Est-ce possible ?

Il y a des chances.

Comment fonctionnne la commande 'sudo' ?

man sudo

Mais c'est peut être pas ce dont tu as besoin.


Dal
0
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
3 oct. 2005 à 11:29
Tu peux essayer de rendre le script en suid, c.-a-d. quand il est lance par un utilisiteur il aura les droits de root, il faut faire (en root):
cd /reptoire_script
chown root:root script
chmod +xs script

apres un "ls -l script" affiche:
-rwsr-sr-x    ...... script

ici les "s" montrent que c'est bien en "suid". Cependant je crois ca ne marche pas toujours, notamment si le script est dans le home de l'utilisateur. Il vaut mieux le copier vers /usr/bin/... ou similaire.

Bien-entendu ce genre de choses (rendre de programme/scripts suid) est potentiellement mauvais pour la securite.
0
[Dal] Messages postés 6187 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 14 juin 2024 1 088
3 oct. 2005 à 11:44
Salut kmf31,

Il me semble que la plupart des shells devraient refuser en réalité d'exécuter un script de la sorte.

Il faudrait créer un programme en C ad hoc (ou avec un autre langage permettant de générer un code objet exécutable).

http://lea-linux.org/dev/suid_scripts.html

L'interpréteur Perl fait de même également, on peut faire le suid sur le script Perl, mais ne il devrait, en fin de compte, pas s'exécuter avec ces permisisons en principe.

Le seul moyen de contourner la difficulté est de rendre suid l'interpréteur lui même.. ce qui est, d'un point de vue de la sécurité, véritablement suicidaire.


Dal
0
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501 > [Dal] Messages postés 6187 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 14 juin 2024
3 oct. 2005 à 13:25
J'ai deja soupconne (sans etre sur) qu'il faudrait rendre la shell elle meme suid ce qui est en effet tres dangereux et bien sur a eviter.

Peut-etre il suffit d'ecrire un pogramme C qui fait simplement appel a un script (avec un appel de "system(...)" ?) et si le programme C est suid ca pourrait suffir meme si la shell ni le script eux memes ne sont pas suid.

Mais a la fin ca revient peut-etre a refaire le "sudo" ??
0
[Dal] Messages postés 6187 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 14 juin 2024 1 088 > kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007
3 oct. 2005 à 14:22
Peut-etre il suffit d'ecrire un pogramme C qui fait simplement appel a un script (avec un appel de "system(...)" ?) et si le programme C est suid

Oui, c'est en effet apparemment une solution (jamais testée personnellement). Elle est aussi suggérée par cet article de Léa, qui propose aussi d'encadrer le lanceur de scripts de certaines sécurités, pour s'assurer que seuls certains scripts sont autorisés à êtres lancés de la sorte (il y a un programme C d'exemple).

Je rajouterai bien aussi le stockage de la somme md5 du script et le contrôle de son intégrité avant lancement...

..sinon.. sur un plan plus conceptuel, je crois que les permissions Unix sont là pour être utilisées et que si le script nécessite des droits root alors qu'il est destiné à être utilisé par des users, il y a un problème.


Dal
0
Merci pour vos nombreuses reponses..Le probleme semble alors plus complexe que je l'avais prevu!
Je vais essayer de le resoudre a l'aide de vos conseils avisés.
Des que ca marche, je vous fait signe.
Merci
0
Bonjour,

suite a vos conseils, j'ai tout de meme essayé de rendre le script en suid, mais comme vous l'aviez justement soupconné, la manip' m'a été refusée. Pourtant, le script a executer est bien sous la session 'root'.
Mais je dois dire que l'idee de creer un programme C en ad oc ne m'enthousiasme pas trop. C'est ne pas le probleme du langage C (que je connais assez bien), mais la facon de m'y prendre m'est inconnue.
Alors, je suis encore bloqué. :-(
Je relance un appel a votre aide, et j'aimerais savoir si je peux effectuer la manip' sans avoir acces au bon vieux C.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
[Dal] Messages postés 6187 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 14 juin 2024 1 088
4 oct. 2005 à 18:16
Salut Manu,

Voilà ce que je te disais dans ma réponse initiale :


> Tu pourrais simplement octroyer à ces fichiers les droits dont tu as
> besoin à un groupe auquel appartiendraient tes utilisateurs.
>
> Donc :
>
> - Tu crées un groupe d'utilisateur
> - Tu y inclus tous les utilisateurs auxquels tu veux donner ce type de
> droits - Tu affecte les permissions adéquates de groupe aux fichiers
> "interdits"


Dis nous :
- quels sont tes "fichiers interdits"
- les permissions qu'il y a dessus (fait un ls -l dessus)
- ce que tu veux faire avec (que fait ton script et où il se bloque- copies nous ton script)

Ton problème peut, éventuellement, être réglé en ajustant les permissions des fichiers (avec chmod / chown) et/ou les droits des utilisateurs (avec useradd, ou en éditant le fichier /etc/groups), ou en concevant ton script de façon légèrement différente, ...

mais là, il nous faut plus d'éléments pour t'aider concrètement.


Dal
0
Salut Dal,

J'ai enfin reussi a copier les fichiers et repertoires que je voulais en modifiant les permissions. Je me suis un peu compliqué la vie...
Derniere chose, et ensuite je te laisse tranquille, saurais tu comment faire pour lancer une appli ds un script ? Il me semble que c'est nom_appli & mais j'aimerais avoir confirmation.
Merci en tout cas pour ton aide.

Manu
0
[Dal] Messages postés 6187 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 14 juin 2024 1 088
5 oct. 2005 à 12:10
Salut Manu,

saurais tu comment faire pour lancer une appli ds un script ? Il me semble que c'est nom_appli &

Si tu mets le "&", le shell lance l'application en tâche de fond et passe immédiatement à la commande suivante.

Si l'exécution de la suite de script dépend de la bonne exécution de ton application, et que tu veux attendre la fin de son exécution avant de poursuivre l'exécution de ton script, retire le "&".


Dal
0
Merci Dal pour tes indications. Mon script avance petit a petit.
En tout cas, Linux c'est pas si facile que ca et je vois que j'ai qques progres a faire !
A bientot
0