Así que he estado leyendo las diferencias entre el uso de su
y sudo
, y todos parecen estar de acuerdo en que el sudo
enfoque es más seguro que permitir el acceso a la cuenta raíz. Dicen que con la cuenta raíz puede romper todo el sistema con solo un comando. Esto lo entiendo. PERO el usuario inicial creado en el sistema también tiene acceso a todos los comandos usando sudo. Esto lo puedo descubrir corriendo su -l
. Si este es el caso, entonces simplemente puedo correr sudo <game-ending command>
para arruinar mi sistema. Entonces, ¿cómo es este enfoque mejor o más seguro que permitirme el acceso directo a la cuenta de superusuario? Puedo ejecutar los mismos comandos ...
¿Es porque al usar sudo
la línea de comando le digo explícitamente a la computadora que creo que sé lo que estoy haciendo? ¿Creen que las personas olvidarán que están bajo la cuenta de superusuario a menos que lo digan explícitamente?
Las personas también afirman que si el sistema fuera comprometido e ingresado por alguien extranjero, estar bajo la cuenta raíz les permitiría hacer cosas terribles en mi sistema. Pero me parece que si ya tienen acceso a mi cuenta y conocen mi contraseña, pueden hacer estas mismas cosas terribles usando sudo e ingresando mi contraseña, ya que ni siquiera necesitan saber la contraseña del superusuario. ¿Qué no voy a llegar aquí?
fuente
Respuestas:
Personalmente, no necesariamente lo considero más seguro y la mayoría de los beneficios (de sudo) están en un sistema multiusuario. En un sistema de usuario único, probablemente sea un lavado.
Los beneficios son (sin ningún orden en particular):
sudo -i
es probablemente el mejor método para aislar las variables ambientales de la raíz de su usuario. Esto surge de vez en cuando pero es moderadamente esotérico. Ver https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shellsProbablemente hay más beneficios, pero, esos son los principales, en mi humilde opinión.
Ver también: https://help.ubuntu.com/community/RootSudo
Para tratar de responder algunos de tus otros pensamientos:
Entonces, si bien ha observado problemas o fallas con sudo, su tiene exactamente las mismas vulnerabilidades y su no es superior a sudo en esos aspectos, en mi humilde opinión
fuente
Imagina que tienes 20 minutos para hacer algo complejo. Tienes un poco de resaca y tienes que apurarte. "Vamos a usar su", dices. "Ahorrará algo de tiempo" es su razonamiento.
Por accidente escribes
en lugar de
Su sistema ahora se está bloqueando y tiene 10 minutos hasta su fecha límite.
Si elige explícitamente cuándo necesita root, puede minimizar la posibilidad de que esto suceda. Es posible que no se necesite la raíz,
rm -r ./*
¿por qué usarla? ¿Por qué correr el riesgo?Eso es lo que significa "seguridad" aquí. Minimizar el riesgo de que los usuarios (todos los usuarios, no solo los principiantes) cometan un error fatal.
Por supuesto, este es un ejemplo extremo que no debe permitirse que ocurra en un entorno de producción (garantizo que ha sucedido en un entorno de producción).
En cuanto a la seguridad, hay algunas cosas para las que también es mejor sudo. Como dice @Panther : registro, restricciones, la contraseña de root es SPOF, etc.)
fuente
chown -R nobody:nobody /
o inclusochown -R nobody ../
como root.chmod
Por supuesto, también tiene problemas similares en modo recursivo. Pero el mejor punto que haces es que solo debes ser root cuando lo necesites; cuanto menos privilegio tenga su inicio de sesión, mejor será para el uso normal.sudo
? Escribes ensudo rm -rf /*
lugar desudo rm -rf ./*
y boom otra vez.sudo rm -rf ./*
. Es probable que tenga acceso de escritura a las cosas en el directorio actual, por lo que no necesita sudo para ese comando. Por lo que los extremos de comando typoed siendorm -rf /*
, lo que da una larga cadena de "Permiso denegado" mensajes, que le permite saber lo que necesitactrl-c
antes de que llegue a las cosas que en realidad se puede eliminar, en lugar de borrar todo en/bin
,/boot
,/dev
, y la mitad de/etc
antes incluso te das cuenta de que algo anda mal.Quiero agregar un poco de perspectiva histórica a las otras respuestas. Desafortunadamente, no tengo ninguna fuente lista excepto mis propios recuerdos de las discusiones de Usenet y artículos de revistas.
Hace algún tiempo, en la década de 1990, las distribuciones facilitaban la instalación de Linux en su propio hardware, incluso con poco conocimiento de la computadora. Por lo tanto, Linux comenzó a atraer a más y más personas que sorprendentemente no habían sido perforadas previamente como administradores de sistemas en algún dialecto UN * X. En cambio, muchos se usaron para sistemas (de un solo usuario) como Windows 95/98. Y aprendieron que la mayoría de las tareas de administración del sistema Linux hacían necesario trabajar bajo esa extraña cuenta "raíz".
Por lo tanto, algunos usuarios simplemente iniciaron sesión como root y usaron esa cuenta para todo su trabajo diario. ¿Por qué deberían tener que escribir
su
y la contraseña de root una y otra vez o iniciar sesión en un nuevo tty solo para algunos comandos de administración? Pero usar root para todo, por supuesto, no es una buena idea, ya que podría hacer mucho más daño a su sistema con un comando poco consciente en el lugar equivocado. Esto incluso llevó a alguna distribución (¿era SuSE?) A modificar el fondo del escritorio para que el usuario root mostrara una gran advertencia de que debería usar esa cuenta solo para tareas administrativas.Entonces, la forma de Ubuntu
sudo
tiene algunas ventajas (además de las que ya figuran en Panther ).sudo
almacena en caché sus credenciales, por lo que para varios comandos de administración en secuencia, solo tiene que ingresar su contraseña una vez (en contraste consu
). Esto reduce la necesidad de abrir un shell o una nueva terminal con privilegios de root .¹ Y para aquellos que no se atreven a hacerlo ellos mismos, hubo fiestas de instalación.
² Pero puede usar un comando como
sudo -i
osudo su - root
para obtener un shell raíz después de iniciar sesión como usuario normal.³ Pero usted sabe, por supuesto, que no debe simplemente copiar y pegar comandos de Internet , ¿verdad?
fuente
sudo su -
osudo su - root
? Porque he visto afirmaciones similares, por ejemplo, que MacOS X no tiene root, pero eso es completamente incorrecto cuando uno solo necesita hacer el primer comando ...root
y una contraseña en el indicador de inicio de sesión o en el cuadro de diálogo de inicio de sesión X e iniciar su sesión como root. Pero puede usar uno de sus comandos (prefierosudo -i
porque es más corto y soy flojo) para obtener un shell raíz.Ha sido posible deshabilitar el inicio de sesión raíz a través de ssh durante décadas. La forma de Ubuntu de deshabilitar la cuenta raíz y hacer que la gente sudo todo no es más que un truco. Simplemente "sudo -s" y tienes un shell raíz. Deshabilite el inicio de sesión raíz a través de ssh y déjelo allí.
fuente
Dependiendo de la configuración,
sudo <game ending command>
no necesariamente funcionará. Por supuesto, si lasudoers
configuración dice "usuario ALL = (ALL) ALL",sudo
no ofrecerá protección adicional. Sin embargo, puede especificar una lista de comandos privilegiados que necesita ejecutar a menudo, como instalar nuevos paquetes, y omitir comandos peligrosos comorm
.De esta manera, puede ejecutar todos los comandos si inicia sesión como
root
, pero dado que solo necesitará esto ocasionalmente, el riesgo de ejecución<game ending command>
se reducirá sustancialmente.fuente
Que sudo le permite permitir solo ciertos comandos no es el único beneficio de sudo sobre su.
En la mayoría de las tiendas, ni siquiera es el beneficio más importante.
Con sudo, sabes quién realizó un comando en particular.
Ahora tal vez esto no te importe. Por ejemplo, puede ser el único usuario de su computadora. Si es así, entonces sudo posiblemente no sea mejor que su.
Pero muchos hosts tienen más de un administrador.
entonces sudo se vuelve muy útil porque si alguien hace algo incorrecto, sudo le permite saber quién lo hizo.
Eso le permite comprender por qué ocurrieron los errores y educar a las personas para evitar que se repitan los errores o, si es necesario, para eliminar las herramientas de alguien.
Como beneficio adicional, cuando las personas saben que sus acciones están grabadas, a menudo son un poco más cuidadosas.
El sudo no es perfecto.
Si dos personas hacen "sudo sh" al mismo tiempo, puede ser difícil atribuir comandos a uno u otro.
Y un administrador malintencionado siempre puede eliminar o editar registros, aunque hacerlo limpiamente no siempre es tan fácil como la gente piensa, especialmente si tiene un registro centralizado.
sudo no necesariamente detiene una acción estúpida o maliciosa, por todas las razones identificadas en la pregunta original.
Pero le da una oportunidad mucho mejor de prevenir una recurrencia.
fuente
sudo
permite todo. Claro, puede configurarlo para limitar los comandos que un usuario puede ejecutar, pero no creo que ese sea el caso en la pregunta como se le preguntó.