Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

changer plusieurs fois d'utilisateur pendant l'execution

3 réponses
Avatar
hardballer
Bonjour a tous !

J'ai un script python qui ne peut etre execut=E9 que par l'utilisateur
root

Dans ce script j'ai besoin a plusieurs fois de changer d'utilisateur ,
pour ce faire j'utilise les commandes :


id=3Dcommands.getstatusoutput("id -u nomuser")
os.setuid(int(id[1]))


cela semble plutot bient fonctionner, par contre =E0 d'autres moments
je dois repasser en root (mon script execute l'installation de
plusieurs programmes), or je ne peut utiliser les commandes =E9crites
pr=E9c=E9demment, j'obtient le message d'erreur suivant :

OSError: [Errno 1] Operation not permitted

ce qui est surement du a la sp=E9cificit=E9 de l'utilisateur root...


Y a t'il donc un moyen de repasser en root dans le script(le script est
originellement ex=E9cut=E9 par root), et si ouiy a t il un moyen de le
faire sans avoir a retaper le mot de passe ?? j'ai cru voir que l'on ne
peut changer que l'utilisateur effectif du script avec la commande
seteuid est ce que c'est la solution ???

3 réponses

Avatar
Christophe Cavalaria
hardballer wrote:

Bonjour a tous !

J'ai un script python qui ne peut etre executé que par l'utilisateur
root

Dans ce script j'ai besoin a plusieurs fois de changer d'utilisateur ,
pour ce faire j'utilise les commandes :


id=commands.getstatusoutput("id -u nomuser")
os.setuid(int(id[1]))


cela semble plutot bient fonctionner, par contre à d'autres moments
je dois repasser en root (mon script execute l'installation de
plusieurs programmes), or je ne peut utiliser les commandes écrites
précédemment, j'obtient le message d'erreur suivant :

OSError: [Errno 1] Operation not permitted

ce qui est surement du a la spécificité de l'utilisateur root...


Y a t'il donc un moyen de repasser en root dans le script(le script est
originellement exécuté par root), et si ouiy a t il un moyen de le
faire sans avoir a retaper le mot de passe ?? j'ai cru voir que l'on ne
peut changer que l'utilisateur effectif du script avec la commande
seteuid est ce que c'est la solution ???


Si un processus se retire de lui même les droits roots, c'est pour une
question de sécurité. Il n'y aurait aucune sécurité s'il était alors
possible de récuperer les droits root après malgré tout. Ce que tu veux
faire est donc impossible, il te faut trouver une autre façon de faire.

Avatar
rafi
Christophe Cavalaria wrote:
hardballer wrote:

Y a t'il donc un moyen de repasser en root dans le script(le script est
originellement exécuté par root), et si ouiy a t il un moyen de le
faire sans avoir a retaper le mot de passe ?? j'ai cru voir que l'on ne
peut changer que l'utilisateur effectif du script avec la commande
seteuid est ce que c'est la solution ???



Si un processus se retire de lui même les droits roots, c'est pour une
question de sécurité. Il n'y aurait aucune sécurité s'il était alors
possible de récuperer les droits root après malgré tout. Ce que tu veux
faire est donc impossible, il te faut trouver une autre façon de faire.


une solution serait peut être de découper le scripts en plus petits
scripts (un par "fonction" à exécuter comme un usager + un pour la trame
principale à exécuter comme root) puis de lancer chacun de ces scripts,
depuis le script principal en root, dans un processus fils et de ne
changer l'utilisateur que dans le cadre de ce "sous script". (il est
peut être nécessaire de lancer chacun des "sous script" avec un
interpréteur propre à l'aide d'une commande système).

mes 2 cents

--
rafi

"Imagination is more important than knowledge."
(Albert Einstein)


Avatar
hardballer
merci de ces réponses .. je vais continuer a creuser dans cette voie