Quando você clica no botão de desligamento (no Unity):
-
O
SessionViewpergunta aoSessionManagerse o usuário está autorizado a encerrar. -
O
SessionManagerusasystemd-logindpara verificar/org/freedesktop/ConsoleKit/Managerpara a autorização. -
ConsoleKitdefine essa propriedade essencialmente verificando se vários usuários estão conectados. Se vários usuários estiverem conectados, ele negará a autorização. Além disso, dependendo de como o sistema foi configurado,ConsoleKittambém pode usarpolkitou controle de acesso baseado em função para determinar a autorização. -
Se
SessionViewnão receber autorização para o usuário desligar, ele alterará o modo de ação deshutdownparalogout.
Como um aparte, note que este comportamento (e como implementá-lo) é uma decisão tomada pelo Ubuntu. Eu tinha instalado recentemente o Arch com o Gnome 3.8 em uma partição, então entrei dois usuários lá para ver como o que aconteceu quando um deles foi desligado. Houve uma mensagem avisando que outros usuários estavam conectados e podem perder o trabalho, mas clicar em OK permite que o desligamento continue.
[Editar com base no comentário do OP]
A maneira mais simples de alterar esse comportamento é ignorá-lo. Em um terminal ou script, problema:
sudo shutdown -h 0 para o encerramento imediato ou sudo shutdown -r 0 para um reinício.
Isso pressupõe que o usuário que deseja desligar tem privilégios administrativos, mas o usuário também pode receber privilégio de administrador apenas para shutdown .
Com um script, você pode adicionar algumas dicas como advertir sobre outros usuários conectados e permitir que o usuário mude de ideia sobre o encerramento.
Alguém pode ter outra ideia (ou provavelmente fornecer um roteiro especial em resposta a uma nova pergunta), mas não consigo pensar em nada fácil (digamos, sem recompilar uma versão personalizada do Unity) ou em algo seguro além esta solução.