¿Cómo ejecuto un comando como administrador del sistema (root)

66

Necesito ejecutar un comando con privilegios administrativos. Alguien dijo que debería ejecutar un comando como root. ¿Cómo hago esto?

Stefan
fuente
2
por favor vea la meta discusión sobre esta pregunta
Stefan

Respuestas:

94

Las dos posibilidades principales de la línea de comandos son:

  • Use sue ingrese la contraseña de root cuando se le solicite.
  • Ponga sudodelante del comando e ingrese su contraseña cuando se le solicite.

Ejecutar un comando de shell como root

sudo (preferido cuando no se ejecuta una pantalla gráfica)

Este es el método preferido en la mayoría de los sistemas, incluidos Ubuntu, Linux Mint, (posiblemente) Debian y otros. Si no conoce una contraseña raíz separada, use este método.

Sudo requiere que escriba su propia contraseña. (El propósito es limitar el daño si deja su teclado desatendido y desbloqueado, y también asegurarse de que realmente desea ejecutar ese comando y no fue, por ejemplo, un error tipográfico). A menudo está configurado para no volver a pedir algunos minutos para que pueda ejecutar varios sudocomandos en sucesión.

Ejemplo:

sudo service apache restart

Si necesita ejecutar varios comandos como root, prefije cada uno de ellos con sudo. A veces, es más conveniente ejecutar un shell interactivo como root. Puedes usar sudo -ipara eso:

$ sudo -i
# command 1
# command 2
...
# exit

En lugar de sudo -i, puedes usar sudo -s. La diferencia es que -ire i nitializes el entorno para configuraciones normales, mientras que -sutiliza los archivos de configuración para bien o para mal.

Para obtener más información, visite el sitio web de sudo o escriba man sudoen su sistema. Sudo es muy configurable; por ejemplo, se puede configurar para permitir que un determinado usuario solo ejecute ciertos comandos como root. Lea la sudoerspágina del manual para más información; use sudo visudopara editar el archivo sudoers.

su

El sucomando existe en la mayoría de los sistemas tipo Unix. Le permite ejecutar un comando como otro usuario, siempre que conozca la contraseña de ese usuario. Cuando se ejecuta sin usuario especificado, suse establecerá de forma predeterminada en la cuenta raíz.

Ejemplo:

su -c 'service apache restart'

El comando a ejecutar debe pasarse utilizando la -copción Tenga en cuenta que necesita comillas para que el comando no sea analizado por su shell, sino que pase intacto al shell raíz que se suejecuta.

Para ejecutar múltiples comandos como root, es más conveniente iniciar un shell interactivo.

$ su
# command 1
# command 2
...
# exit

En algunos sistemas, debe estar en el grupo número 0 (llamado wheel) para usar su. (El punto es limitar el daño si la contraseña de root se filtró accidentalmente a alguien).

Iniciar sesión como root

Si hay una contraseña de root configurada y la posee, simplemente puede escribir rooten el indicador de inicio de sesión e ingresar la contraseña de root. Tenga mucho cuidado y evite ejecutar aplicaciones complejas como root ya que podrían hacer algo que no pretendía. Iniciar sesión directamente como root es principalmente útil en situaciones de emergencia, como fallas de disco o cuando se ha bloqueado su cuenta.

Modo de usuario único

El modo de usuario único, o nivel de ejecución 1, también le otorga privilegios de root. Esto está destinado principalmente a situaciones de mantenimiento de emergencia donde el arranque en un nivel de ejecución multiusuario no es posible. Puede arrancar en modo de usuario único pasando singleo emergencyen la línea de comando del núcleo. Tenga en cuenta que arrancar en modo de usuario único no es lo mismo que arrancar el sistema normalmente e iniciar sesión como root. Por el contrario, el sistema solo iniciará los servicios definidos para el nivel de ejecución 1. Normalmente, este es el número más pequeño de servicios necesarios para tener un sistema utilizable.

También se puede obtener en modo monousuario con el comando telinit: telinit 1; sin embargo, este comando requiere que ya haya obtenido privilegios de root a través de algún otro método para poder ejecutarlo.

En muchos sistemas, el arranque en modo de usuario único le dará acceso al usuario a un shell raíz sin solicitar una contraseña. En particular, los systemdsistemas basados ​​le solicitarán la contraseña de root cuando arranque de esta manera.

Otros programas

Calife

Calife le permite ejecutar comandos como otro usuario escribiendo su propia contraseña, si está autorizado. Es similar al sudo mucho más extendido (ver arriba). Calife es más ligero que el sudo pero también menos configurable.

Op

Op le permite ejecutar comandos como otro usuario, incluido root. Esta no es una herramienta completa para ejecutar comandos arbitrarios: escribe opseguido de una mnemónica configurada por el administrador del sistema para ejecutar un comando específico.

súper

Super te permite ejecutar comandos como otro usuario, incluido root. El comando debe haber sido permitido por el administrador del sistema.

Ejecutar un comando gráfico como root

Ver también Wikipedia .

PolicyKit (preferido cuando se usa GNOME)

Simplemente prefija su comando deseado con el comando pkexec. Tenga en cuenta que si bien esto funciona en la mayoría de los casos, no funciona de manera universal.

Ver man pkexecpara más información.

KdeSu, KdeSudo (preferido cuando se usa KDE)

