Como fazer com que / sbin / shutdown, / sbin / reboot etc. exija o sudo novamente no 16.04?


18

Por qualquer motivo, não precisamos mais ser root (ou usar sudo) para executar /sbin/shutdown, /sbin/rebootetc.

Parece que isso acontece porque esses executáveis ​​agora são links simbólicos para os /bin/systemctlquais lida com tudo como usuário normal.

No entanto, e se eu quiser shutdowne rebootexigir autenticação root novamente? Como posso conseguir isso?


3
Eu acho que regras polkit. Modificar askubuntu.com/a/570969/158442 conforme necessidade (uso pkaction | grep login1para outras regras de interesse)
Muru

3
(um exemplo de regras para exigir privilégios de administrador: askubuntu.com/a/744094/158442 )
Muru

11
Isso não é apenas se você é a única pessoa logada. Se houver mais alguém logado no sistema, você será solicitado a inserir a senha root.
Ognjen

Essa pode não ser a resposta que você espera, mas um comportamento semelhante pode ser causado por outro usuário administrador ter editado seus '/ etc / sudoers'. Se é isso que está causando o problema, você pode alterá-lo novamente, digitando sudo visudoe verificando se há uma linha com o caminho para esses executáveis.
Damien

Respostas:


5

Systemd, de fato, lidar com o shutdown, reboote outros comandos, e os privilégios padrão atribuídas são permissivos. Para mudar isso, você precisa criar uma regra do Polkit. Crie um .pklaarquivo /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 desligar, reiniciar, etc. comandos são, em termos 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 é 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, reinicie etc.


0

Você pode usar o chmodcomando

  • Se você deseja dar acesso apenas ao root, pode escrever:

    chmod 700 directory/to/the/file
    
  • Se você deseja dar permissão à raiz e ao grupo sudo, pode escrever:

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

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

    chown root:sudo filedirectory 
    

Nota : você pode ter que usar sudoesse comando ou ter feito login na conta raiz


Observe que a tentativa de alterar as permissões do link alterará as permissões do destino (nesse caso /bin/systemctl), portanto, executar chmod / sbin / shutdown afetará todos os links apontando para as /bin/systemctlquais as permissões bin/systemctlserão alteradas, conforme confirmado pelo comando $ ll /bin/systemctl -rwx ------ raiz 1 raiz 659.848 18 jan 16:04 / bin / systemctl *
Elder Geek

Se você precisar alterá-lo novamente, as permissões padrão são:-rwxr-xr-x 1 root root 659848 Jan 18 16:04 /bin/systemctl
Elder Geek


-1

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

#! / bin / bash
if ["$ (whoami)"! = "root"]; então
    eco "Desculpe, você não é root."
    saída 1
outro
    (comando systemctl shutdown)
fi

Fonte


4
O que impede um usuário não root de simplesmente ignorar este script?
22816 Robie Basak

-1

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


2
O grupo "wheel" é coisa do Arch Linux e talvez de outras distribuições, mas definitivamente não no Ubuntu.
Byte Commander

2
Isso não é eficaz. Um usuário pode simplesmente baixar um binário systemctl de outro lugar e executá-lo.
Robie Basak

@ Robie, você poderia fazer isso com qualquer solução. Você pode pressionar o botão liga / desliga. Minha solução funciona para o que ele pede.
28416 chevydog
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.