sempre peça a senha do sudo ao reiniciar/desligar o sistema

sempre peça a senha do sudo ao reiniciar/desligar o sistema

Então,

Percebi que no manjaro, se houver apenas um usuário, digitando rebootsemsudo, simplesmente falhará e solicitará a senha do sudo, enquanto no servidor Ubuntu, digitar isso não solicitará a senha do sudo e reinicializará o sistema com êxito. Minha pergunta é como posso fazer isso quando eu digitoreiniciar/desligar/parar, o Ubuntu sempre pede a senha do sudo, mesmo se houver apenas um usuário logado no momento? Isso pode ter a ver com polkit? Se sim, como posso mudar isso?

A razão pela qual estou perguntando isso é que quero ter certeza de que todos que possam ter acesso físico ao meu servidor não serão capazes de reinicializar (a menos, é claro, desconectando o cabo de alimentação, que é algo diferente haha)

Obrigado

Responder1

Uma das maneiras de fazer isso émascarando os systemdalvos, o que impede que determinadas ações sejam executadas, independentemente de quem digita o comando. Por exemplo, para evitar que o sistema seja desligado, você pode fazer o seguinte:

sudo systemctl mask poweroff.target

Agora, qualquer tentativa de desligar o sistema por meio de sudo shutdownou sudo systemctl shutdownfalhará silenciosamente. O mesmo pode ser feito com interrupções e reinicializações:

sudo systemctl mask runlevel0.target
sudo systemctl mask halt.target
sudo systemctl mask runlevel6.target
sudo systemctl mask reboot.target

Observação: runlevel6é equivalente a reboote runlevel0é equivalente a shutdowne halt.

Para desfazer isso, esses comandos podem ser executados novamente, mas com unmask:

sudo systemctl unmask runlevel0.target
sudo systemctl unmask shutdown.target
sudo systemctl unmask halt.target
sudo systemctl unmask runlevel6.target
sudo systemctl unmask reboot.target

Com isso em mente, agora você pode escrever um script que seja executávelapenaspara pessoas com sudoacesso:

#!/bin/bash

## Determine the operation to run (mask | unmask)
op=mask

if [[ $1 = unmask ]]
then
        op=unmask
fi

## Set the targets we want to mask
declare -a arr=("runlevel0" "runlevel6" "shutdown" "reboot" "halt")

## Run the commands
for i in "${arr[@]}"
do
        cmd=$( sudo systemctl $op $i.target )
        echo "$i :: $op"
done

AVISO:Este código funcionará, mas é bem difícil. Certifique-se de verificá-lo com uma VM ou em algum lugar "seguro" antes de executá-lo em uma caixa de produção.

Agora você pode executar este script para mascarar os alvos após a inicialização e desligar/reiniciar assim:

sudo ~./setTargetMask.sh unmask
sudo shutdown now

Observação:Sinta-se à vontade para chamar o script como quiser.

informação relacionada