A pergunta feita por K.Chen é: por que eu preciso de privilégios sudo quando faço isso do CLI, e não preciso desses privilégios quando faço isso da GUI.
A primeira parte da resposta é que as pessoas que projetam ambientes de desktop, como Gnome, KDE, Xfce, Mate, Cinnamon, ... tentam simplificar o trabalho de seus usuários e configuram o desligamento e a reinicialização sem a necessidade de sudo credenciais. Isto, aliás, implica que deve haver uma seqüência de desligamento que não envolva o desligamento do programa, o que requer privilégios de sudo (nada disso).
Eu não sei em detalhes como cada DE faz isso, mas eu sei que existe uma maneira gentil de derrubar, ou reiniciar / shutdown / hibernar seu sistema, que não requer privilégios de root. Você pode encontrar a postagem original em uma postagem no Arch Linux Forum . Em essência, isso equivale a emitir esses comandos:
parar
#!/bin/bash
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit"/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
reiniciar
#!/bin/bash
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
dbus-suspend
#!/bin/bash
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
hibernar
#!/bin/bash
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
Meu palpite é que os botões da GUI usam aproximadamente esses comandos. Para ter certeza, é preciso olhar o código, mas acredito que esta seja uma aposta segura.