logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 27-09-2022 22:02:53

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

[Python]Executer seulement une partie du script avec les droits root

Bonjour

Je suis en train de réaliser un programme en Python qui doit faire appel à un API, traiter les données reçues, puis exécuter des tâches nécessitant les droits root en fonction de ces traitements. Je voudrais bien éviter de faire au moins la première partie (appel à l'API) en root, donc, exécuter les premières tâches avec les droit d'un utilisateur, puis, passer root seulement à la fin mais en utilisant des données construite au préalable dans le même script.

Y-a-t-il une solution pour faire ça intégralement en Python (j'ai lu ça et là des choses mentionnant os.setuid() et fork() mais sans comprendre comment les utiliser) ou dois-je nécessairement passer par sudo ?

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#2 28-09-2022 11:12:32

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [Python]Executer seulement une partie du script avec les droits root

Hello
Avec pkexec peut etre

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#3 28-09-2022 11:31:17

ubub
Membre
Distrib. : Debian
(G)UI : xfce
Inscription : 14-05-2019

Re : [Python]Executer seulement une partie du script avec les droits root

Bonjour,
peut-être explorer aussi du coté de runuser et setpriv

su est surtout fait pour les utilisateurs non privilégiés, la  solution
       recommandée pour les utilisateurs privilégiés (par exemple, les scripts
       exécutés par le  superutilisateur)  est  d'utiliser  la  commande  sans
       set-user-ID  runuser(1)  qui ne nécessite pas d'authentification et qui
       fournit une configuration PAM distincte. Si la session PAM n'est pas du
       tout  indispensable,  alors la solution recommandée consiste à utiliser
       la commande setpriv(1)


man su

En ligne

#4 28-09-2022 12:04:36

cyrille
CA Debian-Facile
Lieu : Nowhere
Distrib. : SID + FreeBSD. Stable sur serveurs.
(G)UI : Xfce/Openbox
Inscription : 21-06-2020
Site Web

Re : [Python]Executer seulement une partie du script avec les droits root

Bonjour
Perso je prendrai le problème à l'envers, je le lancerai en root et passerai par su pour les commandes non root


#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import subprocess

subprocess.run(["whoami"])
subprocess.run(["su", "ragnarok", "-c", "whoami"])



Résultat

#python3 user.py
root
ragnarok




Sinon il va stopper le script en plein milieu pour la saisie du passwd

++

Dernière modification par cyrille (28-09-2022 12:10:44)


"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."

Association Debian-Facile | Les cahiers du débutant | ISO Debian-FacilePage perso. sur #df

Hors ligne

#5 28-09-2022 12:23:02

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : [Python]Executer seulement une partie du script avec les droits root

cyrille a écrit :

Perso je prendrai le problème à l'envers, je le lancerai en root et passerai par su pour les commandes non root



C’est ce que je fais aussi en général, un script lancé en root et une diminution des privilèges gérée par le script.
Par contre je ne connais pas les outils les plus appropriés pour ça. Comme cyrille j’ai tendance à passer par su, mais je suis sûr qu’il existe des systèmes plus appropriés.


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#6 28-09-2022 21:45:54

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : [Python]Executer seulement une partie du script avec les droits root

cyrille a écrit :

Perso je prendrai le problème à l'envers, je le lancerai en root et passerai par su pour les commandes non root

Oui, c'est bien ce à quoi j'avais pensé, mais il me faut faire root->non-root->root puisque seule les dernières tâches nécessitent les droits root.

C'est probablement cette allé et retour qui a fait que j'ai lu l'histoire du fork mais je ne vois pas trop comment faire, et surtout comment échanger des variables entres 2 processus.

Une solution encore plus simple pourrait être de passer par 2 scripts et un fichier intermédiaire, mais je trouve (peut-être à tort d'ailleurs wink ) que ça manque d'élégance.


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

Pied de page des forums