Executer un script en tant qu'un autre usager

  • Canada
  • GNU/Linux
  • Pine
J'ai le problème suivant:

J'ai 2 usagers: "toto" et "foo"


Est-il possible, sans les permissions root, que "foo" puisse executer une
commande ou un script en tant que "toto" mais sans être toto, i.e. sans
que foo connaisse le mot de passe de toto.

foo et toto sont 2 usagers qui veulent bien collaborer et toto est prêt à
donner les permissions qu'il faut à foo, mais pas son mot de passe, pour
que le tout puisse se faire.

Miguel
 

Re: Executer un script en tant qu'un autre usager

  • Canada
  • GNU/Linux
  • Mutt
  • FOAF
  • PGP

> Est-il possible, sans les permissions root, que "foo" puisse executer une
> commande ou un script en tant que "toto" mais sans être toto, i.e. sans que
> foo connaisse le mot de passe de toto.


Vraiment, vraiment, vraiment compliqué et/car vraiment, vraiment, vraiment
insécuritaire.

La méthode générique implique de mettre le programme en setuid (chmod u+s),
mais ça fonctionne pas pour les shell scripts, car dans ce cas le risque
devient encore plus, plus, plus grand. Pour arriver à faire rouler un shell
script par un autre utilisateur, faut coder un wrapper en C et/ou réécrire le
script en perl (qui lui prend des mesures pour éviter les abus via suid-perl).
Voir plus d'explications (et le code C) sur :
http://www.perl.com/doc/manual/html/pod/perlsec.html#Security_Bugs



> foo et toto sont 2 usagers qui veulent bien collaborer et toto est prêt à
> donner les permissions qu'il faut à foo, mais pas son mot de passe, pour que
> le tout puisse se faire.


toto en donnant les permissions d'exécuter en son nom risque gros de se faire
voler son identité. Si, si. J'insiste.

Chercher « setuid security (hole|problem) » sur Google. Constater.




--
--====|====--
--------================|================--------
Patrice Levesque
http://ptaff.ca/
wayne(à)ptaff.ca
--------================|================--------
--====|====--
--
Pièces jointes
 

Re: Executer un script en tant qu'un autre usager

  • Canada
  • Mozilla Thunderbird
Miguel Tremblay wrote:

> Est-il possible, sans les permissions root, que "foo" puisse executer
> une commande ou un script en tant que "toto" mais sans être toto, i.e.
> sans que foo connaisse le mot de passe de toto.
>
> foo et toto sont 2 usagers qui veulent bien collaborer et toto est
> prêt à donner les permissions qu'il faut à foo, mais pas son mot de
> passe, pour que le tout puisse se faire.


Il y a peut-être une meilleur solution que de donner des droits à un
autre usager. Pquoi as-tu besoin d'exéctuer un programme sous un autre
usager? Est-ce que tu peux être plus explicite sans dévoiler de secret?

Ciao,


--
+-------------------------------------------------------+
| |
| Stefan Michalowski, M. Sc. |
| ------------------ |
| Email: illmnec(à)sympatico.ca |
| GPG Key: http://screamerone.zapto.org/k.asc |
| ---------------------------------- |
| "Provider of Open Paradigm Shifts" |
| |
+-------------------------------------------------------+
 

Re: Executer un script en tant qu'un autre usager

  • Canada
  • GNU/Linux
  • Pine

> Est-ce que tu peux être plus explicite sans dévoiler de secret?


Non, désolé.

Miguel
 

Re: Executer un script en tant qu'un autre usager

  • Canada
  • Mozilla Thunderbird
Miguel Tremblay wrote:

> Non, désolé.


Bon, je vais essayer quand même de voir s'il y a une solution autre que
sudo (qui te permettrait de faire ce que tu veux au prix de la sécurité):

1) Si l'application peut-être exécuté par les deux usagers, mais que ce
sont des données qui sont restreintes à un seul usager, tu pourrais
passer par les permissions UNIX pour arranger les choses. Tu n'aurais
qu'à créer un groupe bar dont foo et toto ferait partie. Les fichiers
appartiendrais à toto et au groupe bar:
chown -R toto:bar /chemin/vers/le/répertoire_avec_les_fichiers/*

Il est bien important de donner l'accès lecture et probablement écriture
à l'usager et au groupe (ug+rw) sur tous les fichiers (écriture
peut-être seulement une partie). Il faut aussi donner les permissions
d'exécutions sur les répertoires en plus des permissions de lecture et
écriture (ug+rwx). Tu pourrais faire le suivant pour mettre les droits
comme il faut:

find /chemin/vers/le/répertoire_avec_les_fichiers/ -type f -exec chmod
ug+rw {} \;
find /chemin/vers/le/répertoire_avec_les_fichiers/ -type d -exec chmod
ug+rwx {} \;

2) Si l'application n'est pas accessible à l'usager, tu pourrais faire 1
pour l'application aussi. Dans ce cas, tous les executables (les
fichiers qui ont x pour l'usager) doivent aussi avoir les permissions
exécutable pour le goupe bar.

3) Si tu as du support pour les ACL, et que l'application n'est pas
accessible à l'usager foo, il y aurait moyen de donner des droits
sophistiqués qui je crois pourrait permettre à l'usager foo d'exécuter
une application sans avoir d'autres accès.

Je devine que ton application est installée dans le home de l'usager
toto et que c'est pour ça que tu veux que foo puisse l'exécuter en tant
que toto. Les solutions 1,2,3 permettraient de faire ça. Tu pourrais
aussi demander de faire une installation comme il faut de l'application
dans /usr/local/ avec les données dans le home de l'usager et utiliser
le truc des permissions de 1.

Bref, utiliser sudo est extrême et une solution boboche à la MS qui
force les gens à utiliser le compte Admin.

Ciao,


--
+-------------------------------------------------------+
| |
| Stefan Michalowski, M. Sc. |
| ------------------ |
| Email: illmnec(à)sympatico.ca |
| GPG Key: http://screamerone.zapto.org/k.asc |
| ---------------------------------- |
| "Provider of Open Paradigm Shifts" |
| |
+-------------------------------------------------------+
 

 

Propulsé par xhtmail