Aquí está todo sobre las diferencias entre /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, y /usr/local/sbin:
Todas estas carpetas contienen archivos binarios en un sistema basado en Linux.
Las distintas designaciones en el nombre de la carpeta denotan si los binarios pueden o no cargarse antes de que se monte un usuario.
También distinguen entre binarios instalados localmente y sistemas más fundamentales, pero cada carpeta se centra en los archivos binarios.
Así que si quieres aprenderlo todo sobre cómo se diferencian /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin y /usr/local/sbin, entonces este artículo es para ti.
Manos a la obra.
¿Qué es /bin? (3 cosas)
Si quieres profundizar en las diferencias entre estas carpetas y directorios, vamos a tener que explorar algunos conceptos fundamentales en Linux.
Voy a empezar con /bin
, pero voy a tener que dar la vuelta para explicar algunas ideas básicas para que todo tenga sentido.
Con suficientes antecedentes, seré capaz de ir a través de cada una de las diferentes ubicaciones «bin» y cubrir las principales diferencias entre ellas.
Así que, comenzando con /bin
, aquí es donde encontrarás los binarios para todos los usuarios en un sistema Linux.
Esto significa que /bin está lleno de archivos ejecutables, y este es un buen lugar para encontrar comandos comunes como
- cat
- cp
- cd
- ls
- etc.
Dado que estos comandos son muy básicos y esenciales para los controles y sistemas Linux, se podría decir que /bin
es un lugar en el sistema de archivos que contiene algunos de los comandos ejecutables más fundamentales que se pueden utilizar en Linux.
Linux
Por supuesto, esa explicación sólo tendrá sentido para las personas que ya estén profundamente familiarizadas con Linux.
Para cualquier otro, tenemos que retroceder un poco.
¿Qué es Linux? Es un sistema operativo. Eso significa que es similar a Windows, iOS, Android, macOS y cualquier otro sistema operativo.
Un sistema operativo es el software que se instala en un sistema informático y que permite trabajar con él.
El sistema operativo es lo que se carga cuando enciendes el ordenador, y cualquier programa o aplicación específicos que quieras ejecutar en ese ordenador funcionan en última instancia a través del sistema operativo.
Es el conjunto esencial de funciones de información y control que permiten al software comunicarse con el hardware de un dispositivo.
En el caso de Linux, se trata de un sistema operativo de código abierto.
Eso significa que no tienes que pagar por él, que cualquiera puede hacerle cambios y que hay una gran comunidad colaboradora que trabaja para mejorarlo.
Linux existe desde 1991 y hay muchísimas versiones.
No todas las variaciones de Linux serán idénticas en todos los sentidos, pero están hechas del mismo esqueleto, por así decirlo.
Esto significa que en cualquier sistema Linux, deberías ser capaz de encontrar /bin y el resto de carpetas y directorios de los que hablaré hoy.
Conceptos básicos de archivos en Linux
Ya que estamos en este tema, merece la pena explicar también un poco sobre el sistema de archivos de Linux.
Cualquier sistema operativo necesita un sistema de archivos para mantener la información organizada.
Cualquier dato en el ordenador o cualquier programa que quieras ejecutar se almacena como archivos, y se organizan de acuerdo con el sistema de archivos.
En Linux, cualquier ubicación de archivo se coloca en una jerarquía, y cada segmento de la jerarquía se denota por una barra diagonal (/).
A diferencia de Windows, que utiliza una barra invertida (\
).
Lo que esto significa es que «/bin» es una designación jerárquica.
Podrías potencialmente tener cosas antes o después de «/bin
» (más sobre esto después) y daría más claridad a la designación.
Si no hay nada antes de la primera barra oblicua, significa que se trata de un directorio raíz (o root, en inglés).
Es otra forma de decir que no hay nada más básico en la jerarquía.
Sabiendo esto puedes ver que «/bin» está en el nivel raíz.
Binario
Cuando expliqué «/bin«, mencioné algo sobre guardar binarios.
Ahora es un buen momento para explicar lo que eso significa.
Un binario en un sistema informático es un archivo que está escrito en lenguaje binario. En otras palabras, ya está en el lenguaje de la máquina.
Otro tipo de archivos pueden estar escritos en un lenguaje humano para que los usuarios puedan leerlos.
Estos archivos tienen que traducirse al lenguaje de la máquina antes de que el ordenador pueda trabajar con ellos.
Los archivos binarios ya están en el lenguaje del ordenador, lo que tiene algunas implicaciones.
En primer lugar, significa que los archivos binarios pueden ejecutarse fácilmente.
Es posible crear archivos binarios que den órdenes al ordenador (éste es probablemente el uso principal de este tipo de archivos).
Los ejecutables binarios (archivos que indican al ordenador que realice tareas) no necesitan software adicional para ejecutarse.
El ordenador puede acceder directamente a él.
Debido a esta simplicidad, se pueden crear archivos binarios que no son editables.
Creas el archivo y ya no se puede modificar, y este es uno de los aspectos importantes de un archivo binario.
Algunas de las funciones más básicas de tu ordenador existen como funciones binarias.
Si estás usando un shell de comandos para dar instrucciones directas a un ordenador Linux, cualquier función que escribas ahí es probablemente un archivo binario.
Por ejemplo, cambiar directorios en el shell utiliza la función «cd
«.
La función (y comando) «cd
» es un binario.
En última instancia, los binarios cubren una amplia gama de archivos de Linux.
Los que vamos a discutir hoy giran en gran medida en torno a los ejecutables.
¿Qué es /sbin?
Con todos estos antecedentes cubiertos, podemos volver a los directorios en cuestión.
Ya sabemos qué es /bin
, así que pasemos al siguiente.
¿Qué es /sbin?
El nombre revela la respuesta si sabes cómo leerlo.
Como ya te habrás dado cuenta, «bin» se refiere a archivos binarios.
Por lo tanto, cualquier directorio con «bin» es probable que contenga archivos binarios.
En este caso, tenemos bin más una s
extra.
La s
en este caso se refiere al superusuario
.
En Linux, un superusuario (superuser) tiene control absoluto sobre todo en el ordenador.
Los archivos importantes del sistema a los que no quieres que se pueda acceder fácilmente suelen estar bloqueados para todo el mundo excepto para un superusuario.
Así, /sbin es un lugar que alberga archivos binarios a nivel de sistema.
Básicamente, es una carpeta para las utilidades de administración del sistema.
Son archivos que permiten al ordenador arrancar, restaurar, recuperar y llevar a cabo otras tareas extremadamente esenciales.
Más concretamente, /sbin es la carpeta raíz de los archivos binarios del sistema. Eso significa que alberga las utilidades más fundamentales para un sistema Linux.
Hay otras carpetas sbin, como pronto verás, y albergan diferentes utilidades según los nombres de los directorios más grandes.
¿Qué es /usr/bin?
Mirar /usr/bin
es una gran oportunidad para aprender un poco más sobre las convenciones de nomenclatura de rutas de archivos de Linux.
Esta sigue siendo una carpeta para archivos binarios, pero ya no está en el nivel raíz.
En su lugar, está bajo el encabezado /usr
, y eso también nos dice algo.
Este directorio contiene programas y archivos de usuario.
Eso significa que no puedes ejecutar archivos binarios en este directorio hasta después de iniciar sesión en el sistema con una cuenta de usuario (o designar un usuario dentro del shell).
Ahora bien, esto no significa que sólo un usuario en el dispositivo pueda hacer uso de los archivos en /usr/bin
.
Sólo significa que /usr
debe estar montado antes de que /usr/bin
sea accesible. En otras palabras, un usuario específico tiene que estar conectado.
Mientras el usuario conectado tenga permiso, cualquier usuario puede acceder a los archivos de /usr/bin
.
De hecho, este directorio sigue conteniendo importantes ejecutables que ayudan al funcionamiento de sistemas esenciales.
Simplemente ya no están al nivel más fundamental.
Un buen ejemplo es el comando «find
«. Se trata de un ejecutable binario que puede ayudarte a encontrar archivos específicos en el sistema.
Está disponible para todos los usuarios, pero necesitas cargar un usuario antes de que realmente tenga sentido querer buscar algo específico.
¿Qué es /usr/sbin?
El siguiente en la lista es /usr/sbin
.
Se parece mucho al directorio del que acabamos de hablar, con una sola letra de diferencia.
Pero, esa letra es una s, y como ya hemos aprendido, la s
en un nombre de ruta puede ser bastante importante.
En este caso, estamos buscando la ubicación de los binarios del sistema que sólo se ejecutan después de montar un usuario.
Esta explicación combina todo lo que hemos aprendido hasta ahora.
Como está en el directorio /usr
, sabemos que necesitamos un usuario para acceder a los archivos que hay allí.
Como es una carpeta sbin
, sabemos que alberga específicamente binarios del sistema, que suelen ser utilidades administrativas.
¿Qué es /usr/local/bin?
En penúltimo lugar, vamos a introducir otra ruta de directorio común.
Esta vez, estamos aprendiendo sobre /local
.
Este es un designador para las cosas que añades al sistema como usuario. Eso puede incluir cualquier cosa, desde fotos hasta software avanzado.
Realmente no importa.
Si lo instalas localmente, entonces va a uno de los directorios /local
.
En este caso, el nombre de la ruta /usr/local
nos está diciendo que las cosas locales sólo están disponibles después de cargar en un usuario.
Eso tiene sentido si tenemos en cuenta que son cosas que tienes que añadir tú mismo al ordenador.
Por último, la parte /bin
del nombre nos sigue diciendo que esta carpeta contiene archivos binarios.
En su mayor parte, los archivos binarios que instalas tú mismo irán en esta carpeta.
Hay una excepción en la siguiente parte, pero esta carpeta va a albergar un montón de ejecutables de terceros y otros archivos.
¿Qué es /usr/local/sbin?
Por último, tenemos /usr/local/sbin
.
Todo en este nombre de ruta de archivo es lo mismo que lo anterior con la adición de esa única s
.
Por lo tanto, esta carpeta sigue albergando archivos binarios instalados localmente que son accesibles después de iniciar sesión con una cuenta de usuario.
Todo esto tiene sentido.
Pero, esta carpeta en particular contiene archivos binarios que están restringidos al acceso de superusuario.
Básicamente, aquí es donde el software de terceros contiene ejecutables que pueden instalar o cambiar el software en sí.
Si tienes un programa que necesita una reparación de software, la función para llevar a cabo esa reparación puede estar restringida al superusuario.
Esto hace que sea más difícil ejecutar accidentalmente funciones que tienen la capacidad de romper cosas en tu ordenador cuando no se utilizan correctamente.
Para Finalizar
Puedes usar el siguiente comando man hier
para listar todos los directorios. Para obtener sólo los binarios, utiliza en su lugar:
$ man hier | grep -E 'bin$|sbin$|^.{7}(/bin)|^.{7}(/sbin)' -A2
/bin This directory contains executable programs which are needed in single user mode and to bring the system up or repair it.
--
/sbin Like /bin, this directory holds commands needed to boot the system, but which are usually not executed by normal users.
--
/usr/X11R6/bin
Binaries which belong to the X-Window system; often, there is a symbolic link from the more traditional /usr/bin/X11 to here.
--
/usr/bin
This is the primary directory for executable programs. Most programs executed by normal users which are not needed for booting or for repairing the system and which are not installed locally should be
--
/usr/local/bin
Binaries for programs local to the site.
--
/usr/local/sbin
Locally installed programs for system administration.
--
/usr/sbin
This directory contains program binaries for system administration which are not essential for the boot process, for mounting /usr, or for system
En resumen:
Componente | Uso |
---|---|
/bin | Este directorio contiene programas ejecutables que son necesarios en el modo de usuario único y para poner en marcha o reparar el sistema. |
/sbin | Al igual que /bin, este directorio contiene los comandos necesarios para arrancar el sistema, pero que normalmente no son ejecutados por los usuarios normales. |
/usr/bin | Este es el directorio principal para los programas ejecutables. La mayoría de los programas ejecutados por usuarios normales que no son necesarios para arrancar o para reparar el sistema y que no están instalados localmente deben colocarse en este directorio. |
/usr/sbin | Este directorio contiene binarios de programas para la administración del sistema que no son esenciales para el proceso de arranque, para montar /usr, o para el sistema |
/usr/local/bin | Binarios para programas locales. |
/usr/local/sbin | Programas instalados localmente para la administración del sistema. |