10 votes

Comment donner des privilèges d'arrêt à un utilisateur ?

J'utilise Ubuntu 11.04. Je veux exécuter un script qui vérifie un processus en cours d'exécution et éteint le système lorsque ce processus se termine. Pour ce faire, l'utilisateur a besoin d'un accès d'arrêt afin que le script puisse être exécuté sans nécessiter de mot de passe.

J'ai fait référence à cette page et ajouté le texte dans mon fichier sudoers. Cependant, il me demande toujours le mot de passe lorsque j'exécute sudo shutdown -h now . De plus, j'obtiens une erreur disant que les privilèges root sont nécessaires, lorsque j'exécute shutdown sans sudo.

Mon fichier sudoers ressemble à quelque chose comme ceci.

# Cmnd alias specification
Cmnd_Alias      SHUTDOWN = /sbin/shutdown

# User privilege specification
root    ALL=(ALL:ALL) ALL
myusername    ALL = NOPASSWD: SHUTDOWN

Comment puis-je donner la permission à un utilisateur d'exécuter la commande d'arrêt sans avoir à entrer manuellement le mot de passe ?

Merci.

8voto

Robert Christie Points 7323

Je l'ai fait comme dans este réponse, fonctionne parfaitement pour moi. Peut-être que votre approche passe à côté de la visudo partie ?

Ouvrez une ligne de commande et tapez :

sudo visudo 

Dans le fichier qui s'ouvre, ajoutez la ligne suivante à la fin :

yourusername ALL=NOPASSWD: /sbin/halt

Ensuite, quittez l'éditeur et sauvegardez-le (CTRL+x).

Vous pouvez désormais éteindre votre ordinateur à partir de la ligne de commande, par exemple après avoir téléchargé quelque chose :

wget UrlOfTheFileYouWantToDownload ; sudo halt

6voto

Alin Andrei Points 7268

Vous pouvez arrêter ou redémarrer à l'aide de HAL ou de ConsoleKit qui ne vous demandera pas de saisir un nom d'utilisateur/mot de passe :

HAL (anciennes versions d'Ubuntu) :

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

ConsoleKit (versions Ubuntu plus récentes, testé sur Ubuntu 11.04) :

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

1voto

Steve Points 2204

Il y a quelque temps, j'ai fait cela en définissant le suid (Set User ID). Ceci fait que le programme s'exécute en tant que propriétaire du fichier, et non pas en tant qu'utilisateur qui l'exécute. Puisque shutdown appartient à root, cela devrait vous permettre d'arrêter sans sudo.

chmod u+s /sbin/shutdown

Il y a cependant des implications en matière de sécurité puisque n'importe qui peut alors exécuter l'arrêt. http://en.wikipedia.org/wiki/Setuid

0voto

Jesse Buchanan Points 569

Il semble que vous vouliez exécuter le script lui-même en tant que root. Si vous voulez exécuter un script qui attend que quelque chose se termine puis éteint votre ordinateur, alors vous devriez simplement exécuter le script avec sudo. Cela vous demandera votre mot de passe lorsque vous exécuterez le script, mais ensuite le script lui-même est libre d'éteindre le système sans autre intervention.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X