Suponha que você instale um ambiente de área de trabalho, como ubuntu ou debian. Você pode desligar o sistema clicando em um botão em algum lugar do menu do sistema como um usuário normal. Você não precisa mudar para superusuário para fazer isso.
No entanto, no mesmo ambiente de área de trabalho, se eu abrir um terminal (por exemplo, gnome-terminal) como um usuário normal e digite
shutdown -h now
Eu seria solicitado por
shutdown: need to be root
A única maneira de desligar é preceder o comando com um sudo.
Alguém pode explicar por que isso é assim?
Thanks KC
linux
permissions
K.Chen
fonte
fonte
Respostas:
A pergunta feita pelo K.Chen é: por que eu preciso de privilégios sudo quando faço isso na CLI, mas não preciso de tais privilégios quando faço isso na 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 exigir credenciais do sudo. Isso, aliás, implica que deve haver uma sequência de desligamento que não envolva o desligamento do programa, o que exige privilégios de sudo (não há maneira de contornar isso).
Não sei em detalhes como cada DE faz isso, mas sei que há uma maneira suave de desativar, ou reiniciar / desligar / hibernar o sistema, o que não requer privilégios de root. Você pode encontrar a postagem original em uma postagem do Arch Linux Forum . Em essência, isso equivale a emitir estes comandos:
parar
reiniciar
dbus-suspend
hibernar
Meu palpite é que os botões da GUI usam aproximadamente esses comandos. Para ter certeza, é preciso analisar o código, mas acredito que essa é uma aposta segura.
fonte
O motivo desta decisão de design não é técnico (você pode ter um
shutdown
comando não privilegiado ou exigir uma senha na GUI).Ao usar um ambiente de área de trabalho, o usuário deve ter acesso físico à máquina. Então é melhor permitir um desligamento limpo do que permitir que o usuário pressione o botão liga / desliga ou desconecte o cabo de alimentação.
Ao usar um shell, o usuário pode ser um usuário remoto e, para evitar um desligamento remoto, são solicitados mais privilégios.
Essas não são regras, mas apenas padrões com base em suposições: você pode ter um usuário local em um shell e um usuário remoto com um ambiente de desktop. Se você quiser escolher o comportamento padrão, poderá configurar seu sistema adequadamente.
fonte
Sudo (superusuário do) permite que um administrador de sistema conceda a certos usuários (ou grupos de usuários) a capacidade de executar alguns (ou todos) comandos como root enquanto registra todos os comandos e argumentos. O comando shutdown -h ou init 0 pode ser usado para desligar a máquina. Mas ambos os comandos exigiram privilégios de root para serem executados.
O comando localizado em / sbin deve ter privilégio de root para executá-lo. Para encontrar a localização do comando shutdown,
digite qual desligamento no terminal.
Espero que agora sua dúvida esteja clara :)
fonte