¿Por qué es malo iniciar sesión como root?

192

A menudo me encuentro con publicaciones en foros u otros sitios web en los que ves a personas que bromean de tal manera que ejecutan / inician sesión como root como si fuera algo horrible y todos deberían saberlo. Sin embargo, no hay mucho que una búsqueda revele al respecto.

Puede ser ampliamente conocido por los expertos en Linux, pero realmente no sé por qué. Recuerdo que siempre corrí como root cuando probé Linux hace años (Redhat y Mandrake) y no recuerdo haber tenido ningún problema por eso.

En realidad, hay algunas distribuciones que tienen un fondo rojo brillante con signos de alerta por todas partes como fondo de pantalla para el usuario raíz (¿SuSe?). Todavía uso la cuenta "Administrador" para uso regular en mi instalación de Windows y tampoco he tenido ningún problema allí.

La tarde
fuente
15
Creo que no hay ningún problema en ejecutar un programa como root. Es solo eso, podrías dañar el núcleo de tu sistema operativo (incluso los sudoers pueden hacer eso) si no eres muy sabio en Linux. Aparte de eso, no creo que haya ningún problema. Pero ese es solo mi punto de vista.
Gaurav Butola
1
Pregunta relacionada aquí .
loevborg
La dificultad de ingresar al modo raíz varía entre las distribuciones. Personalmente, estoy molesto por cómo Fedora no te permite 'sudo' desde el primer momento. Sin embargo, OpenSUSE y Ubunto tienen sudo preconfigurado ... y, si elige la distribución correcta, puede minimizar sus molestias al no poder acceder a los archivos.
djangofan
44
@GauravButola, incluso si eres un experto, sigue siendo una mala idea en caso de que una aplicación se vea comprometida.
Strugee
2
@DaboRoss el OP comenta que trabaja en Windows como administrador; Por mi (poca) experiencia en ese sistema operativo, me parece que se parece más a Ubuntu: es una cuenta privilegiada en el sentido de que puede hacer lo que quiera, pero pide permiso antes, por ejemplo, para instalar un nuevo software. Entonces, probablemente el equivalente de usar el usuario "administrador" en Windows traducido a Ubuntu sería ejecutar el usuario principal con sudo configurado para que no solicite el pase, ya que ejecutarlo directamente como root es mucho más peligroso.
Rmano

Respuestas:

154

Derrota el modelo de seguridad que existe desde hace años. Las aplicaciones deben ejecutarse con seguridad no administrativa (o como simples mortales), por lo que debe elevar sus privilegios para modificar el sistema subyacente. Por ejemplo, no querrás que el reciente bloqueo de Rhythmbox borre todo tu /usrdirectorio debido a un error. O esa vulnerabilidad que se acaba de publicar en ProFTPD para permitir que un atacante obtenga un shell ROOT.

Es una buena práctica en cualquier sistema operativo ejecutar sus aplicaciones a nivel de usuario y dejar las tareas administrativas al usuario raíz, y solo según las necesidades.

