¿Cómo entender el diseño del sistema de archivos de Ubuntu?

220

En Windows, tal vez solo haya un par de carpetas importantes (por importante quiero decir importante en mi imagen lógica del sistema de archivos de Windows) en la unidad de instalación (en mi caso C:\). A saber Program Filesy Windows. Simplemente me mantengo alejado de la Windowscarpeta y el "agregar eliminar archivos de programa" es lo suficientemente bueno como para manejar la program filescarpeta de Windows. Por supuesto, hay una carpeta llamada Usersdonde los usuarios (que no son administradores) pueden acceder solo a sus carpetas.

Por lo tanto, hay una imagen clara en algún nivel en mi mente del sistema de archivos de Windows. En Ubuntu, cuando llego a la ubicación /, hay una gran lista de carpetas, la mayoría de las cuales no tengo idea de lo que contienen. La /bincarpeta parece ser el equivalente de la Windowscarpeta en Windows. La /usrcarpeta parece que es el equivalente de la Userscarpeta en Windows. Pero incluso la /homecarpeta parece que puede ajustarse a la factura.

Por favor, comprenda que sí entiendo, que Ubuntu (Linux) tiene un carácter diferente al de Windows, es decir, no es necesario que haya un equivalente exacto de las funciones de Windows en Ubuntu. Todo lo que busco es una imagen un poco más clara del sistema de archivos de Ubuntu.

Esta pregunta es parte de una pregunta más grande que estoy dividiendo para hacerla más responsable. La pregunta original se puede encontrar aquí:
http://sgsawant.wordpress.com/2012/05/17/whats-the-equivalent-of-add-or-remove-programs-in-ubuntu/

Shashank Sawant
fuente
3
Consulte también la etiqueta de estructura de directorio en Unix y Linux . Todas las distribuciones de Linux siguen el mismo modelo.
Gilles
Gracias por todas sus respuestas. Estoy un poco confundido acerca de algunos puntos: en Windows, la configuración generalmente proporciona a través de un aviso una opción para instalar un software para todos los usuarios. ¿Cómo hacer esa distinción en Ubuntu? Además, este es un problema habitual en la configuración de software de desarrollo para sus IDE. En Windows, por ejemplo, en "archivos de programa \ miktex \ bin" está el archivo "pdflatex.exe". Por lo tanto, puedo apuntar el IDE a este archivo y configurarlo. ¿Cómo hacer este proceso en Ubuntu? ¿Dónde está el archivo binario general asociado con un software (especialmente desde el punto de vista de la configuración)?
Shashank Sawant
2
En Ubuntu, normalmente instala software para todos los usuarios. Todo lo que haces a través del administrador de paquetes es para todos los usuarios. No entiendo el resto de tu comentario; uno no "configura" el "archivo binario asociado con un software". Debe hacer esto como una pregunta separada y dar una mejor explicación de lo que está tratando de hacer.
Gilles
Entendido. Enmarcaré una nueva pregunta. Incluso entonces, aquí hay una breve explicación de lo que quise decir: en Windows, los archivos .exe se pueden ubicar fácilmente. Por ejemplo: "C: \ Python27 \ python.exe". Entonces sé de dónde parte el programa Python. Ahora, si tengo que usar el IDE de Eclipse, simplemente puedo señalarlo a python.exe, y esto es lo que quise decir con "configurar". Configuré el IDE para Python. En Ubuntu, ¿dónde está la ubicación donde está instalado el programa? Eso es lo que aún me evade.
Shashank Sawant
2
@Gilles Tenga cuidado al decir all. El proyecto GoboLinux en realidad usa una estructura de directorios más similar a Windows.
nuevo123456

Respuestas:

251

Puede leer sobre esto en, por ejemplo, Wikipedia. Un experto:

El estándar de jerarquía del sistema de archivos (FHS) define los directorios principales y sus contenidos en los sistemas operativos Linux. En su mayor parte, es una formalización y extensión de la jerarquía tradicional del sistema de archivos BSD.

