Forum Linux.débutant lancer un script en tant qu'un autre utilisateur

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
-4
6
déc.
2014

Bonjour,
j'aimerais savoir si il est possible de lancer une script ou programme en passer par un autre utilisateur.

exemple: on est l'utilisateur A et on fais "sh script.sh B" et sa fais comme si c'était B qui lancer le script

merci d'avance

(j'aimerais évité de passer par visudo)

  • # su -c

    Posté par  . Évalué à 2.

    su -c script.sh B

    • [^] # Re: su -c

      Posté par  . Évalué à 2. Dernière modification le 06 décembre 2014 à 14:08.

      je crois qu'il faut etre root ou avoir le mot de passe de l'utilisateur B pour faire çà, mais c'est l'idée en effet.

      ce qui ne marchera pas pour ton script PHP qui lance un script SH avec l'utilisateur www-data qui execute le PHP.

      • [^] # Re: su -c

        Posté par  . Évalué à 2.

        je crois qu'il faut etre root ou avoir le mot de passe de l'utilisateur B pour faire çà, mais c'est l'idée en effet.

        Sinon, « sudo -u B script.sh », ça marche aussi, avec son propre mot de passe, à condition d'avoir les bons privilèges.

      • [^] # Re: su -c

        Posté par  (site web personnel, Mastodon) . Évalué à 1.

        Non, mais il faut connaître le mot de passe de B (su c'est pour switch user) et la commande c'est plutôt :

        su - B -c "script et arguments"

        Il y a aussi polkit qui peut t'aider avec pkexec --user B script, qui te demandera aussi le mot de passe de B.

        Pour plus de détails man et pour sudo, il faut l'avoir configuré avant de pouvoir le faire, mais dans ce cas se sera ton mot de passe qui sera demandé.

        • [^] # Re: su -c

          Posté par  . Évalué à 1.

          et si mon programme a des droit suid et appartiens a B
          Normalement si je le lance avec A, il se lance avec B ?

          • [^] # Re: su -c

            Posté par  . Évalué à 2.

            Si c'est un programme (binaire) oui, si c'est un script (un fichier texte commençant par #!) non.

          • [^] # Re: su -c

            Posté par  . Évalué à 2.

            Hé non :) Un petit soucis de sécurité; imagine que le script utilise une commande, disons test, [ ou [[ (y a de fortes chances )
            et qu'un petit malin a changé la variable PATH pour aller avoir un petit programme qui s'appelle [ avant celui qu'on trouve dans /usr/bin/, enfin je dis [ ça peut être toute commande appelée par le script.

            Bref c'est pas une bonne idée, et pour palier à ce petit soucis les bits de set[ug]id sur un script ne servent à rien.

            Il ne faut pas décorner les boeufs avant d'avoir semé le vent

        • [^] # Re: su -c

          Posté par  . Évalué à 4.

          Non, mais il faut connaître le mot de passe de B (su c'est pour switch user) et la commande c'est plutôt

          « su » veut dire initialement « Substitute User », ce qui est effectivement une définition plus correcte (« se substituer à… »).

          « Switch User » a plutôt l'air d'être une définition « rétro-inventée » à partir d'une commande déjà en place depuis longtemps, et qu'a retrouvé un peu partout au point de trouver maintenant les deux définitions dans les différents manuels pour mettre tout le monde d'accord. Mais « switch » n'est pas réellement exact puisqu'il n'y a ni permutation d'utilisateur, ni changement de session.

  • # si c'est lié à ton post precedent

    Posté par  . Évalué à 2.

    ca vaut peut-etre le cout pour toi de regarder du coté du module suexec apache.
    ca doit de permettre d'executer le site en tant qu'un utilisateur autre que www-data (donc dans ton cas admin_serveur_de_jeux)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.