web-dev-qa-db-fra.com

Autoriser le programme "root" à s'exécuter sans privilèges

J'ai changé mon raccourci ctrl-alt-l afin qu'au lieu de simplement verrouiller l'écran, le système passe en suspension.

(pour référence, la commande est gksudo pm-suspend-hybrid)

comme vous pouvez le constater, le programme doit être exécuté en tant que root. J'ai donc ajouté le gksudo. J'aimerais vraiment que le système suspende sans avoir à entrer le mot de passe. Y a-t-il un moyen de faire ça?

4
jackweirdy

Ouvrez un terminal et exécutez Sudo visudo.

Ensuite, vous pouvez éditer le fichier sudoers où vous pouvez spécifier qui peut exécuter quelle commande en tant que root avec et sans mot de passe. A la fin du fichier, vous collez soit cette ligne

nonprivilegeduser ALL=NOPASSWD:/usr/sbin/pm-suspend-hybrid

pour que chaque utilisateur puisse exécuter cette commande en tant que root sans mot de passe, ou

Your_Username ALL=NOPASSWD:/usr/sbin/pm-suspend-hybrid

pour que seul votre utilisateur puisse le faire (vous devez bien sûr l’ajuster pour votre utilisateur). Ensuite, vous enregistrez le fichier (devrait être Ctrl + O) et quittez le programme (Ctrl + X).

Enfin, vous devez modifier votre commande pour lire Sudo pm-suspend-hybrid au lieu de gksudo pm-suspend-hybrid.

NOTE: Il devrait également être possible de faire cela avec dbus (ne nécessite pas d'édition sudoers), mais cette solution présente l'avantage de fonctionner avec toutes les interfaces utilisateur.

11
jPlatte

Normalement, c'est le but SUID bit , mais dans votre cas, je remplacerais probablement pm-suspend-hybrid par un autre appel ne nécessitant pas d'autorisations root (vous n'avez pas besoin de saisir de mot de passe pour suspendre Unité après tout).

Utilisez simplement la commande suivante à la place (sans Sudo):

dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend

Références:

1
jnv
  1. Tapez la commande:

    Sudo visudo
    

    puis entrez le mot de passe.

  2. Vous pouvez voir la ligne ci-dessous dans le terminal

    %Sudo   ALL=(ALL:ALL) ALL
    

    éditer la ligne% Sudo avec

    %Sudo   ALL=(ALL:ALL) NOPASSWD:ALL
    
  3. Enregistrez les modifications en utilisant CtrlX.

0
GANGA SIVA KRISHNA