El Linux FHS es mantenido por la Fundación Linux, una organización sin fines de lucro que consta de los principales proveedores de software y hardware, como HP, Red Hat, IBM y Dell. La versión actual es 3.0, lanzada el 3 de junio de 2015.

Una representación visual con una breve descripción:

ingrese la descripción de la imagen aquí

Básicamente, Linux ha dividido la estructura de directorios en función de la función de lo que se necesita para hacer que el sistema sea lo más seguro posible con la mínima cantidad de permisos necesarios. De lo contrario, alguien tendrá que hacer mucho trabajo evitable.

Recuerde que Unix y Linux se hicieron como sistemas multiusuario y Windows se creó para un solo usuario. Todo lo demás puede explicarse a partir de esa idea. Puede explicar cada directorio cuando piense que es multiusuario y de seguridad.

3 ejemplos:

  • Verá que los archivos y directorios que sólo son admin se reúnen en el mismo directorio: la s en /sbine /usr/sbiny /usr/local/sbinsignifica Sistema. Un usuario normal ni siquiera puede iniciar programas que están allí. Los archivos que puede iniciar un usuario normal están en / bin, / usr / bin, / usr / local / bin en función de dónde debería residir lógicamente. Pero si solo son administradores, deben ir a la sversión de ese directorio. Hay una famosa utilidad llamada fuser. Puedes matar procesos con él. Si un usuario normal pudiera usar esto (s), podría matar su sesión.

  • Lo mismo ocurre con /home: / home / user1 es propiedad del usuario1. / home / user2 es propiedad de user2. user2 no tiene que hacer cosas en la casa de user1 (y al revés también es cierto: user1 no tiene nada que hacer en la casa de user2). Si todos los archivos estuvieran en / home sin un nombre de usuario debajo, tendría que otorgar permisos a cada archivo y evaluar si alguien tiene permiso para escribir / eliminar esos archivos. Una pesadilla si tienes decenas de usuarios.

  • Adición sobre bibliotecas.

    /lib/, /usr/lib/Y /usr/local/lib/son las ubicaciones originales, desde antes de que existieran los sistemas multilib y existen para evitar romper cosas. /usr/lib32, /usr/lib/64, /usr/local/lib32/, /usr/local/lib64/Son de 32/64-bit invenciones multilib.

No es un concepto estático de ninguna manera. Otros sabores de Linux hicieron ajustes a este diseño. Por ejemplo; actualmente verá que Debian y Ubuntu cambian mucho en el diseño del FHS ya que SSD está mejor con archivos de solo lectura. Hay un movimiento hacia un nuevo diseño donde los archivos se dividen en un directorio / grupo de 'solo lectura' y 'de escritura' para que podamos tener una partición raíz que pueda montarse de solo lectura (partición para un SSD) y de escritura (HDD sata). El nuevo directorio que se usa para esto (no en la imagen) es /run/.

Rinzwind
fuente
18
+1 Rinzwind. Me gusta la imagen, en realidad estaba buscando una.
Luis Alvarado
55
pensé que eso llamaría la atención: + @LuisAlvarado
Rinzwind
44
¡No puede haber una mejor respuesta!
Shashank Sawant
1
¿No era lo /mntque /mediaes ahora, hace unos años?
RobinJ
99
@RobinJ: La diferencia es que /mnthistóricamente se ha administrado manualmente. Con el surgimiento de muchos dispositivos transitorios (unidades flash, etc.) y el montaje automático convirtiéndose en estándar, era necesario manejar automáticamente los puntos de montaje. Se necesitaba un nuevo directorio para evitar conflictos con la configuración manual existente. Por lo tanto, estos días /mntse han relegado a la función de proporcionar un punto de montaje temporal conveniente.
Scott Severance
104

Prueba este comando ...

man 7 hier

También puede ver esta página del manual aquí: http://manpages.ubuntu.com/manpages/en/man7/hier.7.html

Espero eso ayude

