Si entiendo la filosofía de Linux correctamente, sudo
debería usarse con moderación, y la mayoría de las operaciones deberían realizarse como un usuario desfavorecido. Pero eso no parece tener sentido, ya que siempre tengo que ingresar sudo
, ya sea que administre paquetes, edite archivos de configuración, instale un programa desde la fuente o lo que tenga. Estas ni siquiera son cosas técnicas, sino cualquier cosa que haga un usuario normal.
Me recuerda mucho al UAC de Windows, que las personas desactivan o configuran para no requerir una contraseña (solo un clic). Además, los usuarios de Windows de muchas personas también son cuentas de administrador.
Además, he visto a algunas personas mostrar comandos que requieren sudo
privilegios sin ellos sudo
. ¿Tienen su sistema configurado de tal manera que sudo
no sea necesario?
sudo
hacer cualquier cosa que implique cambiar el sistema, si solo está operando en sus propios archivos / escritorio, no está afectando a nadie más, por lo que no necesita privilegios elevados. Si está ejecutando comandos privilegiados sin sudo, probablemente ya sea un súper usuario (es decir, root) y eso generalmente es menos aconsejable que usar sudo para las tareas específicas de todo el sistemasudo
cuando no deberías? Comandos de un usuario normal Unix deben consistir en su mayor parte decd
,ls
, mover archivos, copiar, eliminar y edición tienen acceso a. Si sus comandos habituales no consisten en esto, probablemente no sea un usuario habitual de Unix.sudo !!
para volver a ejecutar el último comando que escribiste con sudo al frente.Respuestas:
Usted mencionó estas funciones de administración del sistema.
como cosas que
En un sistema multiusuario típico, estas no son acciones comunes del usuario; un administrador de sistemas se preocuparía por esto. Los usuarios comunes (no "bajo privilegios") pueden usar el sistema sin preocuparse por su mantenimiento.
En un sistema doméstico, sí, terminas teniendo que administrar el sistema además de usarlo.
¿Es realmente tan difícil de usar
sudo
? Recuerde que si es solo su sistema, no hay ninguna razón por la que no pueda ingresar a unroot
shell (sudo -s
consulte esta publicación para obtener una descripción general de los diversos medios para obtener un shell raíz) y / o configurarsudo
para no solicitar una contraseña.fuente
sudo
, es como un control de cordura.Sudo / Root se usa cuando está haciendo algo que un usuario estándar no debería tener la capacidad de hacer por el riesgo de dañar / cambiar la configuración del sistema de una manera que el Administrador del sistema normalmente no permitiría.
Todas estas son funciones de administración técnica y pueden dañar drásticamente su sistema si se hace algo incorrecto. En un entorno corporativo, como Sysadmin, son cosas que NO dejaría que mi usuario haga sin mi conocimiento expreso, de ahí sudo.
Por ejemplo, si un archivo de paquete / configuración pudiera modificarse sin privilegios elevados, entonces sería extremadamente simple para una fuente externa simplemente ejecutar código remoto que podría romper / comprometer su sistema. Al obligar a esas acciones a requerir acceso de root, te obliga a ti como usuario a tomar la decisión de si esas acciones tienen lugar o no.
Es muy similar a
UAC
con Windows, en realidad es de donde surgió la ideaUAC
.La cotización que recibe la primera vez que usa sudo es muy adecuada y muy importante:
Especialmente # 2, piensa antes de escribir. Esa es una razón importante por la que sudo existe, cuando escribes un comando y retrocede "debe ser raíz para realizar esta acción", te obliga a detenerte y PENSAR en lo que estás haciendo realmente.
fuente
Tienes que ejecutar esos comandos como superusuario, pero no tienes que ejecutarlos usando
sudo
. Por ejemplo, podría usarsu
odoas
(reemplazo de OpenBSD parasudo
), o simplemente podría iniciar sesión como root.Entonces, si muestran sus comandos aquí sin
sudo
, suponen que el lector solo usará su forma favorita de ejecutar esos comandos como superusuario.Ciertamente no significa que puedan ejecutar esos comandos como un usuario normal.
fuente
sudo -i
o similar para obtener un shell de root y luego comenzar a ejecutar sus comandos de root sin necesidad de prefacio cada uno de ellos consudo
# vi /etc/hosts
en lugar de un indicador sin privilegios$ vi /etc/hosts
(Bash seguirá la convención si se utiliza\$
enPS1
)Una característica de seguridad que ofrece
sudo
es que puede tener un sistema sinroot
contraseña , por lo que elroot
usuario no puede iniciar sesión directamente. Esto ofrece protección adicional para los usuarios que eligen contraseñas débiles: el atacante que intenta forzar la contraseña por fuerza bruta (a través de SSH o de otro modo) primero tendrá que encontrar un nombre de usuario válido.Otro aspecto es una gestión de privilegios más precisa. Piensa en
make; sudo make install
vs hacermake; make install
como root. Muchas cosas pueden salir mal durantemake
. Una herramienta mal configurada puede intentar sobrescribir un archivo importante del sistema, "limpiar" el/lib
directorio actual en lugar del actual, consumir toda la RAM disponible y bloquear el sistema, etc.make install
es una acción simple y pequeña con mucha menos probabilidad de un error fatal.fuente
El punto es que históricamente un sistema realmente está destinado a ser compartido por múltiples usuarios que simplemente inician sesión, hacen algunas cosas y luego cierran la sesión. De ahí la distinción entre administrador y usuario normal. Tales sistemas todavía existen en los laboratorios universitarios y puede sentir la diferencia bruscamente si usa tales computadoras. La PC casera donde usted es el único usuario y también tiene que actuar ya que el administrador es realmente un desarrollo posterior.
fuente
Una computadora es una herramienta. Probemos una analogía con otra herramienta, digamos una sartén. A veces, debes cuidar tu sartén. Por ejemplo, debes limpiarlo con jabón para lavar platos. ¿Diría que el jabón para platos es un ingrediente obligatorio de cualquier receta para la que use la sartén? Nunca verá "jabón para lavar platos" como ingrediente en los libros de cocina. Es necesario, pero la preparación de la herramienta es otra cuestión, por lo que los libros de cocina no lo mencionan. La sartén debe limpiarse, pero no es para lo que está hecha.
Es lo mismo para tu computadora. Tiene que ser configurado y cuidado, pero no es para lo que está hecho. Lo cuidas, lo configuras, para que pueda funcionar correctamente. Una vez hecho esto, puede usarlo, no como administrador del sistema, sino como usuario. Para eso está hecho. Cuando eres usuario, ya no necesitas sudo . Simplemente use la herramienta que preparó de antemano. Por supuesto, de vez en cuando, necesitarás usar privilegios de root, así como debes limpiar tu sartén con la frecuencia que la usas para cocinar.
Entonces, sin exagerar demasiado, podríamos decir que nunca necesita sudo (o la contraseña de root) para usar su computadora. Solo para preparar tu computadora.
fuente
sudo
o simplemente ir al maestro de cocina y hacer unasu
.Apuesto a que es porque usas el software GUI para todo excepto las tareas administrativas del sistema, o estás hablando de servidores Linux, en cuyo caso la mayoría del acceso será naturalmente la administración del sistema. Por lo tanto, puede parecer que hacer cualquier cosa en el shell requiere
sudo
.También es posible usar el shell para sus tareas diarias. Administrar sus archivos personales
~
, editar archivos, chatear en IRC, compilar código, navegar por la web, todo eso se puede hacer en un shell. Incluso lo usobc
como mi calculadora de referencia. Algunas cosas son más fáciles de hacer a través de una GUI, algunas cosas son más fáciles de hacer a través del shell, incluso si prefiere usar la GUI, el shell a menudo sobresaldrá en operaciones por lotes y automatización (piense en los scripts de shell). Personalmente uso lo que sea mejor para la tarea en cuestión.En algunos casos, es una buena idea configurar su sistema para que no tenga que usarlo
sudo
todo el tiempo para operaciones que por defecto requieren root pero que es poco probable que causen problemas. Un ejemplo es que trabajo con hardware que implica el uso de puertos seriales, y he configurado reglas udev para dar acceso a los dispositivos como mi usuario habitual sin tener que ser root.No creo que sea una buena idea configurar
sudo
para no requerir una contraseña. Hace que sea demasiado fácil estropear todo el sistema con un comando mal escrito o un script malicioso.Si necesita realizar tareas que requieran root todo el tiempo, ¿por qué no dejar un
sudo -s
shell raíz persistente ejecutándose en una ventana de terminal? Luego estará disponible sin tener que escribir la contraseña, y no es tan fácil de usar accidentalmente. Incluso he configurado mi indicador de shell para que sea de color rojo brillante cuando está en un shell de raíz.fuente
El adjetivo implícita relacionada con todo esto es que son de todo el sistema o globales cambios. Debe considerar los orígenes de Unix como un sistema multiusuario 1 donde varios usuarios usarían la misma instalación de forma remota. No tendría sentido que un usuario laico permitiera cambiar la configuración global para todos los usuarios. Eran los administradores del sistema, la raíz, el privilegio y la responsabilidad.
En una configuración multiusuario, tiene el software preinstalado y su configuración de todo el sistema en
/usr
y/etc
respectivamente. Tocar estas ubicaciones requeriría permisos de root. Pero debido a que el software Unix está escrito pensando en los usuarios múltiples, puede compilar e instalar el software en el$HOME
directorio 2 y tener sus propios archivos de configuración en su hogar, donde puede editar los archivos libremente sin ser un súper usuario.Además de instalar su propio software en casa, la mayoría del software de todo el sistema leerá la configuración específica del usuario
$HOME
inmediatamente después de leer la configuración por primera vez/etc
. Esto le permite personalizar casi cualquier cosa sin tener que irroot
.Con una PC hogareña, en una única configuración de usuario principal, puede usar
sudo
y enrutar su camino hacia las cosas que le gustan. Pero es costumbre no tocar la configuración de la aplicación/etc
sino proporcionar siempre la configuración específica del usuario en el hogar. De esa manera, puede permitir que su administrador de paquetes restablezca las configuraciones de todo el sistema en las actualizaciones. Instalar un nuevo software en todo el sistema está bastante bien en la configuración de usuario único; los paquetes de distribución no asumen las alternativas, por lo que es una salida fácil.Dejaré que mi administrador de paquetes instale cosas globalmente, pero cualquier cosa compilada de fuentes y hecha por mí mismo la dejo
$HOME
. Y no tengo que sudo por nada de eso.Si tiene archivos de datos, almacenamiento fuera de su
$HOME
, no dude enchown
ochgrp
los directorios a su nombre para que pueda acceder a los archivos sin ellossudo
.[1] (un poco irónico ya que Unix estaba destinado a ser una versión de 'usuario único' del sistema operativo Multics)
[2] (si el sistema lo permite al no montar particiones domésticas como noexec)
fuente
En los tipos de sistemas multiusuario para los que se diseñó UNIX (y, por descendencia, Linux), estas no son acciones comunes del usuario . Un administrador del sistema puede realizarlos, pero no los usuarios típicos, por lo que el sistema solicita asegurarse de que el administrador del sistema realmente quiera hacer esto.
Pero incluso en los sistemas domésticos de un solo usuario, estas no son acciones comunes del usuario . Por lo general, es necesario hacer esto cuando se configura inicialmente el sistema, pero una vez que haya terminado, un usuario típico no debería tener que hacerlo con mucha frecuencia . La mayoría de los usuarios típicos solo trabajan en archivos dentro de su directorio de inicio (o subdirectorios del mismo), utilizando programas / paquetes que ya se han instalado, y no es necesario
sudo
para eso. O podrían funcionar en un directorio especial en algún otro lugar del sistema que se haya reservado para ese propósito, y usted necesitasudo
configurarlo, pero generalmente solo necesita hacerlo una vez.¿Por que importa? Porque "usuario único" es un nombre inapropiado: usted no es el único usuario de su máquina, aunque podría ser su único usuario humano . Incluso en una instalación doméstica típica de Linux, muchos programas están configurados para usar la máquina de varias formas propias, a menudo simulando algo que un humano podría hacer si tuviera el tiempo y la atención de sobra: copias de seguridad, actualizaciones, escaneo de malware y me gusta. La mayoría de las veces, esos usos son completamente benignos, pero incluso para algunos de ellos, todavía es prudente asegurarse de que el usuario realmente quiera hacer esto. Y cuando surgen esos casos, para eso
sudo
está. La computadora solo se está registrando para asegurarse de que realmente eres tú quien quiere hacer lo que alguien (tal vez tú, tal vez un programa) dijo que hiciste. Y eso ni siquiera entra en la posibilidad de malware, que ciertamente no quieres enmascarar como tú.fuente
Esto probablemente no sea tan común como se representa, pero generalmente ocurre cuando algo casual requiere internamente una llamada de sistema privilegiada mucho más genérica para lograr su resultado, por ejemplo:
umount
es un comando serio, ya que puedes desmontar muchas cosas con él.ifup
, etc.) es solo para superusuario.Los sistemas generalmente evolucionan para reducir el número de tales casos. Las memorias USB ahora se pueden montar por el usuario y las redes se pueden conectar por el usuario. Pero no siempre fue así.
fuente
Supuesto: este es su sistema y sus datos.
Solo necesita sopesar el riesgo de borrar accidentalmente datos o bloquear su sistema operativo frente a la facilidad de hacer cosas sin escribir todo el tiempo
sudo
.Me conecto rutinariamente y trabajo como root en los servidores de mi casa porque
yo puedoes más fácil.Te dirán que puedes lanzar armas nucleares si no pasas por el sacro-santo,
sudo
pero la realidad es que hoy la gente tieneroot
poderes (*) en muchos dispositivos (tu TV, tu teléfono, tu tostadora, tu Windows (como Mencionaste)). Linux no es diferente aquí, aunque a muchos les gusta pensar lo contrario.Por cierto
UAC
, no se modeló,sudo
ya que su función de hombre es (además de hacer que su vida sea miserable) para garantizar que verá cuándo el malware quiere hacer cosas en su nombre.(*) los
root
poderes se definen como la capacidad de destruir datos importantes. Se aplica el adagio "con gran poder vienen grandes problemas" (o lo que sea que haya sido).Si mi suposición es incorrecta, entonces aún necesita sopesar el riesgo anterior, pero hay más variables (su trabajo, fotos tomadas por su cónyuge y almacenadas en la misma computadora portátil, ...)
fuente
rm -rf ~/
sin ningún permiso especial. Por otro lado, no puede bloquear su teléfono móvil o TV sin rootearlo primero.En defensa de la persona que escribió la pregunta inicial, tuve la misma pregunta en años pasados, pero tomé un enfoque diferente.
La mayoría de las respuestas aquí podrían reproducirse en un bucle, porque todas siguen enfatizando el mismo punto sobre sudo y root. Permítanme agregar una perspectiva diferente a este tema:
La forma en que aprendí Unix y Linux fue usando una de mis computadoras como un "conejillo de indias". Instalaría SCO Linux, y eventualmente Solaris y luego Linux mucho más tarde, mientras experimentaba alegremente como root para poder leer y / o explorar la jerarquía de directorios y todos los archivos con acceso sin restricciones, también creando cuentas de "usuario normal" en mi hogar de varios usuarios, aunque yo era el único usuario. Y me alegro de haberlo hecho así. Aprendí mucho sobre la "Filosofía de Unix" y la forma en que Unix estaba destinado a ser utilizado por mis experimentos.
Me divertí mucho aprendiendo sobre seguridad y también ejecutando comandos peligrosos escribiendo rm -rf / * en una terminal como root. (¡NO HAGA ESTO! ¡MANGUERÁ SU SISTEMA!) Hice cosas como esta y muchos otros comandos, solo para ver qué sucedería en tiempo real. Hice este tipo de cosas sabiendo las consecuencias de antemano, pero aún así aprendí mucho al hacerlo. Estaba usando SCO Unix LONG incluso antes de que existiera la web (¡sí, soy tan viejo!) Y experimentar de esta manera fue invaluable para mi aprendizaje.
Entonces, lo que digo es que si no te importa hacer reinstalaciones cuando algo sale mal, usa su o inicia sesión como root todo lo que quieras y configura / piratea. Aprenderás muchísimo al hacerlo.
Solo recuerde que el consejo que se ha repetido mucho aquí se reiteró por una buena razón: los protocolos de mejores prácticas han evolucionado a lo largo de las décadas a medida que compsec ha evolucionado, y DEBE prestarles atención, incluso como usuario doméstico / único de su sistema . Al hacerlo, la buena higiene / hábitos del administrador de sistemas se convertirá en una segunda naturaleza para usted.
Solo algo de reflexión sobre el tema de su y sudo. ¡Feliz pirateo!
fuente