Une place pour une véritable innovation. Partagez vos propres utilitaires créés avec la communauté Manjaro.
Questions et discussions sur la programmation et le codage.
#1Messageil y a 5 ansBonjour,
J'ai fait un script bash qui combiner avec dmenu et rofi me permet de lancer et d’arrêter certain services sur l'ordinateur.
Le script et le menu marche très bien. Cependant, pour effectuer ces actions je doit mettre le pass pour lancer les commandes.
J'aimerai savoir comment faire pour faire en sorte que pour ces commandes il ne me demande pas le pass et effectue l'action.
Merci Pc 1 : Manjaro XFCE4 - I3 WM - proco Pentium© Dual-Core CPU E6700 @ 3.20GHz × 2 - Ram 3 Go - HDD 333.6 Go - Carte graph Intel Corporation 82G33/G31 Express Integrated Graphics Controller
Pc 2 : Manjaro KDE : i7 - 16 Go Ram 10 To Hdd Geforge GTX 670 ( Bientôt réinstallation suite déménagement )
#2Messageil y a 5 anschuuut faut pas le dire mais c'est possible :
avec polkit ou sudoers
polkit :
1) il faut créer une action polkit classique sur ton script avec un id du type "org.manjaro.pkexec.truc"
/usr/share/polkit-1/actions/org.manjaro.pkexec.truc.policy (pas mal d'exemples dans ce dossier)
Ensuite il est possible d'appeler ton script (comme sudo) par pkexec /path/tonscript.sh
A cette étape cela ne change rien sinon que le mot de passe est cette fois demandé par polkit et non plus en console par sudo, il suffit de tester ...
Par exemple systemctl à une action polkit (org.freedesktop.systemd1.manage-units)
2) Et, enfin le contournement : Ajouter une règle polkit liée à ton action polkit que tu viens de créer
/etc/polkit-1/rules.d/99-truc.rules (à créer)
avec un contenu du genre:
polkit.addRule(function (action,subject) {
if (action.id == 'org.manjaro.pkexec.truc' && subject.isInGroup("wheel")) {
return polkit.Result.YES;
}
});
Avec cette règle, on dit a polkit : si l'utilisateur est dans le groupe wheel et qu'il demande l'action polkit "truc.run" alors on ne demande pas de mot de passe (il faut bien sûr lancer le script avec pkexec)
---
PS: tout ceci est dans l'excellent wiki arch RTFM Manjaro STABLE - Linux lts - fish - Kde5 - icore N100 - 16Go RAM - ssd - efi
#mount /dev/archlinux /mnt/manjaro
#4Messageil y a 5 ansj'ai créé il y a un moment un paquet aur qui crée des actions polkit mais QUE depuis un paquet pkcreate
avec pacman : pkcreate -p pacman
il va me créer le .policy :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
<vendor>Manjaro</vendor>
<vendor_url>http://www.manjaro.fr</vendor_url>
<icon_name></icon_name>
<action id="org.manjaro.fr.pkexec.pacman.run-pacman">
<description>Lancer pacman en tant que root</description>
<message>Authentication is required to run as root.</message>
<message xml:lang="fr">Authentification requise pour lancer "pacman" en tant que root.</message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>auth_admin_keep</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/pacman</annotate>
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
</action>
</policyconfig>
A toi de mettre ton id à "<action id=", c'est libre, par exemple org.manjaro.le_nom_de_ton_script
, il faut juste qu'il soit unique, ensuite tu renommes le fichier avec c'est id (pas obligatoire)
A toi de changer le path et nom du script dans "org.freedesktop.policykit.exec.path"
Si l'action est bonne, lors de l'appel pkexec tonscript
, la fenêtre de polkit va afficher dans "détails" ton id (org.....ton_script), si pas le bon id c'est que l'action est mal écrite
Ce modèle pour pacman est bon, maintenant je peux faire un pkexec pacman -Syu
et si je mets "/home/patrick/test.sh" dans org.freedesktop.policykit.exec.path, il fonctionne encore très bien
dans mon script j'ai : echo $EUID; echo $USER
et il me retourne que du bon :
Manjaro STABLE - Linux lts - fish - Kde5 - icore N100 - 16Go RAM - ssd - efi
#mount /dev/archlinux /mnt/manjaro
#5Messageil y a 5 ansBon j'ai tester mais j'ai encore un peut de mal ( je vais continuer a travailler dessus quand j'aurais plus de temps )
Pour le moment j'ai autoriser certaines commandes à ne pas demander de pass ( régler dans sudoers ) Comme ça pas besoin de faire plein de manip ( même si je veux quand même réussir à le faire marcher ) Pc 1 : Manjaro XFCE4 - I3 WM - proco Pentium© Dual-Core CPU E6700 @ 3.20GHz × 2 - Ram 3 Go - HDD 333.6 Go - Carte graph Intel Corporation 82G33/G31 Express Integrated Graphics Controller
Pc 2 : Manjaro KDE : i7 - 16 Go Ram 10 To Hdd Geforge GTX 670 ( Bientôt réinstallation suite déménagement )