Pritesh Wadhia
fuente
1
¡buena llamada! Siempre lo olvido, aunque siempre está presente (incluso cuando la red está baja;))
Rinzwind
1
El hombre debe ser renombrado a "eso". :)))
Shiki
man hierahora está entre mis comandos favoritos! Las explicaciones son más claras para mí que el doco FHS, especialmente distinguiendo entre "local para la máquina" y "en todo el sitio", para un usuario inexperto de Ubuntu, que pasa de la experiencia moderada de DOS / Windows.
WillC
Por cierto el número 7 se encuentra en la sección Miscelánea de la página del manual de hier.
Pablo A
hmm Por lo que vale, este tipo de me recuerda una respuesta de solo enlace, aunque es probable que todas las versiones de ubuntu tengan esto. ¿Puedes incorporar parte del contenido de la página de manual en tu respuesta?
Jrh
45

Respuesta tardía : he creado una hoja de ruta para que la sigan los principiantes. Si están buscando un archivo pero no saben dónde buscar, pueden usar el mapa para navegar de manera aproximada. Puede descargar un PNG de alta resolución aquí . Puedes encontrar la publicación relacionada aquí . Seguiré actualizando tanto el archivo como la publicación cuando el tiempo lo permita, incorporando comentarios útiles.

d4nyll
fuente
Idea interesante y útil para producir un diagrama de flujo, pero desafortunadamente parece tener algunos callejones sin salida. Mi pregunta es si estoy realizando un ¿hacia mysqldumpdónde debo enviar el archivo?
BadHorsie
@BadHorsie, por supuesto, siempre dependerá de su caso de uso específico, pero bastarlo en un /home/badhorsie/mysqldumpdirectorio sería suficiente. Si está ejecutando muchas aplicaciones, puede crear un nuevo usuario para ejecutar cada aplicación y volcarla en el homedirectorio de esa aplicación / usuario .
d4nyll
@ paranoid-panda, ¿podrías ampliar un poco sobre por qué eliges no permitir que se pueda hacer clic en la imagen a través de la resolución completa? La versión incrustada en esta publicación es prácticamente ilegible.
waldyrious
@waldyrious: Si miras el historial de revisiones , verás que solo corregí un error de ortografía, fue otro usuario quien agregó la imagen de esta manera en particular. Nada que ver conmigo. Siéntase libre de editarlo, no puedo recordar la sintaxis correcta para que se pueda hacer clic.
@ParanoidPanda eso es precisamente lo que hice. Mi edición corrigió el error tipográfico e hizo que se pudiera hacer clic en la imagen, y su opinión fue rechazar y editar , de ahí mi pregunta: ¿qué vio mal al hacer que se pueda hacer clic en la imagen?
waldyrious
36

El siguiente texto muestra la estructura del directorio.

mtk4@laptop:/$ pwd
/
mtk4@laptop:/$ tree -L 1
.
|-- bin
|-- boot
|-- cdrom
|-- dev
|-- etc
|-- home
|-- lib
|-- lost+found
|-- media
|-- mnt
|-- opt
|-- proc
|-- root
|-- run
|-- sbin
|-- selinux
|-- srv
|-- sys
|-- tmp
|-- usr
|-- var

Los componentes principales aquí son:

  1. /boot : Contiene el gestor de arranque

  2. /home : Contiene los directorios de inicio de los usuarios.

  3. /bin : Todos los archivos binarios ejecutables y comandos utilizados por todos los usuarios en el sistema se encuentran aquí.

  4. /sbin : Contiene los archivos binarios ejecutables del sistema que suelen utilizar los administradores del sistema.

  5. /lib : Contiene las bibliotecas del sistema que admiten los binarios en / bin y / sbin.

  6. /etc : Contiene los archivos de configuración para red, tiempo de arranque, etc.

  7. /dev : Aquí se muestran los archivos del dispositivo, es decir, usb, dispositivo terminal o cualquier otro dispositivo conectado al sistema.

  8. /proc : Contiene información sobre el proceso en ejecución.

  9. /tmp: Este es el directorio temporal donde muchos procesos crean los archivos temporales necesarios. Esto se purga cada vez que se inicia la máquina.