lazyPower
fuente
55
... y te protege de la transformación de errores triviales en desastres. Soy un usuario / adm de Unix desde 1990, pero todavía puedo deslizar un espacio en el lugar equivocado haciendo un rm -rf tmp/tests/*...
Rmano
99
1.) La mayoría de las personas considerará su directorio de inicio como más importante que los directorios raíz, ya que el primero no se puede volver a instalar. Entonces no entiendo tu punto. 2.) En términos de seguridad, tienes razón. Pero viniendo de Windows (donde hay MUCHO más malware), donde he usado la cuenta de administrador desde siempre (como muchos lo hacen), me resulta difícil considerar esto como un peligro real. Soy demasiado flojo para escribir sudoy mi contraseña para cada segundo comando en Linux. ¿No se supone que los usuarios de Linux son vagos?
phil294
en desacuerdo -_-: ~: |
Edgy1
@LazyPower gracias por editar su respuesta, pero ahora ya no lo entiendo. Para modificar mi carpeta privada de Ubuntu ~, los programas no necesitan derechos de sudo. ¡Rhythmbox PUEDE borrar todo mi directorio $ HOME / Music! ¡Y eso es todo lo que me importa! ¿Cómo se relaciona esto con los permisos de root?
phil294
1
Esa es una buena llamada @Blauhirn. Acabo de enviar una edición de seguimiento para reflejar que no queremos que elimine la totalidad de / usr. En términos de protección de sus carpetas $ HOME, nada como una buena copia de seguridad puede ayudarlo. No creo que este escenario particular esté relacionado tanto con la seguridad como con las buenas prácticas. Gracias de nuevo por la llamada.
lazyPower
79

Solo una palabra: seguridad.

  1. Está registrado como root = todas las aplicaciones se ejecutan con privilegios de root: cada vulnerabilidad en Firefox, Flash, OpenOffice, etc. ahora puede destruir su sistema, porque los posibles virus ahora tienen acceso a todas partes. Sí, solo hay unos pocos virus para Ubuntu / Linux, pero también se debe a la buena seguridad y al usuario predeterminado sin privilegios.
  2. No se trata solo de virus: un pequeño error en una aplicación podría borrar algunos archivos del sistema o ...
  3. Cuando estás registrado como root, puedes hacer todo, ¡el sistema no te preguntará! ¿Quieres formatear este disco? Ok, solo un clic y listo, porque eres root y sabes lo que estás haciendo ...
Vojtech Trefny
fuente
16
Los archivos de datos, que son propiedad de mi cuenta de usuario, son mucho más valiosos para mí que los archivos del sistema. Todos sus ejemplos anteriores siguen siendo problemas cuando inicia sesión como usuario, excepto que los archivos de sistema fácilmente reemplazables están protegidos.
kbeta
55
@kbeta estás asumiendo que estás ejecutando en una computadora donde los únicos objetos de valor son tus datos y archivos de sistema. En realidad, Linux a menudo se usa en un sistema donde hay muchos usuarios que usan un sistema simultáneamente. En este caso, la estabilidad del sistema (y, por lo tanto, los archivos del sistema) es mucho más valiosa y otros archivos de usuario también son importantes.
Eric Pauley
2
@kbeta Es bastante justo, pero una configuración dañada del sistema también puede representar un riesgo para sus datos ... y, por supuesto, tener copias de seguridad sería una buena idea si su sistema está en riesgo actualmente o no. Trabajar copia de seguridad actual con un plan de recuperación ante desastres sería aún mejor.
Pryftan
47

Ejecutar como root es malo porque:

  1. Estupidez: Nada te impide hacer algo estúpido. Si intenta cambiar el sistema de cualquier forma que pueda ser dañina, debe hacer sudo, lo que prácticamente garantiza una pausa mientras ingresa la contraseña para darse cuenta de que está a punto de hacer un posible cambio grande / costoso.
  2. Seguridad: ya se ha mencionado varias veces en esta pregunta, pero básicamente es lo mismo, más difícil de hackear si no conoce la cuenta de inicio de sesión del usuario administrador. root significa que ya tiene la mitad del conjunto de credenciales de administrador en funcionamiento.
  3. Realmente no lo necesita: si necesita ejecutar varios comandos como root y le molesta tener que ingresar su contraseña varias veces cuando sudo ha expirado, todo lo que necesita hacer es sudo -iy ahora es root. ¿Quieres ejecutar algunos comandos usando tuberías? Entonces úsalo sudo sh -c "comand1 | command2".
  4. Siempre puede usarlo en la consola de recuperación: la consola de recuperación le permite intentar recuperarse de hacer algo estúpido o solucionar un problema causado por una aplicación (que aún tenía que ejecutar como sudo :)) Ubuntu no tiene una contraseña para la cuenta raíz en este caso, pero puede buscar en línea para cambiar eso, esto dificultará que cualquier persona que tenga acceso físico a su casilla pueda hacer daño.

La razón por la que no pudo encontrar información sobre por qué es malo es porque, bueno, hay demasiados datos en Internet :) y que muchas personas que han estado utilizando Linux durante mucho tiempo piensan como usted. Esta forma de pensar sobre la cuenta raíz es bastante nueva (¿una década quizás?) Y mucha gente todavía se molesta por tener que usar sudo. Especialmente si están trabajando en un servidor, lo que significa que entraron con la intención de hacer cambios en el sistema. Probablemente derivado de malas experiencias anteriores y estándares de seguridad, la mayoría de los administradores de sistemas conocen mejor, pero todavía no les gusta :).

Marlon
fuente
'una década tal vez?' Mucho, mucho más que eso, incluso cuando escribiste esto. Incluso sin sudo hay su no mencionar, por ejemplo, el grupo de ruedas (por ejemplo). La separación de privilegios siempre es importante y siempre ha sido importante y siempre será importante. Otoh no tantas personas usaban un sistema operativo basado en Unix que hace muchos años y muchos de los que lo hacen están acostumbrados a ser siempre administradores.
Pryftan
36

Esta es una buena pregunta. Creo que la respuesta es ligeramente diferente dependiendo de si se trata de un servidor o una instalación de escritorio.

En un escritorio, es poco común usar la rootcuenta. De hecho, Ubuntu se entrega con acceso de root deshabilitado. Todos los cambios que requieren privilegios de superusuario se realizan sudoy sus gráficos gksudoy afines kdesudo. rootSin embargo, dado que es fácil establecer una contraseña, ¿por qué la gente no lo hace?

Una razón es que le brinda una capa adicional de seguridad. Si ejecuta un programa como rooty se explota una falla de seguridad, el atacante tiene acceso a todos los datos y puede controlar directamente el hardware. Por ejemplo, podría instalar un troyano o key-logger en su núcleo. Sin embargo, en la práctica, un ataque puede causar una gran cantidad de daño incluso sin privilegios de superusuario. Después de todo, todos los datos del usuario, incluidos los documentos y las contraseñas almacenadas, son accesibles sin acceso a la raíz.

Un punto más válido, en un sistema de usuario único, es que se evita que el usuario deje inutilizable el sistema accidentalmente. Si el usuario emite involuntariamente un comando que elimina todos los archivos, aún podrá iniciar el sistema, incluso si se pierden los datos.

Además, la mayoría de las aplicaciones orientadas al usuario (X11) de hoy se basan en el supuesto de que se ejecutan como una cuenta de usuario normal y sin derechos de administrador. Por lo tanto, algunos programas pueden comportarse mal cuando se ejecutan como root.

En un sistema multiusuario con acceso de shell no gráfico solamente, muchas de estas razones no se aplican. Sin embargo, Ubuntu sigue siendo razonablemente predeterminado a una rootcuenta inaccesible . Por un lado, existe una diferencia real entre obtener acceso a una cuenta de usuario (con sudoderechos) a través de un agujero de seguridad y obtener acceso a ella root, ya que en el primer caso la interrupción de otros usuarios requerirá ejecutarse sudoy aún solicitará la contraseña de la cuenta como Paso de seguridad adicional. Por otro lado, es útil realizar muchas tareas administrativas desde una cuenta de usuario y solo invocar sudocuando los privilegios de superusuario son absolutamente necesarios. Por lo tanto, al instalar un programa desde la fuente, es aconsejable construir la fuente: ejecutar configureymake- dentro del directorio del usuario y solo usando sudo make installen el paso final. Nuevamente, esto hace que sea más difícil dispararse a sí mismo (y a otros usuarios del sistema multiusuario) en el pie, y disminuye la probabilidad de que los scripts de compilación causen estragos en el sistema. Por lo tanto, incluso en un servidor, es un buen consejo seguir la administración basada en sudo de Ubuntu .

loevborg
fuente
2
he will still be able to boot the system, even if the data will be lost.- ¿Cuál es el punto de esto? Si mis datos se pierden, mis datos se pierden y eso es todo. El software del sistema Linux se puede reinstalar si se elimina, ¿por qué debería importarme la pérdida de datos en dichos directorios? Por otro lado, la pérdida de datos ~es mala. Y sudono me protege de eso.
phil294
2
Otra buena práctica es tener una copia de seguridad de datos importantes. Si borra el directorio de inicio, aún puede arrancar y simplemente copiar los archivos de la copia de seguridad. O supongamos que tiene una pequeña computadora portátil para viajar. Puede tener algunas fotos, notas de viaje, horarios de trenes, pero nada demasiado crucial. Si borra los archivos de usuario, aún puede arrancar el sistema y registrarse para su vuelo o averiguar qué autobús tomar.
Richlv
@Blauhirn Backups. Y existe la posibilidad de recuperación incluso si se ve sombrío.
Pryftan
34

Una razón para no ejecutarse como root que no ha sido (hasta ahora) identificado por otras respuestas es la trazabilidad. Probablemente importa menos en las máquinas que son principalmente máquinas de un solo usuario (su computadora de escritorio o portátil), pero en las máquinas del servidor, si alguien inicia sesión como root, no sabe a quién culpar por las acciones tomadas. Por lo tanto, la mayoría de las organizaciones profesionales con múltiples sistemas y múltiples administradores que necesitan rootprivilegios requieren que las personas inicien sesión con su propia identificación de usuario (y contraseña), y luego usen sudoprogramas similares para operar con rootprivilegios cuando sea necesario.

De lo contrario, las razones principales para no ejecutarse como root son:

  • Minimice el riesgo de daños por accidentes. Si se ejecuta rm -fr / home/me/my-subdircomo root, entonces eliminó drásticamente todo lo importante de su máquina debido a ese espacio después de la (primera) barra oblicua, porque lo que va primero es lo que se agregó primero, pequeñas cosas como el núcleo, el /biny el /etcdirectorio. Unix se molesta si los pierde.

  • Minimice el riesgo de daños por sitios maliciosos externos. Si navega como root, es más vulnerable a las descargas automáticas de material malicioso.

Yo uso MacOS X más que Ubuntu, pero allí, la raíz está deshabilitada de manera predeterminada, y todavía está en mi máquina. Rutinariamente actualizo el kernel y otras operaciones similares, usando sudo(detrás de escena). Técnicas similares se aplican a Linux en general.

Básicamente, solo debe usar los privilegios todopoderosos de rootpor períodos abreviados de trabajo para evitar el riesgo de errores.

Jonathan Leffler
fuente
1
No se trata de culpar a alguien, se trata de ser capaz de descubrir por qué alguien hizo un cambio.
jippie
2
@jippie: quiero decir 'culpar' de la misma manera que un VCS rastrea quién hizo qué para que la persona correcta se atribuya la responsabilidad del cambio, para bien o para mal, y uno de los nombres para el comando que realiza ese seguimiento es 'culpa'. Te da una persona con quien hablar para descubrir por qué sucedió algo. No siempre es 'culpa' (aunque deprimentemente a menudo, la razón por la que se necesita saber es porque algo no está funcionando como se esperaba y es necesario saber por qué no). Por lo tanto, se trata de responsabilidad y seguimiento en lugar de culpar necesariamente a la persona por lo que hizo.
Jonathan Leffler
En Ubuntu, los comandos como en rm -fr / home/me/my-subdirrealidad no intentan eliminar de forma recursiva /, porque /se trata especialmente para protegerse contra tales errores. Consulte la documentación de las opciones --preserve-rooty para obtener más detalles. Pero el principio es claro: los errores tipográficos de un solo carácter no existen ese resultado en la eliminación de todo. Por ejemplo, si quiere eliminar todo en el directorio actual ejecutando , pero accidentalmente coloca un antes , eso sería malo. --no-preserve-rootman rmrmrm -r */*
Eliah Kagan
@EliahKagan Pero si lo hicieras ... chown -R nobody:nobody ../desde decir / etc ¿te protegería? Si hicieras eso en / etc te causaría un mundo de dolor. Del mismo modo es .*cuando se ejecuta un comando de forma recursiva.
Pryftan
21

