la commande 'shutdown -r 0' ne fonctionne qu'avec root Le sujet est résolu

Demande d'aide : c'est ici.
Répondre
tony
Membre
Membre
Messages : 184
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

salut ,

est-il normal que la commande shutdown -r 0 ne fonctionne qu'avec root ? Avec root pas de problème .

Code : Tout sélectionner

~$ ls -l /usr/sbin/shutdown 
lrwxrwxrwx 1 root root 14  8 févr.  2023 /usr/sbin/shutdown -> /bin/systemctl

~$ shutdown -r 0
-bash: shutdown : commande introuvable

~$ ls -l /usr/bin/firefox-esr 
lrwxrwxrwx 1 root root 30 20 déc.  00:49 /usr/bin/firefox-esr -> ../lib/firefox-esr/firefox-esr
et pourtant , à partir du Bureau le raccourci clavier Alt + F4 me permet de redémarrer . Quelque chose ne va pas , surtout que les permissions de others permettent de l'exécuter , comme pour le lanceur de firefox-esr .
Donc , soit je me mélange sérieusement les pédales soit quelque chose cloche dans mon installation ......qui pourtant fonctionne très bien .
Debian 11 / Xfce
PascalHambourg
Contributeur
Contributeur
Messages : 876
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

La commande "shutdown" est introuvable dans un shell d'utilisateur normal parce que son chemin /usr/sbin ne figure pas dans la variable d'environnement $PATH de cet utilisateur.

Code : Tout sélectionner

echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Il suffit de l'exécuter en indiquant son chemin complet /usr/sbin/shutdown.

Note : /usr/sbin/shutdown et /usr/bin/firefox-esr sont des liens symboliques (indicateur "l") donc leurs permissions sont sans objet. Ce sont les permissions des exécutables vers lesquels ils pointent qui comptent.
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 4962
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

Il me semble que l'utilisateur courant doit appartenir à un groupe particulier pour utiliser les commandes d'extinction. Cherche de ce coté là.
PascalHambourg
Contributeur
Contributeur
Messages : 876
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

Non, avec systemd et policykit par défaut tout utilisateur normal d'une session locale (pas en SSH) peut arrêter ou redémarrer le système.
tony
Membre
Membre
Messages : 184
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

PascalHambourg a écrit : 03 janv. 2024, 19:31 Il suffit de l'exécuter en indiquant son chemin complet /usr/sbin/shutdown.

Code : Tout sélectionner

:~$ /usr/sbin/shutdown -r 0
Failed to schedule shutdown: Interactive authentication required.
on dirait bien qu'une authentification est demandée à cause des permissions liées à la cible du lien si j'ai bien compris ; ce qui , après coup , paraît logique .

À l'origine cette commande était sous forme d'un alias sr='sudo shutdown -r 0' . Lorsque j'ai décidé il y a qqs jours (le 30/12) de me passer de sudo j'ai donc modifié mes alias et même si ça ne fait qu'environ 4 jours je l'ai déjà oublié , d'où le problème . Quand j'ai vu que shutdown pointait vers systemctl qui nécéssite d'être root je me suis douté de quelque chose mais les droits du lien me disaient le contraire . D'où mon interrogation .
Note : /usr/sbin/shutdown et /usr/bin/firefox-esr sont des liens symboliques (indicateur "l") donc leurs permissions sont sans objet. Ce sont les permissions des exécutables vers lesquels ils pointent qui comptent.
voilà la réponse à mon interrogation . Je ne me souviens pas avoir déjà vu cette remarque pourtant importante il me semble . Et logique en plus .

ps1 : il n'en reste pas moins que je peux réaliser cette opération en tant qu'utilisateur avec le raccourci clavier Alt + F4 suivi de redémarrer et aucune authentification n'est demandée ( OK : cf plus bas ) .

ps2 : pourquoi associer des permissions au lien s'ils ne permettent pas de connaître les permissions qui seront appliquées in fine ?

ps3 :

Code : Tout sélectionner

~$ ls -l /bin/systemctl
-rwxr-xr-x 1 root root 1066288 18 juin   2023 /bin/systemctl
zut ! je pensais avoir compris mais c'est raté car cet exécutable devrait pouvoir être utilisé par tous les utilisateurs puisque "x" et que /bin est une valeur (ou un élément?) de $PATH . Je vais laisser décanter car j'ai l'impression que je sature .
Debian 11 / Xfce
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 4962
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

Essaie de réinstaller le paquet systemd-sysv, il me semble que c'est lui qui fourni la commande shutdown. Si tu as as modifié des fichiers de config, ça te remettra ceux par défaut
tony
Membre
Membre
Messages : 184
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

piratebab a écrit : 03 janv. 2024, 23:21 Essaie de réinstaller le paquet systemd-sysv, il me semble que c'est lui qui fourni la commande shutdown. Si tu as as modifié des fichiers de config, ça te remettra ceux par défaut
modifier la config de systemd ? Je ne pense pas car j'en serais bien incapable . Les permissions de /bin/systemctl ne seraient donc pas correctes ?

En tout cas il doit y avoir une étape de vérification supplémentaire car chaque fois que j'utilise cette commande pour modifier l'état d'un service je suis obligé de passer par root ce qui , selon le retour de ls -l /bin/systemctl ne devrait pas être indispensable ; enfin si j'interprète bien ce retour . Il va me falloir éclaircir tout ça .

ps1 : pourtant systemctl status sshd fonctionne bien en tant qu'utilisateur . Le retour de ls -l /bin/systemctl doit être correct .

ps2 : après un repos de remise à zéro je viens se réessayer la commande /usr/sbin/shutdown -r 0 et elle fonctionne comme l'indique @PascalHambourg . Que s'est-il passé lors de ma 1ère tentative ? Aucune idée , probablement une étourderie dont j'ai le secret . De plus l'alias sr='/usr/sbin/etc... fonctionne , je n'avais donc pas besoin de sudo pour redémarrer mon pc et l'utilisation du raccourci clavier par un utilisateur est donc justifiée .

ps3 : ce qu'il s'est passé n'est pas une étourderie mais est dû à l'utilisation du protocole ssh qui pour une raison inconnue ne permet pas l'utilisation de cette commande en tant qu'utilisateur . Je viens de le re-vérifier . Pourquoi = ?

Code : Tout sélectionner

~$ /usr/sbin/shutdown -r 0
Failed to schedule shutdown: Interactive authentication required. 
passée en tant que root elle fonctionne même en utilisant ssh = ?

ps4 : incidemment cette "découverte" du rôle perturbateur de ssh me permet , peut-être , de comprendre ce que @piratebab voulait dire dans son dernier post car effectivement il y avait bien une anomalie dans le résultat de ma commande . Je n'avais pas pigé .
Debian 11 / Xfce
Répondre