14 de marzo de 2019 ATENCIÓN: Este artículo de la wiki está siendo significativamente reescrito ya que contiene una buena cantidad de material antiguo, anticuado y posiblemente cuestionable. Se recomienda tener precaución y consultar con otros en los Foros de Ubuntu o en Ask Ubuntu! |
Nota: Para obtener ayuda con la configuración de los privilegios de sudo a través de su archivo de configuración /etc/sudoers, consulte Sudoers.
Información de fondo
En Linux (y en Unix en general), existe un SuperUsuario llamado root. El equivalente a root en Windows es el grupo de Administradores. El SuperUsuario puede hacer cualquier cosa y todo, y por lo tanto hacer el trabajo diario como SuperUsuario puede ser peligroso. Podrías escribir un comando incorrectamente y destruir el sistema. Idealmente, se ejecuta como un usuario que tiene sólo los privilegios necesarios para la tarea en cuestión. En algunos casos, esto es necesariamente root, pero la mayoría de las veces es un usuario normal.
Por defecto, la contraseña de la cuenta root está bloqueada en Ubuntu. Esto significa que no se puede iniciar sesión como root directamente o utilizar el comando su para convertirse en el usuario root. Sin embargo, dado que la cuenta de root existe físicamente, todavía es posible ejecutar programas con privilegios de nivel de root. Aquí es donde entra sudo – permite a los usuarios autorizados (normalmente usuarios «Administrativos»; para más información consulte AddUsersHowto) ejecutar ciertos programas como root sin tener que conocer la contraseña de root.
Esto significa que en la terminal debe utilizar sudo para los comandos que requieren privilegios de root; simplemente anteponga sudo a todos los comandos que necesite ejecutar como root. Para ver ejemplos de uso más extensos, consulte más abajo. Del mismo modo, cuando ejecute programas GUI que requieran privilegios de root (por ejemplo, el applet de configuración de red), utilice sudo gráfico y también se le pedirá una contraseña (más abajo). Sólo recuerde, cuando sudo pide una contraseña, necesita su contraseña de USUARIO, y no la contraseña de la cuenta de root.
Por favor, tenga en cuenta que un número importante de usuarios de Ubuntu son nuevos en Linux. Hay una curva de aprendizaje asociada a cualquier sistema operativo y muchos usuarios nuevos intentan tomar atajos habilitando la cuenta de root, iniciando sesión como root y cambiando la propiedad de los archivos del sistema.
Ejemplo: Sistema roto a través del (ab)uso de root por parte de un nuevo usuario
Por favor, tened en cuenta que en el momento de la publicación, este era el primer mensaje de los usuarios en los foros de Ubuntu. Mientras que algunos podrían llamar a esto una «experiencia de aprendizaje», aprender rompiendo su sistema es frustrante y puede resultar en la pérdida de datos.
Cuando dé consejos en los foros de Ubuntu y en el IRC, por favor, tómese el tiempo de enseñar «lo básico» como la propiedad, los permisos y cómo usar sudo / gksu / kdesudo de tal manera que los nuevos usuarios no rompan los sistemas.
Ventajas y desventajas
Beneficios del uso de sudo
Hay una serie de beneficios en que Ubuntu deje los inicios de sesión de root deshabilitados por defecto, incluyendo:
- El instalador tiene menos preguntas que hacer.
- Los usuarios no tienen que recordar una contraseña adicional para el uso ocasional (es decir, la contraseña de root). Si lo hicieran, es probable que la olviden (o que la graben de forma insegura, permitiendo que cualquiera pueda entrar fácilmente en su sistema).
-
Evita el inicio de sesión interactivo «puedo hacer cualquier cosa» por defecto. Se le pedirá una contraseña antes de que los cambios importantes pueden suceder, que debe hacer que usted piensa acerca de las consecuencias de lo que está haciendo.
-
Sudo añade una entrada de registro de los comandos ejecutados (en /var/log/auth.log). Si te equivocas, puedes volver atrás y ver qué comandos se ejecutaron.
-
En un servidor, cualquier cracker que intente entrar por fuerza bruta sabrá que tiene una cuenta llamada root y lo intentará primero. Lo que no saben es cuáles son los nombres de usuario de sus otros usuarios. Dado que la contraseña de la cuenta root está bloqueada, este ataque se vuelve esencialmente sin sentido, ya que no hay ninguna contraseña para descifrar o adivinar en primer lugar.
- Permite una fácil transferencia de los derechos de administrador al añadir y eliminar usuarios de los grupos. Cuando se utiliza una única contraseña de root, la única manera de desautorizar a los usuarios es cambiar la contraseña de root.
- Sudo puede ser configurado con una política de seguridad mucho más fina.
- La contraseña de la cuenta raíz no necesita ser compartida con todos los que necesitan realizar algún tipo de tarea(s) administrativa(s) en el sistema (ver el punto anterior).
- La autenticación expira automáticamente después de un corto tiempo (que se puede establecer tan poco como se desee o 0); así que si se aleja de la terminal después de ejecutar comandos como root usando sudo, no estará dejando una terminal de root abierta indefinidamente.
Desventajas de usar sudo
Aunque para los equipos de escritorio los beneficios de usar sudo son grandes, hay posibles problemas que hay que tener en cuenta:
-
Redirigir la salida de los comandos ejecutados con sudo requiere un enfoque diferente. Por ejemplo, considere sudo ls > /root/somefile no funcionará ya que es el shell el que intenta escribir en ese archivo. Puedes usar ls | sudo tee -a /root/somefile para añadir, o ls | sudo tee /root/somefile para sobrescribir el contenido. También puedes pasar el comando completo a un proceso shell ejecutado bajo sudo para que se escriba en el archivo con permisos de root, como sudo sh -c «ls > /root/somefile».
- En muchos entornos de oficina el Único usuario local de un sistema es root. Todos los demás usuarios se importan mediante técnicas NSS como nss-ldap. Para configurar una estación de trabajo, o arreglarla, en el caso de un fallo de red en el que nss-ldap está roto, se necesita root. Esto tiende a dejar el sistema inutilizable a menos que se craquee. Aquí se necesita un usuario local adicional, o una contraseña de root habilitada. La cuenta de usuario local debe tener su $HOME en un disco local, _no_ en NFS (o cualquier otro sistema de archivos en red), y un .profile/.bashrc que no haga referencia a ningún archivo en montajes NFS. Esto es normalmente el caso para el usuario root, pero si se añade una cuenta de rescate no root, tendrá que tomar estas precauciones manualmente. Sin embargo, la ventaja de usar un usuario local con sudo es que los comandos pueden ser fácilmente rastreados, como se menciona en los beneficios anteriores.
Uso
- Cuando se utiliza sudo, su contraseña se almacena por defecto durante 15 minutos. Después de ese tiempo, tendrá que introducir su contraseña de nuevo.
- Su contraseña no se mostrará en la pantalla mientras la escribe, ni siquiera como una fila de estrellas (******). ¡Se está introduciendo con cada pulsación de tecla!
sudo
Para usar sudo en la línea de comandos, anteponga el comando con sudo, como a continuación: Ejemplo #1
sudo chown bob:bob /home/bob/*
Ejemplo #2
sudo /etc/init.d/networking restart
Para repetir el último comando introducido, excepto con sudo antepuesto, ejecuta:
sudo !!
Sudo gráfico
Nunca debes usar sudo normal para iniciar aplicaciones gráficas como root. El uso de sudo con aplicaciones gráficas tiene el potencial de corromper su entorno al permitir que root tome la propiedad y/o cambie los permisos de los archivos críticos que debe poseer. En los foros se ven con frecuencia peticiones de ayuda en pánico de usuarios que ya no pueden iniciar sesión después de ejecutar aplicaciones gráficas bajo sudo.
Tenga en cuenta que muchos sitios web e hilos antiguos aconsejan el uso de gksu. Sin embargo, tales resultados de búsqueda son obsoletos. gksudo no ha sido actualizado desde hace años y ni siquiera está disponible en Bionic (18.04) y superior. gksu ha sido reemplazado por pkexec, pero incluso pkexec está siendo desaprobado por los desarrolladores de Ubuntu de línea principal. Ellos han tomado la posición de que la manipulación y edición de archivos bajo root debe ser restringida a la línea de comandos.
Sólo podemos conjeturar cuáles son los motivos detrás de esta decisión: tal vez hay demasiados usuarios que tienen problemas para ejecutar aplicaciones gráficas como root. En cualquier caso, ejecutar aplicaciones gráficas como root requiere ahora soluciones y pasos adicionales.
Recursos específicos para cada sabor
Hay una serie de opciones específicas para cada sabor para ejecutar aplicaciones gráficas como root:
-
Puede utilizar pkexec en aquellos sabores que soporten esta opción. A partir de 18.04, sólo Xubuntu soporta esta opción por defecto, como se muestra en los siguientes ejemplos:
-
pkexec thunarpkexec mousepad /etc/fstab
Por defecto, Kubuntu permite acceder fácilmente a un gestor de archivos raíz: KDE Launcher → Equipo → Root-Dolphin
-
Desde ahí: (→ editar archivo) se abrirá una instancia raíz de Kate.
-
-
La línea principal de Ubuntu y Gnome utilizan Nautilus como gestor de archivos. Cualquier sabor que ejecute Nautilus le permitirá instalar el paquete nautilus-admin que añadirá dos extensiones de python a Nautilus. Estas extensiones añaden opciones que permiten el acceso de root: Abrir como Administrador y Editar como Administrador
-
También es posible instalar los archivos Policykit que faltan tanto para Nautilus como para Gedit. Consulte este sitio para obtener instrucciones y enlaces. Un usuario experto podría construir más archivos Policykit para otros gestores y editores de archivos utilizando los archivos enlazados como plantillas. Son simples archivos XML que pueden ser editados con un editor de texto estándar.
-
- Utilizar la línea de comandos. Los editores de texto simples como nano son bastante fáciles de aprender. Si prefieres un gestor de archivos casi gráfico, instala Midnight Commander. Ambas aplicaciones funcionan bajo sudo sin problemas. Ejemplos:
-
sudo mcsudo nano /etc/fstab
-
-
A pesar de la advertencia anterior, es posible utilizar sudo con aplicaciones gráficas siempre que se añada la bandera -H. Esta bandera es crítica: establece correctamente a root en su propio entorno en lugar de heredar indebidamente el entorno del usuario. El uso de la bandera -H es obligatorio. No usar esta bandera puede corromper archivos críticos del sistema y evitar que se inicie la sesión.
-
Con sudo -H casi cualquier aplicación gráfica puede ser lanzada bajo root dentro de cualquier sabor de ‘buntu. Esto incluye el editor gráfico por defecto de cada sabor y el gestor de archivos.
Un peligro apreciable con sudo -H es que la bandera -H es fácil de olvidar. Y basta con una omisión para que el daño esté hecho.
-
Soluciones generales
Los siguientes métodos funcionarán en todos los sabores:
Usuarios
Permitir que otros usuarios ejecuten sudo
Para añadir un nuevo usuario a sudo, abre la ventana de Configuración, luego el menú Detalles → Usuarios. Primero haz clic en Desbloquear, luego puedes seleccionar un usuario y darle a Administrador.
En el terminal (para Precise Pangolin, 12.04), esto sería:
sudo adduser <username> sudo
donde se sustituye <username> por el nombre del usuario (sin el <>).
En la versión anterior de Ubuntu
sudo adduser <username> admin
habría sido apropiado, pero el grupo de administradores ha sido obsoleto y ya no existe en Ubuntu 12.04.
Iniciar sesión como otro usuario
Por favor, no uses esto para convertirte en root, mira más abajo en la página para más información sobre eso.
sudo -i -u <username>
Por ejemplo, para convertirse en el usuario amanda para la gestión de cintas.
sudo -i -u amanda
La contraseña que se pide es la tuya, no la de amanda.
Cuenta de root
Habilitando la cuenta de root
Habilitar la cuenta de root no suele ser necesario. Casi todo lo que necesitas hacer como administrador de un sistema Ubuntu se puede hacer a través de sudo o gksudo. Si realmente necesita un inicio de sesión de root persistente, la mejor alternativa es simular un shell de inicio de sesión de root utilizando el siguiente comando… |
sudo -i
Para habilitar la cuenta de root (es decir, establecer una contraseña) utiliza:
sudo passwd root
¡Usa bajo tu propio riesgo!
Entrar en X como root puede causar problemas muy graves. Si crees que necesitas una cuenta de root para realizar una determinada acción, consulta primero los canales de soporte oficiales, para asegurarte de que no hay una alternativa mejor. |
Re-deshabilitar su cuenta de root
Si por alguna razón has habilitado tu cuenta de root y deseas volver a deshabilitarla, utiliza el siguiente comando en la terminal… |
sudo passwd -dl root
Otra información
Misconceptos
- ¿No es sudo menos seguro que su?
-
El modelo básico de seguridad es el mismo, y por tanto estos dos sistemas comparten sus principales debilidades. Cualquier usuario que utilice su o sudo debe ser considerado como un usuario privilegiado. Si la cuenta de ese usuario es comprometida por un atacante, el atacante también puede obtener privilegios de root la próxima vez que el usuario lo haga. La cuenta de usuario es el eslabón débil de esta cadena, por lo que debe ser protegida con el mismo cuidado que la de root.
En un nivel más esotérico, sudo proporciona algunas características que fomentan diferentes hábitos de trabajo, que pueden impactar positivamente en la seguridad del sistema. sudo se utiliza comúnmente para ejecutar un solo comando, mientras que su se utiliza generalmente para abrir un shell y ejecutar múltiples comandos. El enfoque sudo reduce la probabilidad de que un shell de root se deje abierto indefinidamente, y anima al usuario a minimizar su uso de los privilegios de root.
-
-
¡No podré entrar en modo monopuesto!
- El programa sulogin de Ubuntu está parcheado para manejar el caso por defecto de una contraseña de root bloqueada.
- ¡Puedo obtener un shell de root desde la consola sin introducir una contraseña!
- Tienes que introducir tu contraseña.
Los usuarios de la consola tienen acceso al gestor de arranque, y pueden obtener privilegios administrativos de varias maneras durante el proceso de arranque. Por ejemplo, especificando un programa init(8) alternativo. Los sistemas Linux no suelen estar configurados para ser seguros en la consola, y son necesarios pasos adicionales (por ejemplo, establecer una contraseña de root, una contraseña del gestor de arranque y una contraseña de la BIOS) para que lo sean. Hay que tener en cuenta que los usuarios de la consola suelen tener acceso físico a la máquina, por lo que también pueden manipularla de otras maneras.
- Tienes que introducir tu contraseña.
Notas especiales sobre sudo y shells
Ninguno de los métodos que aparecen a continuación son sugeridos o apoyados por los diseñadores de Ubuntu.
Por favor, no sugiera esto a otras personas a menos que usted personalmente esté disponible las 24 horas del día, los 7 días de la semana, para apoyar al usuario si tiene problemas como resultado de la ejecución de un shell como root.
Para iniciar un shell de root (es decir, una ventana de comandos donde puede ejecutar comandos de root), iniciando el entorno de root y los scripts de inicio de sesión, utilice:
sudo -i (similar to sudo su - , gives you roots environment configuration)
Para iniciar un shell de root, pero manteniendo el entorno del shell actual, utiliza:
sudo -s (similar to sudo su)
Para un breve resumen de algunas de las diferencias entre su, su -, y sudo -{i,s} ver : Foros de Ubuntu Post con bonita tabla .
Resumen de las diferencias encontradas –
corrupted by user's HOME=/root uses root's PATH env varssudo -i Y Y Nsudo -s N Y Ysudo bash N Y Ysudo su Y N Y PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games probably set by /etc/environment PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Para una descripción detallada de las diferencias ver man su y man sudo .
Quitar el aviso de contraseña para sudo
Si desactiva la contraseña sudo de su cuenta, comprometerá seriamente la seguridad de su ordenador. Cualquiera que esté sentado en su cuenta desatendida y con la sesión iniciada tendrá acceso completo a la raíz, y los exploits remotos se vuelven mucho más fáciles para los crackers maliciosos. |
-
Este método NO es sugerido ni apoyado por los diseñadores de Ubuntu.
- Por favor, no sugiera esto a otras personas a menos que usted personalmente esté disponible las 24 horas del día, los 7 días de la semana, para apoyar al usuario si tiene problemas como resultado de ejecutar un shell como root.
Estas instrucciones son para eliminar la solicitud de una contraseña cuando se utiliza el comando sudo. El comando sudo todavía tendrá que ser utilizado para el acceso de la raíz sin embargo.
Edita el archivo sudoers
Abre una ventana de Terminal. Escriba sudo visudo. Añade la siguiente línea al FINAL del archivo (si no está al final puede ser anulada por entradas posteriores):
<username> ALL=NOPASSWD: ALL
Sustituye <username> por tu nombre de usuario (sin el <>). Esto es asumiendo que Ubuntu ha creado un grupo con el mismo nombre que tu nombre de usuario, lo cual es típico. Puedes usar alternativamente el grupo usuarios o cualquier otro grupo de este tipo en el que estés. Sólo asegúrese de que está en ese grupo. Esto se puede comprobar yendo a Sistema->Administración->Usuarios y Grupos
Ejemplo:
michael ALL=NOPASSWD: ALL
Escribe ^x para salir. Esto debería pedir una opción para guardar el archivo, escriba Y para guardar.
Cierre la sesión y vuelva a iniciarla. Esto debería permitirle ejecutar el comando sudo sin que se le pida una contraseña.
O para hacer esto para el grupo de todo el sistema sudo
root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Cierre la sesión y vuelva a entrar.
Restablecer el tiempo de espera de sudo
Puedes asegurarte de que sudo te pida la contraseña la próxima vez ejecutando:
sudo -k
La duración del tiempo de espera de sudo por defecto se puede cambiar siguiendo este artículo: RootSudoTimeout.