¿Cómo hacer que / sbin / shutdown, / sbin / reboot, etc. requiera sudo nuevamente en 16.04?

18

Por alguna razón, ya no necesitamos ser root (o usar sudo) para ejecutar /sbin/shutdown, /sbin/rebootetc.

Esto parece ser porque esos ejecutables ahora son enlaces simbólicos a los /bin/systemctlque maneja todo como usuario normal.

Sin embargo, ¿qué sucede si quiero shutdowny necesito rebootla autenticación raíz nuevamente? ¿Cómo puedo conseguir esto?

Byte Commander
fuente
3
Supongo que las reglas de Polkit. Modifique askubuntu.com/a/570969/158442 según sea necesario (uso pkaction | grep login1para otras reglas de interés)
muru
3
(un ejemplo de reglas para requerir privilegios de administrador: askubuntu.com/a/744094/158442 )
muru
1
¿No es esto solo si usted es la única persona que inició sesión? Si alguien más ha iniciado sesión en el sistema, se le pedirá que ingrese la contraseña de root.
ognjen
Es posible que esa no sea la respuesta que espera, pero un comportamiento similar puede ser causado por otro usuario administrador que haya editado sus '/ etc / sudoers'. Si esto es lo que está causando el problema, puede volver a cambiarlo escribiendo sudo visudoy verificar si hay una línea con la ruta a estos ejecutables.
Damien

Respuestas:

5

Systemd en efecto, manejar el shutdown, rebooty otros comandos, y los privilegios predeterminados asignados son permisivas. Para cambiar esto, debe crear una regla Polkit. Cree un .pklaarchivo en /etc/polkit-1/localauthority/50-local.d(digamos confirm-shutdown.pkla) que contenga:

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

Los diversos apagado, reinicio, etc. comandos son, en términos polkit, acciones en org.freedesktop.login1, por ejemplo, org.freedesktop.login1.power-off, org.freedesktop.login1.reboot, etc. El problema específico aquí es la configuración por defecto, que se encuentra en /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>

Tenga en cuenta que le permite al usuario activo apagar, reiniciar, etc.

muru
fuente
0

Puedes usar el chmodcomando.

  • Si desea dar acceso solo a root, puede escribir:

    chmod 700 directory/to/the/file
    
  • Si desea dar permiso a la raíz y al grupo sudo, puede escribir:

    chmod 770 directory/to/the/file
    
  • Si desea cambiar el grupo del archivo de sudo a otro (como un usuario o administradores) debe escribir:

    chown owner:group directory/to/the/file
    
  • Si quieres volver atrás, ejecuta:

    chown root:sudo filedirectory 
    

Nota : puede que tenga que usar sudoestos comandos o haber iniciado sesión en la cuenta raíz

Yakusho
fuente
Tenga en cuenta que intentar cambiar los permisos del enlace cambiará los permisos del objetivo (en este caso /bin/systemctl), por lo que ejecutar chmod / sbin / shutdown afectará a todos los enlaces que apuntan, /bin/systemctlya que los permisos bin/systemctlse cambiarán según lo confirmado por el comando $ ll /bin/systemctl -rwx ------ 1 raíz raíz 659848 18 de enero 16:04 / bin / systemctl *
Elder Geek
Si necesita volver a cambiarlo, los permisos predeterminados son-rwxr-xr-x 1 root root 659848 Jan 18 16:04 /bin/systemctl
Elder Geek
-1

Puede hacer un script que verifique si el usuario lo está ejecutando con permisos de root o no.
Luego ejecutará el comando systemctl o devolverá un error.

#! / bin / bash
if ["$ (whoami)"! = "root"]; luego
    echo "Lo siento, no eres root".
    salida 1
más
    (comando de apagado systemctl)
fi

Fuente

Ven3k
fuente
44
¿Qué impide que un usuario no root simplemente omita este script?
Robie Basak
-1

Intenta cambiar sus permisos en la terminal. Puede hacerlo ejecutable solo por un determinado grupo, como wheel o admin. Lamentablemente (o quizás afortunadamente), un archivo solo puede tener la propiedad de un grupo, por lo que simplemente no funcionaría por sí solo. Pruebe "sudo chown root: wheel / sbin / shutdown" y luego "sudo chmod g + x / sbin / shutdown". Esto hará que el archivo sea ejecutable solo por root y administradores (estremecimientos) y los sudoers deberán ingresar sus contraseñas.

chevydog
fuente
2
El grupo "rueda" es una cosa de Arch Linux y quizás otras distribuciones, pero definitivamente no en Ubuntu por cierto.
Byte Commander
2
Esto no es efectivo. Un usuario puede simplemente descargar un binario systemctl desde otro lugar y ejecutarlo en su lugar.
Robie Basak
@Robie, puedes hacerlo con cualquier solución. Puede mantener presionado el botón de encendido. Mi solución funciona para lo que él pide.
chevydog