siempre solicite la contraseña de sudo al reiniciar/apagar el sistema

siempre solicite la contraseña de sudo al reiniciar/apagar el sistema

Entonces,

Me di cuenta de que en manjaro, si solo hay un usuario, escribir rebootsinsudo, simplemente fallará y solicitará la contraseña de sudo, mientras que en el servidor ubuntu, escribir esto no solicita la contraseña de sudo y reinicia correctamente el sistema. Mi pregunta es ¿cómo puedo hacer para que cuando escribareiniciar/apagar/detener, ¿ubuntu siempre solicita la contraseña de sudo incluso si solo hay un usuario conectado actualmente? ¿Puede esto tener que ver con polkit? Si es así, ¿cómo puedo cambiar esto?

La razón por la que pregunto esto es que quiero estar seguro de que todos los que puedan tener acceso físico a mi servidor no podrán reiniciar (a menos, por supuesto, que desconecten el cable de alimentación, que es algo diferente jajaja).

Gracias

Respuesta1

Una de las formas en que lo he hecho es medianteenmascarar los systemdobjetivos, lo que impide que se realicen determinadas acciones, independientemente de quién introduzca el comando. Por ejemplo, para evitar que se apague el sistema, puede hacer esto:

sudo systemctl mask poweroff.target

Ahora cualquier intento de apagar el sistema a través de sudo shutdowno sudo systemctl shutdownfallará silenciosamente. Se puede hacer lo mismo al detener y reiniciar:

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

Nota: runlevel6es equivalente a reboot, y runlevel0es equivalente a shutdowny halt.

Para deshacer esto, estos comandos se pueden ejecutar nuevamente, pero con 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

Con esto en mente, ahora puedes escribir un script que sea ejecutable.solopara personas con sudoacceso:

#!/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

ADVERTENCIA:Este código funcionará, pero es bastante aproximado. Asegúrese de verificarlo con una máquina virtual o en algún lugar "seguro" antes de ejecutarlo en una caja de producción.

Ahora puede ejecutar este script para enmascarar los objetivos después de iniciar y apagar/reiniciar de esta manera:

sudo ~./setTargetMask.sh unmask
sudo shutdown now

Nota:Siéntete libre de llamar al guión como quieras.

información relacionada