kdesuy kdesudoson frontales gráficos para suy sudorespectivamente. Le permiten ejecutar programas de X Window como root sin problemas. Son parte de KDE . Tipo

kdesu -c 'command --option argument'

e ingrese la contraseña de root, o escriba

kdesudo -c 'command --option argument'

e ingrese su contraseña (si está autorizado para ejecutar sudo). Si marca la opción "mantener contraseña" en KdeSu, solo tendrá que escribir la contraseña de root una vez por sesión de inicio de sesión.

Otros programas

Ktsuss

Ktsuss ("mantenga su su simple, estúpido") es una versión gráfica de su.

Beesu

Beesu es una interfaz gráfica para el comando su que ha reemplazado a Gksu en los sistemas operativos basados ​​en Red Hat. Ha sido desarrollado principalmente para RHEL y Fedora.

Métodos obsoletos

gksu y gksudo

gksuy gksudoson frontales gráficos para suy sudorespectivamente. Le permiten ejecutar programas de X Window como root sin problemas. Son parte de Gnome . Tipo

gksu command --option argument

e ingrese la contraseña de root, o escriba

gksudo command --option argument

e ingrese su contraseña (si está autorizado para ejecutar sudo).

gksuy gksudoson obsoletos Han sido reemplazados por PolicyKit en GNOME, y muchas distribuciones (como Ubuntu) ya no los instalan por defecto. No debe depender de que estén disponibles o funcionen correctamente.

Manualmente a través de uno de los métodos basados ​​en shell

Utilice uno de los métodos en "ejecutar un comando de shell como sección raíz". Deberá asegurarse de que ni la DISPLAYvariable de entorno ni el XAUTHORITYentorno se restablezcan durante la transición a la raíz. Esto puede requerir una configuración adicional de esos métodos que está fuera del alcance de esta pregunta.

En general, esta es una mala idea, principalmente porque las aplicaciones gráficas leerán y escribirán los archivos de configuración como root, y cuando intentes usar esas aplicaciones nuevamente como tu usuario normal, esas aplicaciones no tendrán permiso para leer sus propias configuraciones.

Editar un archivo como root

Consulte ¿Cómo edito un archivo como root?

Gilles
fuente
2
Cabe señalar que sudosolo funcionará si (1) está instalado y (2) si su uso está en el archivo sudoers y le permite realizar la operación.
n0pe
2
Esto necesita ser actualizado. pkexecestá reemplazando gksu/ gksudoen muchas distribuciones hoy en día.
Strugee
1
@strugee: ¿ibas a intentar actualizar esto? Las cosas bajo Redhat tampoco son correctas.
slm
8

Uso su:

$ su -c command

o

$ su
# command
# exit

En cualquier caso, se le pedirá la rootcontraseña. Para obtener más información, consulte la página del manual .

Steven D
fuente
3

Dado que la pregunta no era específica de Linux, así es como se logra el mismo objetivo en Solaris 9+ (o Trusted Solaris 8):

Solaris, desde la versión 9, ha incluido un conjunto de herramientas cariñosamente denominadas RBAC o Control de acceso basado en roles.

La esencia de RBAC es que a través de la concesión de Autorizaciones y Derechos, a Usuarios y / o Roles, o la concesión de Roles a Usuarios, puede crear modelos increíblemente finos para quién puede ejecutar qué privilegios.

Esencialmente, identifica la autorización en / etc / security / auth_attr, luego la otorga a usuarios o roles en / etc / user_attr.

Defina perfiles en / etc / security / prof_attr. Luego asocia los comandos con esos perfiles en / etc / security / exec_attr, y luego asigna esos perfiles a los usuarios en el archivo / etc / user_attr.

Una vez que se hacen esas cosas, realmente se ejecuta pfexec <command>para ejecutar el comando con privilegios o autorizaciones que se otorgan a ese usuario para ese comando.

Lo bueno de RBAC es que no hay privilegios adicionales otorgados al comando en sí, o al usuario, solo a la combinación de usuario + comando. Por lo tanto, es más seguro que hacer un binario + s, o simplemente usar sudo para que un usuario pueda ejecutar casi cualquier cosa. (Sé que puedes bloquear sudo, pero en mi experiencia la mayoría de la gente no)

Otra ventaja de RBAC es que puede hacer root una cuenta de rol y asignar ese rol a los usuarios que pueden convertirse en root con el comando 'su' y la contraseña de root. El usuario root también podrá iniciar sesión en modo de usuario único, que es mejor (en mi opinión) que el modelo Linux donde puede deshabilitar la contraseña de root passwd -d rooto bloquear la cuenta de root passwd -l root, lo que hace que iniciar sesión como root sea bastante difícil cuando algo sale mal.

Ben Rockwood tiene una excelente publicación de blog sobre RBAC que se puede leer en Uso de RBAC en Solaris (abierto) .

Tim Kennedy
fuente
3

O puedes darle a algunos comandos una superpotencia. Estoy hablando de permisos especiales en los que los comandos se ejecutan con el permiso del propietario.

Obtenga la ruta de comando #which <command>y configure SUID o SGID para esa ruta.

PS: los bits SUID y SGID deben administrarse con cuidado. Pueden hacer que su sistema sea inseguro.

Ayush Goyal
fuente