Supongamos que instala un entorno de escritorio, por ejemplo ubuntu o debian. Puede apagar el sistema haciendo clic en un botón en algún lugar del menú de su sistema como usuario normal. No necesita cambiar a superusuario para lograr eso.
Sin embargo, en el mismo entorno de escritorio, si abro un terminal (digamos gnome-terminal) como usuario normal y escribo
shutdown -h now
Sería impulsado por
shutdown: need to be root
La única forma de apagar es anteponer el comando con un sudo.
¿Alguien puede explicar por qué esto es así?
Gracias kc
linux
permissions
K.Chen
fuente
fuente
Respuestas:
La pregunta que hace K.Chen es: ¿por qué necesito privilegios de sudo cuando lo hago desde CLI? Aunque no necesito esos privilegios cuando lo hago desde la GUI.
La primera parte de la respuesta es que las personas que diseñan entornos de escritorio, como Gnome, KDE, Xfce, Mate, Cinnamon, ... intentan simplificar el trabajo de sus usuarios, y configuran el apagado y el reinicio sin requerir credenciales de sudo. Esto, por cierto, implica que debe haber una secuencia de apagado que no implique el apagado del programa, que sí requiere privilegios de sudo (no hay forma de evitarlo).
No sé en detalle cómo lo hace cada DE, pero sé que hay una manera suave de desactivar, reiniciar / apagar / hibernar su sistema, que no requiere privilegios de root. Puede encontrar la publicación original en una publicación del Foro Arch Linux . En esencia, equivale a emitir estos comandos:
detener
reiniciar
dbus-suspend
hibernar
Supongo que los botones de la GUI usan aproximadamente estos comandos. Para estar seguro, uno debe mirar el código, pero creo que esta es una apuesta segura.
fuente
La razón detrás de esta decisión de diseño no es técnica (podría tener un
shutdown
comando no privilegiado o requerir una contraseña en la GUI).Cuando se utiliza un entorno de escritorio, se supone que el usuario tiene acceso físico a la máquina. Entonces es mejor permitir un apagado limpio que dejar que el usuario presione el botón de encendido o desenchufe el cable de alimentación.
Cuando se usa un shell, el usuario puede ser un usuario remoto y para evitar un apagado remoto se requieren más privilegios.
Estas no son reglas, sino solo valores predeterminados basados en suposiciones: puede tener un usuario local en un shell y un usuario remoto con un entorno de escritorio. Si desea elegir el comportamiento predeterminado, puede configurar su sistema en consecuencia.
fuente
Sudo (superuser do) le permite al administrador del sistema dar a ciertos usuarios (o grupos de usuarios) la capacidad de ejecutar algunos (o todos) comandos como root mientras registra todos los comandos y argumentos. Se puede usar el comando shutdown -h o el comando init 0 para apagar la máquina. Pero ambos comandos requieren privilegios de root para ejecutarse.
El comando que localiza en / sbin debe tener privilegios de root para ejecutarlo. Para encontrar la ubicación del comando de apagado,
escriba qué apagado en la terminal.
Espero que ahora tu duda sea clara :)
fuente