TL; DR: Haz las cosas como root solo cuando sea necesario. sudohace 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 sudoy 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:

  1. 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.
  2. 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 ddcomando 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 sudoy 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 sudode 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

  1. todavía solo lo usa cuando realmente lo necesita, y
  2. 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 .

sudoalienta 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 sucomando, 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 rootcuenta 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 sshu 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; sudote 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 sudoque no he cubierto aquí, recomiendo RootSudo en la wiki de ayuda de Ubuntu.

Eliah Kagan
fuente
'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 razón para expandir su riesgo 'Sin mencionar que lo pone en el hábito ... luego se va a otro sistema y ¿qué sucede? Lo mismo con la absurda idea de hacer que las personas se acostumbren a rm -itravés de alias de shell. Vas a un sistema que no tiene eso y luego ¿qué? Cuidar a un usuario de errores como este nunca es una buena idea cuando considera que los humanos son criaturas de hábito.
Pryftan
13

La cuenta raíz está deshabilitada de manera predeterminada, lo que significa que existe pero no es utilizable (excepto en modo de recuperación). Esto significa que un atacante conoce su cuenta de root, pero no podría usarla incluso si tuviera la contraseña de root. Por lo tanto, un atacante tiene que adivinar tanto un nombre de usuario que tiene privilegios de administrador, como la contraseña de ese usuario (que es mucho más difícil que simplemente tratar de encontrar la contraseña de root) .En XP si tiene instalada la Consola de recuperación, cualquiera que tiene acceso físico a su caja puede iniciar en él (RC) - no se requiere contraseña. Igual que el modo de recuperación en Ubuntu.

