Pourquoi le redémarrage et la mise hors tension fonctionnent-ils sans privilèges de super-utilisateur dans Ubuntu 16.04?

10

Il y a beaucoup de questions sur pourquoi shutdownet rebootnécessitent des privilèges root. Il existe également de nombreuses bonnes réponses.

Mais il y a quelque chose que je ne comprends pas : si être capable de redémarrer ou d'arrêter sans les privilèges root dans un système multi - utilisateur est une très mauvaise idée ... alors pourquoi est-ce possible dans Ubuntu 16.04?

Lorsque je tape poweroffou rebootdans un terminal et que je frappe Enter, cela s'arrête / redémarre en effet!

Cela me convient quand poweroffet rebootne nécessite pas de privilèges root ... mais pourquoi a-t-il suspendbesoin de privilèges root? Lorsque je tape suspendun terminal et que je tape Enter, il ne se suspend pas, il se bloque à la place ... et quand je cours pm-suspend, il le faut sudo.

Severus Tux
la source
Cela devrait également être possible dans les anciennes versions, si vous le configurez, faites-le ( askubuntu.com/a/570969/158442 , notez les actions pour les sessions multiples). Systemd le fait cependant par défaut. Également vu sur Arch Linux.
muru

Réponses:

3

Pour moi, poweroffni l' rebootun ni l'autre n'a besoin d'un mot de passe sur Ubuntu 16.04.

Cependant, pour que cela se produise, j'ai dû créer un compte d'utilisateur appelé "foo", par exemple, puis ssh vers localhost en tant qu'utilisateur ou en tant que moi-même. Lorsque je fais cela, je dois m'authentifier. Il semble reconnaître qu'un autre utilisateur est connecté.

Par exemple, je reçois ce message:

User foo is logged in on sshd.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl reboot -i'.

Vraisemblablement, c'est assez "intelligent" pour se rendre compte quand il y a en fait un autre utilisateur connecté.

(Je suis d'accord avec vous qu'il serait bien de toujours s'authentifier en tant que root. Parfois, aucun autre utilisateur n'est connecté, mais un processus important s'exécute en arrière-plan et effectue une sorte de calcul.)

Edit: Je viens de m'essayer. Si je suis connecté en tant que foo, je dois m'authentifier (qui fait partie du groupe sudo). Si je redémarre en tant que moi-même avec foo toujours connecté, je dois taper systemctl reboot -isans mot de passe. Je suppose que la différence est que le système sait que je fais partie du groupe sudo.

Edit 2: Comme l'a noté Severus Tux, systemctl suspend -ise comportait de la même manière que lors systemctl reboot -ide l'édition précédente.

Rayon
la source
Ah .. je n'avais pas essayé ça. BTW suspend la commande fonctionne sur votre machine? Je dois m'assurer que c'est un bug
Severus Tux
Si je ssh vers localhost et suspend, je ne parviens pas. J'obtiens "-bash: suspend: impossible de suspendre un shell de connexion".
Ray
Si j'ouvre une fenêtre et que j'essaye de "suspendre", la fenêtre du terminal se bloque. :-) Pas bon signe ... Je pense que ce n'est pas lié. Quoi qu'il en soit, merci d'avoir demandé! Je n'ai jamais pensé à m'essayer mais votre question m'a rendu curieux. J'ai toujours l'habitude de redémarrer avec sudo ... je n'ai pas remarqué ce changement subtil.
Ray
Je vous remercie. Comme vous l'avez dit à propos du redémarrage, "systemctl suspend -i" fonctionne également bien. pensez à ajouter cela à votre réponse
Severus Tux
D'accord! J'aurais probablement dû tout ajouter avec un seul message, mais chaque fois que j'essayais quelque chose, cela provoquait un redémarrage, donc j'ai dû sauvegarder ce que je publiais ...
Ray