Como fazer / sbin / shutdown, / sbin / reboot etc. requer o sudo novamente em 16.04?

19

Por alguma razão, não precisamos mais ser root (ou usar sudo ) para executar /sbin/shutdown , /sbin/reboot etc.

Isso parece ser porque esses executáveis ​​agora são links simbólicos para /bin/systemctl , que manipula tudo como usuário normal.

No entanto, e se eu quiser que shutdown e reboot exijam autenticação de raiz? Como posso conseguir isso?

    
por Byte Commander 19.06.2016 / 21:14

5 respostas

5

O Systemd realmente manipula os shutdown , reboot e outros comandos e os privilégios padrão atribuídos são permissivas. Para mudar isso, você precisa criar uma regra Polkit. Crie um arquivo .pkla em /etc/polkit-1/localauthority/50-local.d (digamos, confirm-shutdown.pkla ) contendo:

[Confirm shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.*
ResultActive=auth_admin_keep

Os vários comandos shutdown, reboot, etc. são, em termos de Polkit, ações em org.freedesktop.login1 , por exemplo, org.freedesktop.login1.power-off , org.freedesktop.login1.reboot , etc. O problema específico aqui é a configuração padrão, que está em /usr/share/polkit-1/actions/org.freedesktop.login1.policy :

<action id="org.freedesktop.login1.power-off">
        <description>Power off the system</description>
        ...
        <defaults>
                <allow_any>auth_admin_keep</allow_any>
                <allow_inactive>auth_admin_keep</allow_inactive>
                <allow_active>yes</allow_active>
        </defaults>

Observe que ele permite que o usuário ativo desligue, reinicialize, etc.

    
por muru 18.02.2017 / 16:26
0

Você pode usar o comando chmod .

  • Se você quiser dar acesso somente ao root, escreva:

    chmod 700 directory/to/the/file
    
  • Se você quiser dar permissons para a raiz e o grupo sudo, então você pode escrever:

    chmod 770 directory/to/the/file
    
  • Se você quiser alterar o grupo do arquivo de sudo para outro (como um usuário ou administradores), você precisa digitar:

    chown owner:group directory/to/the/file
    
  • Se você quiser reverter, execute:

    chown root:sudo filedirectory 
    

Observação : você pode ter que usar sudo para esses comandos ou ter feito login na conta raiz

    
por Zoltán Pataki 02.08.2016 / 15:40
0

Como alterando as permissões de um symlink em um sistema Linux altere as permissões do link, mas em vez disso, o arquivo para o qual ele aponta (no Ubuntu, pelo menos). Eu acho que a maneira mais segura de conseguir isso seria remover o link e recriá-lo com o umask necessário para obter o link resultado que você deseja.

Outro post relacionado pode ser encontrado aqui

    
por Elder Geek 13.02.2017 / 20:47
-1

Você pode criar um script que verifique se o usuário o está executando com permissões de root ou não. Em seguida, ele executará o comando systemctl ou retornará o erro.

#!/bin/bash
if [ "$(whoami)" != "root" ]; then
    echo "Sorry, you are not root."
    exit 1
else
    (systemctl shutdown command)
fi

Fonte

    
por Ven3k 30.06.2016 / 21:56
-1

Tente alterar suas permissões no terminal. Você pode torná-lo executável somente por um determinado grupo, como roda ou admin. Infelizmente (ou talvez felizmente), um arquivo pode ter apenas uma propriedade de um grupo, por isso simplesmente não funcionaria sozinho. Tente "sudo chown root: roda / sbin / shutdown" e depois "sudo chmod g + x / sbin / shutdown". Isso tornará o arquivo executável apenas pelo usuário root e os administradores (shudders) e sudoers serão solicitados a inserir suas senhas.

    
por chevydog 14.07.2016 / 01:31