En Ubuntu, cuando dicen que la raíz está deshabilitada, lo que realmente significa es que la cuenta está bloqueada. Una cuenta se bloquea cambiando la contraseña a un valor que no coincida con ningún valor cifrado posible. Esto efectivamente impide que cualquiera pueda iniciar sesión como root, ya que no habría forma posible de ingresar la contraseña. Como todavía hay momentos en que es necesario el acceso a la raíz, el kernel de Ubuntu se ha modificado para permitir el inicio de sesión local de la raíz solo en modo de usuario único.

También vea esta página

karthick87
fuente
Um. Sin ofender, pero es posible que desee leer el título de la pregunta y luego leer los detalles nuevamente.
Mussnoon
3
Esto es extremadamente útil - y que no se refieren a la cuestión. Le preocupan las implicaciones de seguridad de habilitar la cuenta, un requisito previo para ejecutarse como root.
Stefano Palazzo
1
@Stefano Palazzo: Si bien la información proporcionada puede ser útil, sinceramente no puedo ver en qué parte se encuentra una respuesta a lo que necesitaba saber. Lo he leído varias veces.
Mussnoon
No impide que las personas puedan iniciar sesión en la raíz.
Chad
12

Es como armar a un niño pequeño con un AK47, mientras puede jugar felizmente con su pistola de paintball. ;)

