Cuando instalamos / eliminamos / actualizamos paquetes o realizamos cambios que requieren privilegios administrativos, se nos solicita la contraseña del usuario administrador que tiene los sudo
privilegios, esto sucede tanto a través de la GUI como del terminal.
Sin embargo, si intentamos apagar y reiniciar a través de la terminal, se queja de que debemos ser root
:
$ reboot
reboot: Need to be root
$ shutdown now
shutdown: Need to be root
Pero nunca se nos pide una contraseña cuando realizamos estas acciones a través de la rueda dentada en la parte superior derecha.
¿Por qué hay esta discrepancia?
sudo
shutdown
restart
privileges
Aditya
fuente
fuente
sudo shutdown -h now
pero el problema es que sin el permiso de accesoshutdown
nunca funciona. .. Espero que entiendas mi situación .. :)Respuestas:
El apagado en la rueda dentada comprueba si se le permite apagar la máquina. Esto se hace a través de PolicyKit. En caso de apagado,
/usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
se verifica esta declaración en el archivo :PolicyKit activa un
dbus-send
comando. En caso de apagado sería:Hay un demonio ejecutándose en segundo plano con privilegios de root que invoca el comando de apagado por usted.
Cuando desee poder apagar la máquina "a la antigua usanza" a través de la línea de comando (
shutdown, reboot, halt, ...
), debe agregar el Suid-Bit a esos comandos. Pero tenga en cuenta que todos en su sistema que tengan acceso al shell podrían apagar su máquina.fuente
sudo visudo
, agregar%sudo ALL = NOPASSWD: /sbin/shutdown, /sbin/poweroff, /sbin/halt, /sbin/reboot
, guardar y salir. De esta manera, aún será necesario reiniciar la línea de comandossudo reboot
, pero no tendrá que ingresar su contraseña.Ubuntu es una distribución del sistema operativo GNU / Linux que a su vez pertenece a la familia de sistemas Unix, una arquitectura común para varios sistemas operativos modernos.
Tradicionalmente, Unix solía ejecutarse en computadoras mainframe. Instalaciones informáticas centrales que sirven a docenas o cientos de usuarios a través de terminales remotas. Como todos los usuarios confiaban en la disponibilidad del mainframe, a ningún usuario se le permitió emitir un comando de apagado. Una idea que es fundamental para la arquitectura Unix: el núcleo del sistema nunca inicializará un apagado a menos que la función correspondiente sea llamada por un proceso de superusuario.
En los sistemas de escritorio contemporáneos, los desarrolladores han pasado por ciertos problemas para hacer que el apagado esté disponible para el simple usuario de escritorio. Una técnica común es permitir que el administrador de inicio de sesión, que generalmente se ejecuta en el contexto de seguridad del usuario raíz, maneje el apagado y el reinicio. En este caso, el shell gráfico emite una solicitud al administrador de inicio de sesión para apagar la computadora. Esto implica el uso de la comunicación entre procesos (IPC), generalmente a través del servicio dbus.
El juego de políticas mencionado anteriormente extiende este proceso al proporcionar un marco estandarizado a través del cual el administrador de inicio de sesión (o cualquier programa que proporcione el servicio de apagado) puede verificar qué usuarios pueden causar un apagado, y a través de los cuales un administrador puede configurar esos permisos respectivamente.
Algunos entornos de escritorio no utilizan servicios basados en IPC, sino más bien un conjunto de programas auxiliares para proporcionar las mismas funciones o funciones similares. Esos programas auxiliares se llamarían a través de mecanismos, lo que permitiría cambiar al contexto de superusuario, como sudo, suid o un mecanismo de kit de políticas similar a sudo.
En cualquier caso, el programa de apagado tradicional tonto en el shell no funciona de esta manera, requiere que veas que se ejecuta en un contexto de superusuario.
fuente
Debido a que Linux se usa comúnmente como servidor o similar, y SSHing en una caja de Linux, incluso una computadora portátil Ubuntu normal, es bastante común.
La cuestión es que es posible que no desee que las personas con acceso SSH puedan cerrarlo, especialmente cuando puede haber otros usuarios conectados remotamente que lo usen. Alguien con acceso a la GUI; bueno, de todos modos puede apagarlo solo con el botón de encendido físico.
Además, un usuario que haya iniciado sesión de forma remota no podrá volver a encenderlo.
fuente
Solo si usted es el único que inició sesión. Si hay otros usuarios (incluidos los usuarios de la consola), es posible que deba ingresar una contraseña de root. Esto es lo mismo en OS X y en las versiones más recientes de Windows.
El siguiente comando:
¿Por qué el
shutdown
comando no verifica si alguien ha iniciado sesión? Parece una característica poco mercenaria para ser honesto Me imagino que a veces ahorraría tiempo, pero a menudo se prefiere una consola consistente. No quiero que los comandos a veces requieran una contraseña después de ejecutarla, y a veces no.Mis pronombres son El / El
fuente
sudo
contraseña de usuario / root ni con otro usuario conectado a través de GDM ni con otro usuario conectado a través de tty.La razón por la que no necesita ser root para iniciar un apagado desde la GUI es en gran medida una cuestión de conveniencia para el usuario de escritorio típico. El sistema sabe que usted es el usuario que inició sesión en la consola, por lo que si apaga la computadora por error, presumiblemente puede volver a encenderla.
Para un usuario en el shell, es muy posible que inicie sesión de forma remota, por lo que el sistema requiere que inicie sesión como root para emitir un comando de apagado. Esto evita que un usuario habitual que inicie sesión en un servidor lo apague mientras otras personas lo están utilizando, y aunque no hay necesariamente nadie físicamente allí para iniciar la copia de seguridad de la computadora.
La razón por la que el apagado no proporciona una solicitud de GUI para la contraseña de superusuario probablemente sea simplemente que no hay una utilidad real que se pueda obtener allí: si está en la consola, donde aparecería la solicitud, podría usar la función cog- menú de ruedas en su lugar. Si desea tener un indicador de línea de comando para la contraseña de superusuario para el apagado, eso ya está disponible con "sudo shutdown".
fuente
En un sistema multiusuario, lo último que desea es que sus usuarios inicien sesión y puedan reiniciar aleatoriamente el servidor en cualquier momento, por lo tanto, la versión de línea de comando de Reboot es un comando solo para superusuario, por lo que necesita que sea root o tener derechos de sudo.
Lo mismo ocurre con los comandos Halt y PowerOff.
fuente