Imiter gksu sur Fedora

20/05/2009

Sur Ubuntu, les utilisateurs ont l’habitude de sudo et de son interface graphique gksudo. Fedora ne propose pas sudo de base et par conséquent vous n’avez pas gksudo. Sur Fedora, on utilise le bon vieux “su” en console.

Bien que l’outil “gksu” n’est pas intégré ni packagé, on voit parfois un popup apparaître nous demandant notre mot de passe root. Par exemple, en lançant l’outil d’installation de paquet ou pour utiliser un outil d’administration. Ce popup est en fait une utilisation de l’outil “consolehelper” qui permet d’utiliser “PAM” pour vérifier les accès. Si un besoin spécifique est nécessaire, il demande le mot de passe root via un popup.

Nous pouvons rendre ce système adaptable à un genre de “gksu”. En d’autres termes, nous pouvons réaliser un outil qui permet de demander le mot de passe root pour des commandes que nous aimerions lancer avec les droits d’administrateur.

J’ai nommé cet outil “askroot”… et si je dis “outil” je fais un abus de langage tant la manip est simple.

Voici ce que je vous propose de faire.

En premier lieu, on va créer un script qui sera “caché” du système. En fait, on va le placer ailleurs que dans les chemins par défaut (\$PATH). Ouvrez un terminal (console) et authentifiez vous en root

su -

Ensuite, copiez coller ces lignes dans votre console: `

mkdir -p /usr/share/apps/askroot
cat 1>  /usr/share/apps/askroot/askroot <<EOF
#!/bin/bash
exec \$@
EOF

chmod +x /usr/share/apps/askroot/askroot

cat 1> /etc/pam.d/askroot <<EOF
#%PAM-1.0 
auth        include     config-util
account     include     config-util
session     include     config-util
EOF

cat 1>  /etc/security/console.apps/askroot <<EOF
USER=root
PROGRAM=/usr/share/apps/askroot/askroot
SESSION=true
EOF

ln -s /usr/bin/consolehelper /usr/bin/askroot

C’est terminé ! Fermez le terminal et testons. Pressez les touches ALT+F2, un popup vous propose de taper une commande. Entrez “gnome-terminal”.

Pour le moment, vous voyez dans le “prompt” votre login suivit du nom de la machine, du genre:

[patachou@patrice-desktop ~]$

Fermez ce terminal, et tentons de l’ouvrir en root: ALT+F2 et dans l’entrée de texte tapez “askroot gnome-terminal”

Un popup apparait et vous demande votre mot de passe root. Entrez le… et cette fois le terminal s’ouvre et vous laisse apparaitre “root@” suivit de votre nom de machine. Par exemple chez moi:

root@patrice-desktop ~]# 

Vous l’aurez compris, maintenant vous pouvez lancer une commande root sans ouvrir de console, graphiquement, etc…

Ce petit outil est particulièrement utile pour des scripts que vous voulez rendre executable par root sans ouvrir une console. J’ai par exemple un “lien vers une application”:

askroot 'service httpd restart' | \
    zenity --pulsate --progress \
    --auto-kill --title "Relance apache..." \
    --text "Apache en cours de redémarrage"

En gros, Le script me demande mon mot de passe root si besoin et relance apache. Zenity me permet de savoir si le redémarrage est terminé.

Notez que le system “consolehelper” permet de garder en session les droits. De ce fait, dans une session Gnome, si vous avez déjà entré votre mot de passe root pour une commande “askroot”, il ne vous le remdemande pas. Ceci à condition que la commande soit exactement la même :)

Bref, amusez vous maintenant à créer des icones sur le bureau pour relancer des services de la même manière que je le fais. Vous allez gagner un temps fou !

Astuce: vous voulez taper “gksu” au lieu de “askroot”, faites un lien symbolique:

askroot "ln -s /usr/bin/askroot /usr/bin/gksu"

et le tour est joué :)

Ça peut vous intéresser aussi


Orange TV sur Linux Fedora 14

Me voilà déménagé à Ecully, et pour le coup je ...


Poste de développement PHP sous Fedora

Linux est un système parfait pour développer. Simple d’installation,...


Fedora 11 mon histoire

Je pense que ce billet peut faire peur à quiconque ...


Fglrx sur Fedora et fin du lag

Après quelques semaines sur ma machine Fedora 9 (64bits), je ...

Merci de m'aider à financer mes services

Si vous avez apprécié cet article, je vous serai reconnaissant de m'aider à me payer une petite bière :)

Si vous voulez en savoir plus sur l'utilisation de flattr sur mon blog, lisez cette page: Ayez pitié de moi

Commentaires

Ajouter un commentaire

baby_sad_clown - 09/07/2009

en root: yum install beesu

@++

Foaly - 07/11/2012

Merci pour ce script! Et merci au commentaire précédent pour beesu, que je ne connaissais pas. Mais du coup, comme askroot fonctionne bien…

Ajouter un commentaire

(*) Votre e-mail ne sera ni revendu, ni rendu public, ni utilisé pour vous proposer des mails commerciaux. Il n'est utilisé que pour vous contacter en cas de souci avec le contenu du commentaire, ou pour vous prévenir d'un nouveau commentaire si vous avez coché la case prévue à cet effet.