TL; DR: Haz las cosas como root solo cuando sea necesario. sudo
hace que esto sea bastante fácil. Si habilita los inicios de sesión de raíz, aún puede seguir esta regla, solo debe tener cuidado de hacerlo. Aunque habilitar los inicios de sesión de raíz no es realmente inseguro si se hace correctamente, no es necesario habilitarlos porque sí sudo
.
Realmente hay dos preguntas relacionadas aquí.
- ¿Por qué es malo iniciar sesión como root para el uso diario de la computadora (navegación web, correo electrónico, procesamiento de textos, juegos, etc.)?
- ¿Por qué Ubuntu desactiva de forma predeterminada los inicios de sesión de raíz y usa
sudo
y polkit para permitir a los administradores ejecutar comandos específicos como root?
¿Por qué no ejecutar todo como root todo el tiempo?
La mayoría de las otras respuestas cubren esto. Todo se reduce a:
- Si usa poderes de raíz para tareas que no los requieren, y termina haciendo algo que no quiso hacer, podría cambiar o dañar su sistema de una manera que no desea.
- Si ejecuta un programa como root cuando no es necesario, y se termina haciendo algo que no quería decir para que lo haga - por ejemplo, debido a una vulnerabilidad de seguridad u otro error - que podría cambiar o daño su sistema de una manera que no quiere.
Es cierto que incluso sin hacer las cosas como root, puede causar daño. Por ejemplo, puede eliminar todos los archivos en su propio directorio de inicio, que generalmente incluye todos sus documentos, ¡sin ejecutarlos como root! (Espero que tengas copias de seguridad).
Por supuesto, como root, hay formas adicionales de destruir accidentalmente esos mismos datos. Por ejemplo, podría especificar el of=
argumento incorrecto para un dd
comando y escribir datos sin procesar sobre sus archivos (lo que los hace mucho más difíciles de recuperar que si simplemente los hubiera eliminado).
Si eres la única persona que usa tu computadora, el daño que puedes hacer solo como root podría no ser realmente mayor que el daño que puedes hacer con tus privilegios de usuario habituales. Pero eso todavía no es motivo para expandir su riesgo para incluir formas adicionales de desordenar su sistema Ubuntu.
Si correr con una cuenta de usuario no root le impidió ejercer el control sobre su propia computadora, entonces esto sería una mala compensación. Pero no lo hace: cada vez que realmente desee realizar una acción como root, puede hacerlo con sudo
y otros métodos .
¿Por qué no hacer posible iniciar sesión como root?
La idea de que la capacidad de iniciar sesión como root es intrínsecamente insegura es un mito. Algunos sistemas tienen una cuenta raíz habilitada de manera predeterminada; otros sistemas usan sudo
de manera predeterminada, y algunos están configurados con ambos.
- Por ejemplo, OpenBSD , que se considera ampliamente y razonablemente el sistema operativo de propósito general más seguro del mundo, se envía con la cuenta raíz habilitada para el inicio de sesión local basado en contraseña.
- Otros sistemas operativos muy respetados que hacen esto incluyen RHEL , CentOS y Fedora .
- Debian (de la que deriva Ubuntu ) hace que el usuario decida qué enfoque se configurará durante la instalación del sistema.
No es objetivamente incorrecto tener un sistema donde la cuenta raíz esté habilitada, siempre que
- todavía solo lo usa cuando realmente lo necesita, y
- Usted restringe el acceso a ella de manera adecuada.
A menudo, los principiantes preguntan cómo habilitar la cuenta raíz en Ubuntu. No debemos ocultarles esta información, pero generalmente cuando las personas preguntan esto es porque tienen la impresión errónea de que necesitan habilitar la cuenta raíz. De hecho, esto casi nunca es necesario, por lo que al responder estas preguntas es importante que lo expliquemos. La habilitación de la cuenta raíz también facilita la complacencia y la realización de acciones como root que no requieren privilegios de root. Pero esto no significa que habilitar la cuenta raíz sea inseguro por sí mismo .
sudo
alienta y ayuda a los usuarios a ejecutar comandos como root solo cuando lo necesitan. Para ejecutar un comando como root, escriba sudo
, un espacio y luego el comando. Esto es muy conveniente, y muchos usuarios de todos los niveles de habilidad prefieren este enfoque.
En resumen, no es necesario habilitar los inicios de sesión raíz porque sí sudo
. Pero siempre que lo use solo para tareas administrativas que lo requieran, es igualmente seguro habilitar e iniciar sesión como root, siempre y cuando solo sea de esta manera :
- Localmente, desde una consola virtual no gráfica .
- Con el
su
comando, cuando inicie sesión desde otra cuenta.
Sin embargo, surgen riesgos de seguridad adicionales sustanciales si inicia sesión como root de estas maneras:
Gráficamente. Cuando inicia sesión gráficamente, se ejecuta una gran cantidad de cosas para proporcionar la interfaz gráfica, y terminará ejecutando incluso más aplicaciones como root para usar esa interfaz para cualquier cosa. Esto va en contra del principio de ejecutar solo programas como root que realmente necesitan privilegios de root. Algunos de estos programas pueden contener errores, incluidos errores de seguridad.
Además, hay una razón que no es de seguridad para evitar esto. Iniciar sesión gráficamente como root no está bien soportado, como loevborg menciona , los desarrolladores de entornos de escritorio y de aplicaciones gráficas a menudo no los prueban como root. Incluso si lo hacen, iniciar sesión en un entorno de escritorio gráfico como root no obtiene pruebas alfa y beta del mundo real por parte de los usuarios, ya que casi nadie lo intenta (por las razones de seguridad explicadas anteriormente).
Si necesita ejecutar una aplicación gráfica específica como root, puede usargksudo
o sudo -H
. Esto ejecuta muchos menos programas como root que si realmente hubiera iniciado sesión gráficamente con la cuenta root.
Remotamente. La root
cuenta puede hacer cualquier cosa, y tiene el mismo nombre en prácticamente todos los sistemas tipo Unix. Al iniciar sesión como root a través de ssh
u otros mecanismos remotos, o incluso configurando servicios remotos para permitirlo , facilita mucho a los intrusos, incluidos los scripts automatizados y el malware que se ejecutan en botnets, obtener acceso a través de la fuerza bruta, ataques de diccionario (y posiblemente algunos errores de seguridad).
Podría decirse que el riesgo no es muy alta si se permite solamente -clave basada no, y basados en contraseñas conexiones de root.
Por defecto en Ubuntu, ni los inicios de sesión raíz gráficos ni los inicios de sesión remotos a través de SSH están habilitados, incluso si habilita el inicio de sesión como root . Es decir, incluso si habilita el inicio de sesión de root, solo se habilita de manera razonablemente segura.
- Si ejecuta un servidor ssh en Ubuntu y no ha cambiado
/etc/sshd/ssh_config
, contendrá la línea PermitRootLogin without-password
. Esto desactiva el inicio de sesión raíz basado en contraseña, pero permite el inicio de sesión basado en clave. Sin embargo, ninguna clave está configurada de manera predeterminada, por lo que, a menos que haya configurado una, eso tampoco funcionará. Además, el inicio de sesión raíz remoto basado en claves es mucho menos malo que el inicio de sesión raíz remoto basado en contraseña, en parte porque no crea el riesgo de fuerza bruta y ataques de diccionario.
- Aunque los valores predeterminados deberían protegerlo, creo que es una buena idea verificar su configuración ssh, si va a habilitar la cuenta raíz. Y si está ejecutando otros servicios que proporcionan inicio de sesión remoto, como ftp, también debe verificarlos.
En conclusión:
- Haga cosas como root solo cuando lo necesite;
sudo
te ayuda a hacer eso, mientras te da todo el poder de root en cualquier momento que lo desees.
- Si comprende cómo funciona la raíz y los peligros de usarla en exceso, habilitar la cuenta raíz no es realmente problemático desde una perspectiva de seguridad.
- Pero si comprende eso, también sabe que es casi seguro que no necesita habilitar la cuenta raíz .
Para obtener más información sobre root y sudo
, incluidos algunos beneficios adicionales sudo
que no he cubierto aquí, recomiendo RootSudo en la wiki de ayuda de Ubuntu.