Supposons que vous installiez un environnement de bureau, par exemple ubuntu ou debian. Vous pouvez arrêter le système en cliquant sur un bouton quelque part dans le menu de votre système en tant qu'utilisateur normal. Vous n'avez pas besoin de passer en superutilisateur pour y parvenir.
Cependant, dans le même environnement de bureau, si j'ouvre un terminal (disons gnome-terminal) en tant qu'utilisateur normal, et que je tape
shutdown -h now
Je serais invité par
shutdown: need to be root
La seule façon d'arrêter est de faire précéder la commande d'un sudo.
Quelqu'un peut-il expliquer pourquoi il en est ainsi?
Merci KC
linux
permissions
K.Chen
la source
la source
Réponses:
La question posée par K.Chen est: pourquoi ai-je besoin des privilèges sudo quand je le fais depuis CLI, ahile je n'ai pas besoin de tels privilèges quand je le fais depuis l'interface graphique.
La première partie de la réponse est que les personnes qui conçoivent des environnements de bureau, comme Gnome, KDE, Xfce, Mate, Cinnamon, ... essaient de simplifier le travail de leurs utilisateurs, et configurent l'arrêt et le redémarrage sans nécessiter les informations d'identification sudo. Incidemment, cela implique qu'il doit y avoir une séquence d'arrêt qui n'implique pas l'arrêt du programme, ce qui nécessite des privilèges sudo (aucun moyen de contourner cela).
Je ne sais pas en détail comment chaque DE le fait, mais je sais qu'il existe un moyen doux d'arrêter ou de redémarrer / arrêter / mettre en veille prolongée votre système, qui ne nécessite pas de privilèges root. Vous pouvez trouver l'article d'origine dans un article du forum Arch Linux . En substance, cela revient à émettre ces commandes:
arrêt
redémarrer
dbus-suspend
hiberner
Je suppose que les boutons de l'interface graphique utilisent à peu près ces commandes. Pour être certain, il faut se pencher sur le code, mais je pense que c'est une valeur sûre.
la source
La raison de cette décision de conception n'est pas technique (vous pouvez avoir une
shutdown
commande non privilégiée ou exiger un mot de passe dans l'interface graphique).Lors de l'utilisation d'un environnement de bureau, l'utilisateur est censé avoir un accès physique à la machine. Mieux vaut alors permettre un arrêt propre que de laisser l'utilisateur appuyer sur le bouton d'alimentation ou débrancher le cordon d'alimentation.
Lors de l'utilisation d'un shell, l'utilisateur peut être un utilisateur distant et pour éviter un arrêt à distance, plus de privilèges sont demandés.
Ce ne sont pas des règles mais simplement des valeurs par défaut basées sur des hypothèses: vous pouvez avoir un utilisateur local dans un shell et un utilisateur distant avec un environnement de bureau. Si vous souhaitez choisir le comportement par défaut, vous pouvez configurer votre système en conséquence.
la source
Sudo (superutilisateur do) permet à un administrateur système de donner à certains utilisateurs (ou groupes d'utilisateurs) la possibilité d'exécuter certaines (ou toutes) les commandes en tant que root tout en enregistrant toutes les commandes et tous les arguments. La commande shutdown -h ou la commande init 0 peut être utilisée pour éteindre la machine. Mais les deux commandes nécessitaient le privilège root pour s'exécuter.
La commande qui localise dans / sbin doit avoir le privilège root pour l'exécuter. Pour trouver l'emplacement de la commande d'arrêt,
tapez quel arrêt dans le terminal.
J'espère que votre doute est clair :)
la source