Para más detalles, el enlace Thegeekstuff explica perfectamente el sistema de archivos genérico de Linux.

mtk
fuente
20

\Userses equivalente a /home. El nombre de /usres un artefacto histórico.

El equivalente combinado de \Windowsy \Program Fileses la combinación de /bin, /boot, /etc, /lib, /sbin, /tmp, /usry /var. Linux y Windows dividen el software instalado de manera diferente. Windows distingue entre el sistema operativo y los programas complementarios. Linux no hace esta distinción de la misma manera; la mayoría, si no todo, el software viene a través de Ubuntu (el distribuidor) y se instala en la misma jerarquía de directorios, y dado que el administrador de paquetes rastrea el software, no es necesario almacenar cada programa en su propio directorio. En Linux:

  • /etc es para archivos de configuración del sistema: archivos de configuración que afectan a todos los usuarios, ya sea que se apliquen al sistema operativo en su conjunto o a una aplicación específica.
  • /usr es para el código y los datos del sistema (programas, bibliotecas, documentación, etc.).
  • /vares para datos variables o temporales: archivos temporales, registros, bases de datos del administrador de paquetes, bobinas de impresoras, archivos de guardado de juegos, etc. También hay /tmparchivos temporales que pueden borrarse a través de reinicios.
  • /bin, /liby /sbinen el directorio raíz tienen contrapartes en /usr. Los archivos que están fuera /usrson los que se necesitan al principio del proceso de arranque. Esta es una reliquia de cuando los discos eran pequeños y /usrpodrían estar en un sistema de archivos compartido entre varias estaciones de trabajo a través de la red, no es realmente una distinción útil en la mayoría de los sistemas.
  • /boot contiene algunos archivos que solo se necesitan para iniciar el sistema operativo, y no para el funcionamiento diario.

Hay directorios adicionales que no corresponden a nada que Windows tenga:

  • /rootes el directorio de inicio del usuario raíz. El usuario raíz es una cuenta de administrador que no está vinculada a ningún usuario en particular; es el usuario al que cambias cuando corres sudo. Ubuntu no permite que el usuario root inicie sesión de forma predeterminada.
  • /mediay /mntson puntos de montaje: son donde puede ver los sistemas de archivos de otros sistemas operativos y unidades remotas. El equivalente de Windows es otras letras de unidad.
  • /procy /sysmostrar información del sistema. En Windows, debe navegar por los menús o llamar a los comandos del sistema o instalar programas de terceros para ver esta información.

Ubuntu, como otras distribuciones de Linux, generalmente sigue el Estándar de Jerarquía del Sistema de Archivos de Linux .

Gilles
fuente
5

Ubuntu (como todos los sistemas similares a UNIX) organiza los archivos en un árbol jerárquico, donde las relaciones se piensan en equipos de niños y padres. Los directorios pueden contener otros directorios, así como archivos regulares, que son las "hojas" del árbol. Cualquier elemento del árbol puede ser referencias por un nombre de ruta; un nombre de ruta absoluto comienza con el carácter / (que identifica el directorio raíz, que contiene todos los demás directorios y archivos), luego se enumera cada directorio secundario que debe atravesarse para alcanzar el elemento, cada uno separado por un signo /.

Un nombre de ruta relativo es uno que no comienza con /; en ese caso, el árbol del directorio se atraviesa a partir de un punto dado, que cambia según el contexto, llamado directorio actual. En cada directorio, hay dos directorios especiales llamados. y .., que se refieren respectivamente al directorio en sí y a su directorio padre.

El hecho de que todos los archivos y directorios tengan una raíz común significa que, incluso si hay varios dispositivos de almacenamiento diferentes en el sistema, todos se ven como directorios en algún lugar del árbol, una vez que se montan en el lugar deseado.

Encuentre ejemplos y más información aquí :

stephenmyall
fuente