Quiero decir que está mal porque tú y tus aplicaciones tendrán más privilegios de los que necesitan y ahí es cuando las cosas pueden y a veces saldrán mal :(

omeid
fuente
55
una analogía más inteligente. (^_^)
kit.yang
2
Esta es una analogía completamente inapropiada. Un niño con un AK47 puede suicidarse y matar a otras personas. Un usuario de Unix con acceso de root puede, como máximo, dejar su sistema temporalmente inoperable. (Siempre se puede volver a instalar el sistema operativo y recuperar la operación).
kbeta
@kbeta Tienes razón, mi analogía es un poco desproporcionada y exagerada. por favor sigue adelante.
omeid
@kbeta la analogía es apropiada. El riesgo no es un sistema inoperable, sino pérdida de datos y privacidad. El usuario root puede eliminar los datos. usa tu fantasía para asociar el asesinato y la pérdida de datos.
n611x007
11

Muy buena pregunta ... Permítanme responderla desde un punto de vista práctico:

Cuando comencé a usar Linux, que es hace más de 10 años, las principales distribuciones no anunciaban el uso de cuentas no root tanto como hoy. Como estaba acostumbrado a Windows, tampoco vi un punto en el uso de una cuenta de usuario restringida. En particular porque tenía que ingresar "su" muy a menudo, sudo no era tan popular en ese entonces. ;-) Así que siempre inicié sesión como root porque tenía mucho mantenimiento que hacer para configurar mi sistema bien. Pero adivina qué, cualquier sistema nuevo instalado se volvió rápidamente muy inestable.

Un problema concreto, por ejemplo: no he tenido tanto espacio en el disco duro reservado para Linux, así que me ocurrió varias veces que me quedaban 0 bytes en mi partición. Tal vez no soy completamente preciso porque no conozco el mecanismo exacto, pero cuando llena un disco con una cuenta no root, siempre quedan unos pocos kilobytes. Pero si realmente le quedan 0 bytes, su sistema comete errores extraños y podría terminar con un daño difícil de reparar en su sistema porque hay mucho software de sistema ejecutándose en segundo plano ...

Otra cosa es: esa división entre root y no root mantiene su sistema bien organizado. Como usuario root, puede tener la tentación de no instalar limpiamente sus nuevas aplicaciones, lo que le deja con un sistema sucio y difícil de mantener.

Pero lo bueno: las distribuciones modernas hacen la mayoría de las tareas de administración por usted, por lo que rara vez tiene que jugar con las entrañas de su sistema Linux con una cuenta raíz. Ingresar una contraseña de vez en cuando es suficiente, el resto lo hacen los scripts del distribuidor.

Pero dudo que no haya tenido problemas en su sistema Windows con eso si usó 95 o 98. (Al menos tuve problemas con eso ...) Debido a la falta de una separación clara entre el Administrador y el usuario regular "tradicional "Las aplicaciones de Windows suponen que pueden hacer cualquier cosa, por ejemplo, instalar Spyware si lo desean, incluso sin avisarle. Microsoft participó en ese problema cuando lanzó Vista. (Implementando efectivamente un mecanismo de sudo.) Entonces la gente tuvo diálogos muy molestos que decían "No puedes hacer eso". Para algunos softwares no compatibles con Vista, necesitabas algunos trucos sucios para instalarlo, incluso como Administrador ...

Philip
fuente
"Tal vez no soy completamente preciso porque no conozco el mecanismo exacto, pero cuando llena un disco con una cuenta no root siempre quedan unos pocos kilobytes". ¿Quizás te refieres al directorio perdido + encontrado? Si es así, usted puede, como administrador, especificar cuánto reservar. Quiero decir que el valor predeterminado típico es 5%, pero podría estar equivocado y se puede cambiar. Sin embargo, es bastante útil, incluso si rara vez se necesita. Aparentemente hay más información aquí (lo recuerdo de mis años de uso): unix.stackexchange.com/questions/18154/…
Pryftan
Al parecer, no se limita a los sistemas de archivos ext: unix.stackexchange.com/questions/7950/…
Philip
Sí. Lo sabía :) Pero gracias por agregar eso también.
Pryftan
10

