Solo por curiosidad, me gustaría saber por qué, cuando inicio sesión como root, ya no estoy en / home / user . ¿Cuál es la razón y qué hace exactamente el directorio / root ?
No soy un usuario avanzado. Responda con palabras simples o proporcione un enlace que proporcione explicaciones claras y simples. Uso Ubuntu 16.04 e inicio sesión como root por sudo -i
. Como se explica aquí , sudo -i
tiene / root como inicio. Quiero saber cuál es la razón; ¿Hay alguna ventaja de estar allí? Y no en ~ como el usuario de sudo -s
.
home
directorio personal , pero este se llamaroot
sudo -s
estar en el mismo directorio de usuarios.man sudo
responderá la pregunta. Para ser simpleuser -i
es usar la configuración de usuario root, perosudo -s
la configuración de usuario actual.Respuestas:
No está iniciando sesión como root ejecutando un
sudo
comando. Estás iniciando un shell con privilegios de root.Si desea permanecer en el directorio de inicio del usuario actual, puede usarlo en
sudo -s
lugar delsudo -i
comando.cd ~
lo llevará al mismo directorio que si no estuviera en un shell con privilegios de root. Literalmente/home/$USER
.Cuando lo usa
sudo -i
, el sistema actúa como si hubiera iniciado sesión comoroot
usuario. Debido a estolo lleva al directorio de inicio del usuario raíz que es
/root
./root
directorio es un directorio de inicio para elroot
usuario.La principal diferencia es que los archivos de configuración de shell como
.bashrc
se usan/root
en caso desudo -i
, y de un usuario normal en caso desudo -s
.fuente
.bashrc
se usan desde allí en un shell específico. En la mayoría de los casos no hay mucha diferencia./home
no está disponible, el problema no existe. Entonces realmente inicias sesión como root.La razón por la cual el hogar del
root
usuario es/root
y no/home/root
es porque generalmente/home
es un punto de montaje en una partición / volumen / disco separado ... (por varias razones, como espacio en disco o remoto, ...)Si por alguna razón
/home
fallara el montaje , aún podría conectarse comoroot
y estar en su/root
directorio de inicio para investigar y arreglar cosasAdemás, para mantenimiento, configuración inicial, cambio de tamaño, ... estaría conectado como
root
y debería poder desmontar / volver a montar/home
fuente
root tiene / root como su hogar y cuando cambie a root tendrá que terminar en su hogar. Esa es la naturaleza de
sudo -i
.sudo -s
hace lo mismo pero no cambia de directorio. Manual para sudo :El usuario root debe ser parte del sistema. Cuando coloca / home en una partición diferente y la raíz era parte de / home, se encontraría con serios problemas si la partición no se montara. Por la misma razón también tenemos
y
Cuando coloca / usr en una partición y / usr no se monta, todavía tiene un sistema en funcionamiento.
fuente
sudo -i
vssudo -s
?El sistema de archivos de Linux está estructurado de una manera específica. Se encuentran los archivos binarios esenciales
/bin/
, los archivos del cargador de arranque/boot/
, la mayoría de los archivos del dispositivo/dev/
, los puntos de montaje para medios extraíbles/media/
, etc.Ver https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard .
Algunos detalles menores pueden diferir de una distribución a otra (por ejemplo,
/usr/bin/
vs./usr/local/bin/
), pero en general casi todas las distribuciones de Linux siguen la misma estructura de directorios.Para responder tu pregunta:
Los directorios principales de los usuarios están en
/home/
. En principio, Linux es un sistema operativo multiusuario. Es posible que solo tenga una cuenta de usuario en su computadora portátil con su directorio de inicio/home/<username>/
, pero si busca en/home/
un servidor Linux compartido, verá muchos directorios de inicio: uno para cada cuenta de usuario. La idea es que cada usuario del sistema tenga permisos de escritura solo en su propio directorio de inicio. Si su nombre de usuario esbob
, puede leer y escribir y eliminar archivos,/home/bob/
pero no puede tocar nada dentro/home/alice/
o dentro/var/log/
.root
aunque es diferente.root
es el usuario administrativo y tiene privilegios de escritura en todo el sistema (y puede actuar como cualquier usuario del sistema). Por lo tanto, tiene sentido queroot
tenga el directorio de inicio especial/root/
porqueroot
no es un usuario normal. Aparte de eso,/root/
es solo un directorio regular sin magia especial, aunque es silencioso posible (incluso probable) que las utilidades del sistema dependan de/root/
ser el hogar del usuarioroot
.Cuando ejecuta
sudo -i
en una terminal, cambia de ser, por ejemplo, el usuario normalbob
a serroot
. Tenga en cuenta que este interruptor afecta solo a la ventana de terminal donde escribiósudo -i
. Para su administrador de archivos, todavía estábob
y, si abre otra ventana de terminal, todavía estábob
allí. En este contexto, el símbolo~
es una abreviatura del directorio de inicio del usuario actual. Porbob
~
medios/home/bob/
pero porroot
~
medios/root/
.Espero que eso te aclare las cosas.
fuente
/
. La ubicación estándar se modificó por razones de seguridad (todos deben poder enumerar los archivos/
para que cualquiera pueda ver qué archivos de puntos tenía el usuario raíz.Veo que todos responden lo que sucede cuando inicias sesión como root (obtienes un directorio ~ que no está en / home) pero nadie dice por qué. Este es el por qué:
Si toda la estructura / home se vuelve inutilizable y tiene que arreglarlo, o si necesita reasignar / home porque se está quedando sin espacio, debe hacerlo de alguna manera. No puede iniciar sesión como cualquier usuario que tenga ~ in / home, porque se bloqueará tan pronto como intente hacer algo. Entonces el usuario root tiene hir ~ en otra parte.
fuente
hir
era un error tipográfico. ¡Gracias por toda la información! Recomiendo mantener el formato de código resistente, pero eso depende de usted.Dices que no eres un usuario avanzado, así que intentaré escribir una respuesta paso a paso.
Cuando usa Linux, debe recordar algunas cosas importantes:
Linux es un sistema multiusuario. Fue concebido así desde el principio, siguiendo la filosofía de Unix (observe el enfoque diferente adoptado por Windows, que fue concebido como un sistema de usuario único)
Como sistema multiusuario, Linux tiene la capacidad de separar los archivos que pertenecen a cada usuario en el sistema. La forma en que Linux logra esto es asignando a cada usuario una subcarpeta dentro del
/home/
directorio. Los archivos de cada usuario son de su propiedad, y solo él (s) puede abrirlos, modificarlos o permitir que otros usuarios los usen. Por el contrario, cada archivo en el sistema de archivos pertenece a un usuario, y ese usuario tiene poder sobre quién puede ver o usar ese archivo. Como se mencionó en otra respuesta, originalmente los usuarios podían colocar sus archivos en cualquier parte del sistema, pero en algún momento se hizo evidente que las cosas deberían estar mejor organizadas, y/home/
("slash-home") se convirtió en el lugar donde deberían estar los archivos del usuario.Sin embargo, hay archivos que el sistema mismo y / o todos los usuarios del sistema necesitan: archivos binarios, archivos de dispositivo, archivos de sistema, etc. (recuerde: en Linux y en cualquier otro sistema similar a Unix, todo es un archivo) . Estos archivos necesarios a nivel mundial se almacenan en varios lugares a lo largo del sistema de ficheros, organizados en varias carpetas dentro de la raíz del sistema de archivos :
/
. Además, estos archivos necesarios a nivel mundial no pertenecen a un usuario particular del sistema, sino al sistema mismo ... pero eso puede ser confuso: ¿quién es el propietario de los archivos binarios? ¿Quién otorga permisos sobre estos archivos necesarios a nivel mundial?Dado que cada archivo en el sistema "necesita un propietario", debe haber un "usuario especial" que pueda administrar los archivos necesarios a nivel mundial. Además, este "usuario especial" puede hacer cosas que ningún otro usuario en el sistema puede hacer: puede crear otros usuarios para el sistema. Este usuario se llama "superusuario" (para nosotros los mortales) o "raíz" (para el sistema).
Ahora, este superusuario es otro usuario del sistema, pero tiene poderes (y responsabilidades) muy superiores a los de otros usuarios: mantenimiento, por ejemplo. Por lo tanto, es natural pensar que "root" necesita un lugar para colocar sus cosas, pero no debe confundirse con las cosas que pertenecen a los otros usuarios. Entonces, en lugar de tener una subcarpeta a continuación
/home/
, "root" tiene su propio espacio reservado en el sistema de archivos:/root/
(llamado "slash-root"). Recuerde: "root" es un usuario muy especial, por lo que necesita un lugar especial y privilegiado para colocar sus cosas.Ahora, Ubuntu no tiene una cuenta raíz habilitada de forma predeterminada, por lo que un usuario "normal" debe tener la autoridad sobre el sistema en su conjunto. Ahí es donde
sudo
entra en juego el comando ("cambiar de usuario y hacer"): permite que un usuario normal (incluido previamente en la lista de "sudoers") ejecute comandos como si fuera otro usuario, por ejemplo, "root".Finalmente, esas
-i
opciones significan "simular inicio de sesión inicial". Eso significa quesudo
leerá los datos del "perfil del usuario objetivo" antes de ejecutar el comando dado. Si no proporciona un comando,sudo
iniciará una instancia de shell con el perfil del usuario objetivo (raíz) ... y eso comenzará con el traslado a la carpeta "inicio" del "usuario objetivo". Entoncessudo -i
lo moverá a hacer la carpeta de inicio de la raíz (/root/
).Espero que esto te ayude a entender con qué sucede
sudo -i
.EDITAR
Creo que dejé algunas cosas sin aclarar, así que las agregaré aquí:
Dije arriba: "en Linux, todo es un archivo". ¡Y lo digo en serio, literalmente! Sus documentos e imágenes son archivos, pero también terminales (a los que puede acceder presionando [CTRL] + [ALT] + [Fn]), unidades físicas y su teclado, por ejemplo. Un sistema similar a Unix funciona leyendo o escribiendo datos desde / hacia los archivos, y dirigiendo el flujo de datos hacia / desde los archivos apropiados en el sistema, que representan el archivo con el que está trabajando y la entrada de teclas que está escribiendo, y la salida que estás viendo en la pantalla. Algunos de estos archivos pueden ser utilizados directamente por los usuarios, pero otros no; por ejemplo, no puede leer o escribir directamente en un disco duro, pero debe permitir que Linux vincule una carpeta normal y navegable al archivo del dispositivo (debajo
/dev/
) que representa su disco duro.Un sistema de archivos Linux puede abarcar múltiples unidades físicas . Un ejemplo simple es cuando conecta una memoria USB: Linux puede montar esa unidad (el montaje es el proceso mediante el cual el sistema conecta una carpeta estándar, donde puede ver archivos en un shell o navegador de archivos, a un archivo de dispositivo
/dev/
) y puede trabajar con él, y cuando haya terminado, le pide a Linux que desmonte la unidad y luego la retire del puerto USB. Lo importante aquí es que este ciclo de "montar - desmontar" afecta * al mismo sistema de archivos "que usa todos los días: no crea un nuevo sistema de archivos cada vez que agrega o quita una unidad física, pero agrega esa unidad física al sistema de archivos ( nuevamente, compare esta filosofía con el enfoque de Wndows).Dado que el sistema de archivos puede abarcar múltiples unidades físicas, se hace evidente que se pueden escribir diferentes archivos del sistema en diferentes unidades físicas. Una unidad puede almacenar los archivos binarios del sistema (
/bin/
) y otra puede almacenar los archivos del usuario (/home/
y sus descendientes). En una configuración de unidades múltiples, es común que haya/home/
escrito en una unidad física diferente a/root/
, por lo tanto, si el sistema se rompe y los usuarios no pueden iniciar sesión porque la unidad donde/home/
deja de funcionar, la raíz puede. (Esto es simplista ... muchas cosas necesitan ser copiadas en cada unidad física para permitir que root inicie sesión si ningún otro usuario puede hacerlo, pero esto puede darle una idea general).Y ese carácter tilde (
~
) ... denota el directorio de inicio del usuario actual . Si ha iniciado sesión como "bob",cd ~
lo llevará a/home/bob/
, pero si ha iniciado sesión como "root",cd ~
lo llevará a/root/
tl; dr Así que ahora creo que todo está dicho:
"root" es un usuario especial, con poderes y responsabilidades muy superiores a otros usuarios
"/ root /" es el lugar donde "root" puede almacenar sus cosas, sin correr el riesgo de que se confunda con otras cosas que pertenecen a usuarios normales. Esta carpeta se puede escribir en un disco físico diferente que
/home/
.sudo -i
inicia un shell que simula el inicio de sesión de root, y eso implica pasar a la carpeta de inicio de root. Como con cualquier otro usuario,cd ~
lo llevará a su directorio de inicio, pero si es root, será/root/
Si el sistema está instalado en diferentes unidades físicas, el usuario root puede iniciar sesión e intentar arreglar las cosas incluso si falla otra unidad del sistema.
fuente
La razón principal para que el directorio de inicio de root sea tratado de manera diferente:
Cuando las cosas salen mal, debe poder realizar tareas de recuperación del sistema tan pronto como logre montar el sistema de archivos /.
Dependiendo de su configuración, los directorios de inicio del usuario pueden estar en un sistema de archivos diferente o incluso pueden estar montados en la red.
Para iniciar sesión como root (es decir, ingrese el nombre root y la contraseña de root en el indicador de inicio de sesión) desde la consola, solo necesita un sistema de archivos montado.
(Esta es también la razón por la cual las utilidades principales están en / bin y / sbin en lugar de / usr / bin o / usr / sbin; todo en / usr es prescindible).
fuente