O shutdown / reboot precisa de privilégios de root no Linux? [fechadas]

6

Por que eu preciso ser root para desligar / reiniciar meu computador a partir do terminal? Fazê-lo através do menu GUI não requer privilégios de root.

    
por boh 01.05.2013 / 08:40

4 respostas

10

Normalmente, o sistema operacional inicia na inicialização um serviço que é executado como root e oferece aos ambientes de desktop algumas possibilidades em relação ao computador. Geralmente é o ConsoleKit ou o systemd-logind.

Por exemplo, no KDE, você pode desligar seu computador da linha de comando como um usuário normal com algo como:

qdbus org.kde.ksmserver /KSMServer logout 0 0 0

Isso é possível porque o gerenciador de sessões do KDE entrará em contato com um serviço DBus que é executado como root e, quando chamado, executará o comando shutdown com privilégios de root.

Em sistemas que executam o ConsoleKit, você pode usar:

gdbus call -y -d org.freedesktop.ConsoleKit \
              -o /org/freedesktop/ConsoleKit/Manager \
              -m org.freedesktop.ConsoleKit.Manager.Stop

Em sistemas que usam systemd-logind , o utilitário shutdown já usa o DBus e não requer privilégios.

Para resumir, você pode desligar seu computador como um usuário normal porque o Desktop Environment executa um serviço que oferece a possibilidade de executar o comando shutdown [1] como root.

[1] Na verdade, o serviço faz outras coisas para garantir que o Ambiente de Área de Trabalho seja desligado corretamente.

    
por 01.05.2013 / 09:40
1

Imagine que seu computador é um servidor de hospedagem compartilhado, onde cada usuário recebe acesso SSH. Existem cerca de 500 usuários por servidor em tal configuração.

Alguém deveria ter permissão para reiniciar o servidor inteiro, interromper downloads HTTP, interromper sessões SSH, etc?

    
por 01.05.2013 / 09:12
1

Algumas razões da minha cabeça:

  • as variantes da linha de comando podem ser scriptable , portanto, um script mal-intencionado pode ser injetado e causar coisas muito desagradáveis (um ataque DoS etc.).
  • O menu GUI é seguro: não permite que coisas desagradáveis aconteçam (por exemplo, reinicialização forçada - jogando tudo no ar)
  • O menu GUI é simples: não confunde os usuários com poderosas opções de administração como registro detalhado, envio opcional de mensagens para todos os usuários registrados, desligamento atrasado, diferença entre o modo de parada, o modo de manutenção, etc.
  • Menu GUI é enxuto e médio: não funciona "diferentemente" de acordo com os níveis de execução do sistema (0, 6 etc.) executando scripts diferentes (ex. / sbin / shutdown) e / ou de acordo com diferentes opções / opções da linha de comando

HTH

    
por 01.05.2013 / 09:28
1

Além do menu GUI, você também pode desligar o Linux a partir do console de texto. O que tem em comum com a GUI é que o usuário que emite o comando quase certamente tem acesso físico. (Para as situações excepcionais em que isso não é verdade, como nos quiosques públicos, ele pode ser desativado.)

O usuário de uma sessão TTY arbitrária não pode ser considerado como tendo acesso físico; é uma forma de acesso remoto. Não há como sinalizar um desligamento através de uma sessão TTY arbitrária, seja um xterm local, um terminal real em uma linha serial ou uma sessão ssh. Você tem que provar que você tem privilégio equivalente ao acesso físico, tornando-se root.

Se usuários não autenticados ou não privilegiados pudessem reiniciar remotamente o sistema, isso seria um problema de segurança.

Assim como o login remoto, um terminal físico (porta serial real) é uma forma de acesso remoto. O usuário pode estar em outro prédio ou em outra parte do mundo (via modem).

Um emulador de terminal gráfico como o xterm não é remoto, mas o sistema operacional não sabe disso. O aplicativo é implementado usando um pseudo TTY . Este é um dispositivo TTY virtualizado que o sistema operacional (em sua maior parte) não distingue de um tty real. Se você digitar stty em uma sessão xterm ou ssh, você notará que tem uma taxa de transmissão, como 9600 ou 38400 e pode alternar o controle de fluxo xon / xoff ou até mesmo cts / rts. Pseudo TTY's poderia , em teoria, ter um protocolo de sinalização de reinicialização especial entre o mestre e o escravo que não está disponível em TTYs normais, mas eles não o fazem. (Na verdade, um xterm pode ser remoto, já que é um aplicativo cliente X que pode ser redirecionado para criar suas janelas em um servidor X remoto.)

(Não tenho certeza do que "o terminal" se refere na questão; não existe tal coisa no Linux.)

    
por 01.05.2013 / 16:08