Hay muchos aspectos detrás de este enfoque. Algunos de ellos son:

  • La raíz es todopoderosa.
  • En sistemas Unix y similares a Unix, los privilegios de administración del sistema son todo o nada. Un usuario tiene acceso raíz o no, y el acceso raíz implica el control completo de una máquina. Si la máquina en cuestión es utilizada por más de una persona, o la raíz tiene acceso a otros sistemas o archivos de usuario, es más aceptable otorgar a algunos usuarios privilegios de raíz parciales.

  • El usuario root puede ocultar todas sus acciones.
  • sudo registra cada comando ejecutado a través de sudo. Tener un registro de lo que se está haciendo con sudo nos ayuda a diagnosticar problemas con sistemas / procesos individuales y problemas generales de configuración, además de ayudarnos a identificar las mejoras necesarias.

  • La contraseña de root le da acceso a cualquier comando en un sistema.
  • A través de su archivo de configuración, sudo puede proporcionar a un usuario acceso root para un conjunto particular de comandos. Esto también evita el efecto de "todo o nada", lo que nos permite dar a los usuarios individuales más control sobre sus máquinas y ayudarlos a salir de problemas comunes.

    Aquí hay un buen artículo: http://cf.stanford.edu/policy/root

    aneeshep
    fuente
    Pero cuando tienes sudo completo, puedes sudo y ocultar tus acciones.
    Wilhelm Erasmus
    8
    rm /*
    

    Digamos que ha estado limpiando un área administrativa. Te cansas de la contraseña, así que tú sudo su. Te distraes solo por un segundo y olvidas que puedes hacerlo /. Entonces tu rm *. Lo he hecho. Puede recuperarlo todo, pero es un PITA. ¡Ah, y ha descendido /mediatambién!

    bambuntu
    fuente
    10
    Siempre nos quejamos de que nuestra PC sea demasiado lenta, pero es como si estuvieran optimizados para ejecutar un rm como ese lo más rápido posible.
    jippie
    1
    @jippie Porque RM simplemente destruye el enlace inode al archivo. No lleva mucho tiempo eliminar un enlace y marcar un espacio como "libre".
    Kaz Wolfe
    @jippie, debería tener una construcción en 10 segundos de cuenta regresiva
    HopefullyHelpful
    7

    ¿Por qué no tener inicio de sesión root?

    Si bien puede crear una contraseña para la cuenta de superusuario que le permite iniciar sesión como root, vale la pena mencionar que esta no es la forma "Ubuntu" de hacer las cosas. Ubuntu ha elegido específicamente no dar un inicio de sesión raíz y una contraseña por defecto por una razón. En su lugar, se usará una instalación predeterminada de Ubuntu sudo.

    Sudo es una alternativa a dar a las personas una contraseña de root para realizar tareas de superusuario. En una instalación predeterminada de Ubuntu, la persona que instaló el sistema operativo tiene permiso "sudo" de forma predeterminada.

    Cualquier persona con permiso de "sudo" puede realizar algo "como superusuario" pre-pendiente sudode su comando. Por ejemplo, para ejecutar apt-get dist-upgradecomo superusuario, puede usar:

    sudo apt-get dist-upgrade
    

    Beneficios del enfoque sudo

    • Con sudo, usted elige de antemano qué usuarios tienen acceso a sudo. No es necesario que recuerden una contraseña de root, ya que usan su propia contraseña.

    • Si tiene varios usuarios, puede revocar el acceso de superusuario de uno simplemente quitando su permiso de sudo, sin necesidad de cambiar la contraseña de root y notificar a todos de una nueva contraseña.

    • Incluso puede elegir qué comandos puede ejecutar un usuario usando sudo y qué comandos están prohibidos para ese usuario.

    • Y, por último, si hay una violación de seguridad, en algunos casos puede dejar una mejor pista de auditoría que muestra qué cuenta de usuario se vio comprometida.

    Sudo facilita la ejecución de un solo comando con privilegios de superusuario. Con un inicio de sesión raíz, permaneces permanentemente en un shell de superusuario que debe salir usando exito logout. Esto puede hacer que las personas permanezcan en el shell de superusuario por más tiempo del necesario solo porque es más conveniente que cerrar sesión y volver a iniciarla más tarde.

    Con sudo, todavía tiene la opción de abrir un shell de superusuario permanente (interactivo) con el comando:

    sudo su
    

    ... y esto todavía se puede hacer sin ninguna contraseña de root, porque sudootorga privilegios de superusuario al sucomando.

    Y de manera similar, en lugar de su -un shell de inicio de sesión, puede usar sudo su -o incluso sudo -i.

    Sin embargo, al hacerlo, solo debe tener en cuenta que está actuando como superusuario para cada comando. Es un buen principio de seguridad no permanecer como superusuario por más tiempo del necesario, solo para disminuir la posibilidad de causar algún daño accidental al sistema (sin él, solo puede dañar los archivos que posee su usuario).

    Solo para aclarar, puede , si lo desea, dar al usuario root una contraseña que le permita iniciar sesión como root, si específicamente desea hacer las cosas de esta manera. Solo quería informarle sobre la convención de Ubuntu de preferir en su sudolugar y tratar de explicar algunos de los motivos por los que Ubuntu favorece ese enfoque por defecto.

    ¿Por qué no permitir el inicio de sesión raíz a través de SSH?

    Incluso si su usuario root no tiene una contraseña que le permite entrar como root, todavía es una buena práctica de seguridad para desactivar la conexión de la raíz directo desde el exterior, como en SSH. Es razonable que los usuarios tengan que su -o sudodespués del inicio de sesión inicial.

    Los beneficios potenciales de esto están relacionados principalmente con la seguridad:

    • Reduce el vector de ataque al eliminar la posibilidad de forzar de forma remota la contraseña de root. Es típico que un servidor en Internet sea constantemente bombardeado por intentos de fuerza bruta de la contraseña raíz a través de SSH.

    • Se crea un mejor seguimiento de auditoría de modo que incluso en el caso de incumplimiento en el que el atacante hace obtener privilegios de superusuario más adelante, se puede ver cuya cuenta de usuario se utiliza para obtener acceso.

    thomasrutter
    fuente
    6

    Cuando se inicia sesión como root, hace posible que aplicaciones, scripts o comandos de línea de comandos accedan a partes sensibles del software que pueden dañar el sistema. Esto puede ser el resultado de la inexperiencia por parte del usuario o del programador o debido a un código oculto malicioso.

    Gersitar
    fuente
    5

    Es demasiado fácil desordenar cuando se opera como root. Puede golpear todo el sistema en un solo comando ...

    Stefano Palazzo
    fuente
    5

    Puedo agregar que hay una diferencia entre Administrador en Windows y root en Unix. El administrador todavía tiene algunas restricciones en los sistemas, donde la raíz no tiene ninguna restricción. El análogo correcto de root en Windows es el usuario del sistema .

    Lo malo de usar PC bajo root / System es que puedes destruir cualquier cosa accidentalmente sin ninguna advertencia del sistema operativo.

    Aleksei
    fuente
    3

    Razones contra el uso de root:

    • Podría destruir accidentalmente archivos del sistema
    • Podría contraer una infección
    • No registra acciones

    Razones para usar root:

    • Acceso a todo, sin escribir contraseñas
    • GUI, sin usar terminales para administrar archivos / directorios del sistema

    Me parece que una cuenta no root aún podría ser víctima de esas razones contra el uso de root, lo máximo que agrega es una confirmación de sus acciones. Creo que siempre y cuando sepas lo que estás haciendo, estás perfectamente seguro usando root. Ahí lo dije.

    What
    fuente
    Aunque técnicamente hay una manera de registrar acciones que incluyen cada comando. Esto va para todos los usuarios. Consulte la contabilidad de procesos, por ejemplo, aquí: linuxjournal.com/article/6144 Y solo es seguro de verdad si necesita ser root; de lo contrario, no es del todo seguro (explotación, etc.) incluso si el comando debería ser seguro.
    Pryftan
    3

    Si las aplicaciones se ejecutan como root, no hay garantía de que ninguna de ellas se ejecute

    rm -rf /
    

    (Este es un ejemplo de un comando que no debe ejecutarse).

    segfault
    fuente
    @StefanoPalazzo Esta publicación no tiene sentido con el comando eliminado, por lo que he revertido su edición; también podría haber eliminado la publicación. Tenga en cuenta que, a diferencia de la idea errónea generalizada, este comando, tal como está escrito, en realidad no elimina archivos cuando se ejecuta en un sistema Ubuntu, pero es similar a los comandos que lo hacen. Entonces, si le preocupaba que alguien pudiera copiar el comando sin pensar y destruir su sistema, eso no es probable. Consulte la documentación de las opciones --preserve-rooty para obtener más detalles. --no-preserve-rootman rm
    Eliah Kagan
    Solaris trata este comando como un comportamiento indefinido de acuerdo con una amplia interpretación POSIX (y Bryan Cantrill) y arroja un error
    Jeremy Hajek
    3

    Dado un usuario bien informado y cuidadoso, no estoy seguro de que exista una respuesta correcta . No había visto esta respuesta, así que pensé en intervenir.

    Lo que no me gusta son los cambios involuntarios de permisos en sistemas multiusuario que necesito chmodmás adelante. La reparación a través de chmod después del hecho es mucho más irritante que la necesidad de sudo, pero depende de lo que haya planeado.

    Clayton
    fuente
    3

    No hay peligro en iniciar sesión como root si se usa con cuidado.

    Aunque creo que deshabilitar la raíz es la solución preferible, porque el atacante no pudo forzarlo por fuerza bruta.

    Una solución es crear un usuario en el grupo sudo con un nombre oscuro, gamerusar y usar sudo para realizar tareas administrativas.

    Por lo tanto, el atacante no solo debe adivinar la contraseña de ese usuario administrativo sino también su nombre de usuario. Lo que no es obvio si el usuario usando sudo ha iniciar sesión nombre como kittyo gamero algo similar.

    Bulat M.
    fuente
    2

    El software se basa en las bibliotecas compartidas, dependencias, archivos de configuración, etc.
    La mayoría de las veces, un simple clic en una aplicación invoca una "reacción en cadena" de múltiples cambios, no sólo en la que creo que sería probable.
    Cuando estos cambios están a punto de afectar la configuración crítica del sistema, es bueno que usted, como usuario, lo sepa.
    Es por eso que el acceso raíz es un buen modelo de seguridad:
    si algo crucial está por sucederle a su sistema, se le notificará cuando se le solicite la elevación de privilegios.

    Pavlos G.
    fuente
    1

    Es un problema de dos caras con más de una respuesta.

    Para conocer la realidad, compruebe las respuestas siempre iguales pero terribles a esto:

    desktop installations:

    • use su propio usuario y sudo si es necesario, de lo contrario, un vector de ataque usado con éxito porque realmente no sabe lo que está haciendo y su sistema está comprometido
    • En las empresas más grandes, es probable que ni siquiera tenga privilegios de root en su propia estación de trabajo, incluso si es un administrador, dependiendo de la cantidad de sombreros de papel de aluminio presentes.

    server installations:

    • existe una gran diferencia entre hacer que sus cortas sesiones de trabajo sean legítimas como root (siempre que tenga inicios de sesión sin contraseña, administración adecuada de claves ssh para todos los servidores, y fail2ban configurado para todos los inicios de sesión de contraseña mientras está en ello) y tener todos los demonios / servicios corriendo con su propio usuario (que es obligatorio): la mayoría de las personas parecen no darse cuenta de la diferencia
    • por diversión: intente usar sus herramientas de administración de configuración controladas por versión (ansible / puppet / salt / lo que sea con archivos de un servidor git) solo sin acceso a la raíz. (tiene algún tipo de AAA para estos sistemas especiales, así como para sus sistemas de monitoreo y respaldo, ¿no es así?)
    • también: por defecto rm -rf /no funciona en la mayoría de las distribuciones principales IIRC
    • cualquier lugar de trabajo serio tiene un host jumphost / bastion para acceder a la flota de servidores que registra todo lo que haces de todos modos, lo que probablemente esté protegido por 2FA
    • si tienes sudo y no jumphost, puedes arreglar los registros de los hosts para que terminen como quieras, de todos modos, si no se reflejan en tiempo real, eso es.
    • cuando también se 'limpian' los registros ssh, ni siquiera se puede demostrar que haya estado en el host, si no hay más sistemas de monitoreo de red en funcionamiento

    Para cualquier tamaño de empresa (léase: muy probablemente SOHO con una IP estática) entre estos dos extremos que carece de medidas de monitoreo / respaldo / automatización / registro decentes, puede ser útil imponer el uso de sudo en los servidores. (Lo cual es evitado por las personas que hacen lo sudo su -antes posible después de conectarse, lo que permite que todas sus intenciones de registrar lo que sucedió se desperdicien incluso sin intenciones maliciosas tan pronto como más de un usuario root haya iniciado sesión. Buena suerte cambiando esto a través de procedimientos forzados y tratando a las personas con draconiano medidas para no obedecer las reglas. La vida siempre encuentra un camino.)

    Pero si no tiene al menos fail2ban para proteger sus inicios de sesión de contraseña (si hay alguno presente, especialmente en los sistemas con conexión a Internet), además tenga en cuenta el manejo adecuado de la contraseña (herramientas de administración de contraseñas, políticas de retención, sin contraseñas maestras, manejo de estas sobre el empleado fluctuaciones ...) y tener alguna forma de administración de actualizaciones adecuada para la flota de servidores en su lugar, por lo que todos los servidores se revisan regularmente, es probable que sea pirateado algún día de todos modos, ya sea desde adentro o desde afuera.

    Y siempre haber usado sudoreligiosamente y haber hecho cumplir su uso entre todas las personas no cambiará su probabilidad de obtener mucho en ese caso.

    sjas
    fuente
    Finalmente, una respuesta real y diferenciada, en lugar de los habituales mantras "nunca hagas esto". +1 y gracias por esto.
    Andreas H.
    0

    En definitiva, no hay daño en ejecutarse como root. Es solo un grupo de personas paranoicas que piensan que reinstalar un sistema operativo es imposible. El argumento "Alguien podría comprometer un programa ...", ¿y qué? si lo hacen, entonces ya podrían registrar su contraseña, o simplemente mostrar una solicitud de contraseña raíz de todos modos y hacer que les dé la contraseña. ¿Sopla tu sistema porque seleccionas todo en / y eliminas? bueno, sal del instalador y vuelve a instalarlo. Tarda menos de 20 minutos, tome un café y relájese. Root está bien, he estado ejecutando root desde que tengo memoria y ¿sabes lo que hace? Hace que la instalación de paquetes sea menos dolor de cabeza. No tiene que ingresar la contraseña de root cada 5 minutos como lo hace normalmente. No tiene problemas al intentar guardar / editar archivos de configuración del sistema porque ' re permisos de root solamente. Es mucho más fácil y mejor ejecutarlo como root.

    Taponado
    fuente