¿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?


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.


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


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


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.