#1 Le 07/10/2008, à 03:42
- Fondateur0426
Script Bash, "downgrader" utilisateur pour "display" actuel
Bonjour à tous,
Premièrement, j'aimerais remercier toute la communauté francophone (et anglophone) d'Ubuntu. J'y ai trouvé au cours des années plusieurs réponses à mes questions, même si je suis un utilisateur assez chevronné de GNU/Linux depuis 1 lustre (littéralement). Mais là, je bloque.
J'ai un problème de script Bash.
Je vais vous expliquer le problème : j'ai un ordinateur portable avec Compiz d'activé. J'aimerais que lorsque je débranche le courant secteur, Compiz soit remplacé par Metacity de GNOME (ou Kwin de KDE). Le remplacement est effectué par l'excellent script "compiz-switch". Et vice-versa.
Lorsque je branche ou débranche le secteur, le script /etc/acpi/power.sh est roulé. Cela fait rouler, selon si le portable est sur le secteur ou la batterie, les scripts situé dans /etc/acpi/ac.d/*.sh ou /etc/acpi/battery.d/*.sh.
J'ai mis des scripts dans ces répertoires contenant la commande "/usr/bin/compiz-switch".
Si j'exécute ces scripts manuellement, en tant qu'utilisateur "guillaume", c'est-à-dire moi, ça marche. Or, lorsque le script "power.sh" est exécuté (tout comme les scripts que lui-même exécute, comme le mien), c'est en tant que root.
Or, root n'a pas accès à mon "display". Si j'exécute manuellement mon en tant que root, ça ne marche pas non plus.
Devrais-je exporter mon display dans le script? Apparamment ça ne fonctionne pas, même si je fais un "xhost +" avant de lancer mon script.
Est-ce qu'il serait possible faire en sorte que mon script exécute en root s'exécute en tant que "guillaume", avec son environnement, son environnement graphique, etc. ?
Je peux être plus clair si nécessaire, mais le problème c'est qu'un script exécuté en root, même avec un environnement graphique, ne peut accéder à ces ressources graphiques.
Merci de votre aide!
Guillaume Gervais,
Montréal, Québec.
Hors ligne
#2 Le 08/10/2008, à 11:27
- MacLane45
Re : Script Bash, "downgrader" utilisateur pour "display" actuel
Salut Fondateur0426
Est-ce qu'il serait possible faire en sorte que mon script exécute en root s'exécute en tant que "guillaume", avec son environnement, son environnement graphique, etc. ?
Oui bien sur, je suppose que ton script est lancer par root, à ce moment la :
su - guillaume
devrait bien se passer, cependant l'environnement graphique ne sera pas chargé. Tu peux néanmoins repérer les processus du user guillaume avec les commandes :
ps -ef | grep guillaume | grep -v grep (en tant que root)
ps -ef | grep $USER | grep -v grep (en tant que guillaume)
Bon courage
@+
if exist $probleme ;
then Googlise au moins une demie heure; plus une demie heure de doc Ubuntu;
else A lire absolument avant de poster !
fi
Hors ligne