GNU/Linux. Administración del Sistema

Muy buenas lector. Esta página forma parte de la serie de introducción a Linux que te acabo de enlazar. Si ya has leído la partes más introductorias relativos GNU/Linux, las distribuciones o los entornos de escritorio, aquí ya empezarás a conocer cositas más interesantes relativos a la administración del sistema.

Dada la naturaleza genérica de esta página, verás que muchos de los temas que verás aquí tienes desarrollados más en profundidad en posts específicos que te iré enlazando. Pero vayamos por partes y pongamos un poco de estructura al tema.

Anuncios

Tabla de contenidos:

  1. Instalación de software y actualizaciones
    1. Repositorios de software
    2. Paquetes y gestores de paquetes
    3. Formatos auto-contenidos. Flatpak y Snaps
    4. Tiendas de software
  2. Particiones y volúmenes
    1. Esquemas de particiones
    2. Administrador de volúmenes LVM
    3. Cifrado de disco LUKS
  3. La jerarquía de directorios
  4. Arquitectura de usuarios, grupos y permisos
  5. La terminal o línea de comandos
  6. Esto continua

Instalación de Software y Actualizaciones

La parte de instalación de software es uno de los puntos más importantes que te interesa conocer si acabas de aterrizar. En Windows es algo que no tiene mucho misterio, dado que la gran mayoría de software está desarrollado por y para Windows, por lo que el tema se reduce a ir a la web oficial del fabricante o desarrollador y descargar el ejecutable.

En Linux, sin embargo, el tema es algo diferente. Aparte de que hay muchos fabricantes que no ofrecen su software para plataformas Linux, hay otro punto a considerar, y es que, de forma muy generalizada, la gran mayoría de distribuciones funcionan mediante un sistema de gestión de paquetes, y disponen de sus propios repositorios de software oficiales, donde puedes encontrar un amplio catálogo de software a tu disposición.

De hecho, la propia base del sistema (desde el Kernel, pasando por todos los componentes del sistema GNU, y hasta llegar al propio entorno de escritorio) se distribuye en forma de paquetes, que se encuentran en los mismos repositorios de software desde los que luego podrás optar a instalar las aplicaciones que necesites. Esto tiene varias ventajas importantes que verás abajo.

Repositorios de Software

Los repositorios de software permiten ofrecer un catálogo de aplicaciones gestionado desde un lugar centralizado y supervisado por la comunidad de desarrolladores y usuarios.

Las ventajas de esto son varias, empezando por el hecho de evitarte la necesidad de tener que visitar webs externas para la descarga de software. Esto da bastantes garantías al usuario de que todo el software que ha descargado es legítimo, y que además estará soportado, bien por parte de la comunidad de desarrolladores de la distribución, o bien a través de la empresa que haya detrás (Canonical, Red Hat, SUSE, etc.).

Otra ventaja es la facilidad a la hora de administrar las actualizaciones. El gestor de paquetes generalmente te alertará cada vez que detecte que en los repositorios haya versiones nuevas de los paquetes que tengas instalados. De este modo, como sistema y aplicaciones derivan de las mismas fuentes de software, estarás actualizando todo tu sistema en su conjunto.

Cada distribución cuenta con sus propios repositorios de software, y normalmente el catálogo es suficientemente extenso como para cubrir la mayor parte de necesidades de un usuario normal. En la imagen de debajo puedes ver, a modo de ejemplo, la ventada de gestión de repositorios de Ubuntu.

Repositorios de Software

Como ves, hay distintas fuentes, por tal de distribuir los paquetes en grupos, según si son libres y mantenido oficialmente por Canonical (que en este caso es la compañía detrás de Ubuntu), si son libres pero mantenidos por la comunidad (sin contar con el soporte de Canonical), etc.

Ojo, estos son los grupos de repositorios que dispone Ubuntu por defecto, pero cada distribución tiene sus propios repositorios de paquetes, y que se encarga de mantener y actualizar según sus propias reglas.

También hay que decir que, aunque existan los repositorios y puedas tirar de ellos para tus necesidades de software, esto no quita que puedas necesitar un programa o herramienta concreta que no esté disponible en los repositorios de tu distribución (o en la versión que necesites), y que debas recurrir a una fuente externa, o a la propia web del fabricante, para su descarga.

Paquetes y Gestores de Paquetes

Un paquete es un fichero comprimido que contiene todos los archivos que se requieren para la instalación de un determinado software. Así, por entendernos, cualquier pieza de software consta de un paquete o un conjunto de paquetes.

Muchos paquetes son dependientes entre sí, lo que significa que se necesitan entre ellos para poder operar correctamente. Asimismo, las dependencias pueden ser compartidas entre diferentes paquetes. Es decir, es muy común que haya paquetes que sean utilizados por diferentes programas, como parte de sus dependencias.

Los formatos típicos de paquetes que se suelen utilizar son .deb, para todo el universo de distribuciones basadas en Debian, y .rpm, creado por Red Hat y utilizado en muchas otras distribuciones como Fedora, openSUSE o CentOS.

Como la gestión manual de tantos paquetes y dependencias sería muy compleja de cara al usuario, ahí entran en juego los gestores de paquetes, como APT, Yum, DNF, o Pacman. Entre las principales funciones de un gestor de paquetes están las siguientes:

  • La gestión automática de las dependencias (al instalar o desinstalar paquetes).
  • La búsqueda de actualizaciones de todos los paquetes que tenemos en local, según la ultima versión disponible en los repositorios oficiales.
  • La comprobación de las sumas de verificación y firmas digitales.

Luego, aparte del gestor de paquetes en sí, pueden haber diferentes herramientas (ya sean por consola o a nivel gráfico) para hacer de interfaz gráfica del propio gestor de paquetes. Aquí te muestro una captura de Synaptic, una herramienta que corre por encima de APT, y que es todo un clásico en todo el mundo de distribuciones Debian based.

Gestor de Paquetes Synaptic

Synaptic destaca sobretodo por el equilibrio que ha consiguido lograr entre facilidad de uso y una cierta complejidad necesaria, que se traduce en ofrecer un control claro de la gestión de los paquetes de tu sistema.

A diferencia de herramientas gráficas más sencillas que se limitan a mostrar las aplicaciones en si, y hacen la gestión de paquetes por detrás (sin que el usuario sea consciente de los paquetes y dependencias implicados), aquí tienes una visión mucho más completa y transparente.

Formatos Autocontenidos. Flatpak y Snaps

El sistema de gestión de paquetes que te acabo de describir es un sistema de distribución de software que funciona desde hace años, y a mi personalmente me gusta mucho la filosofía que tiene detrás. Sin embargo, como todo, también tiene sus contras.

De entrada, es un sistema que obliga a tener que realizar una compleja gestión de dependencias, que aunque es asumida por parte del propio gestor de paquetes, a veces puede dar algún que otro problema.

A esto, hay que unirle el hecho es que no existe un único formato de paquetes estandarizado y utilizado por todas las distribuciones. Esto, aunque también tiene sus partes buenas (cada distribución es libre de adoptar y/o crear su propio sistema), dificulta en gran medida la labor de empaquetado por parte de los desarrolladores de aplicaciones, ya que obliga a tener que empaquetar su software según diferentes formatos.

Dada esta situación, en los últimos años han ido saliendo otros modelos y formatos de distribución de aplicaciones, basadas en un formato de aplicación auto-contenida (que ya incorpore dentro todos los componentes y dependencias que necesita para funcionar), y que, a la vez, sean compatibles con todas las distribuciones, facilitando en gran medida la labor de empaquetado.

Flatpak

Flatpak es un framework (así aparece en su web oficial) de distribución de aplicaciones de escritorios que puedan ser portadas a cualquier distribución Linux.

La idea es que cada aplicación está en su propio contenedor, junto con todos los componentes que precisa para funcionar. Las aplicaciones se ejecutan en su propio entorno aislado, y requieren el permiso explícito del usuario para acceder a determinados recursos de hardware o ficheros del sistema.

Flatpak es un desarrollo que forma parte del proyecto freedesktop.org, y aunque su uso ha estado inicialmente más ligado a la esfera de Red Hat, actualmente hay bastantes distribuciones que lo ofrecen, como alternativa a los clásicos gestores de paquetes.

Snappy

Snappy es un sistema de distribución de aplicaciones desarrollado por Canonical. Utiliza un formato de paquetes auto-contenidos denominado snap, y opera a través de una herramienta denominada snapd.

Un paquete snap funciona como un sistema de archivos comprimido que es montado de forma dinámica por el propio sistema operativo, antes de ejecutar la aplicación contenida en él. Esta se ejecuta, entonces, en un entorno aislado, y con acceso limitado a los recursos del sistema, de forma similar a lo que ocurre con Flatpak.

Aunque es un formato que puede funcionar en cualquier distribución GNU/Linux (aunque para ello se debe instalar previamente snapd), su uso está actual está muy ligado a Ubuntu. De hecho, en un intento de impulsar el uso de snaps, en las ultimas versiones de Ubuntu ya hay aplicaciones pre-instaladas que vienen como snap, en vez de usar la versión clásica de paquetes .deb.

Tiendas de Software

Aparte del propio gestor de paquetes en si del que disponga cada distribución, y de la disponibilidad de Flatpak o Snaps, luego también están las herramientas gráficas que se encargan de centralizar y facilitar toda la gestión.

Para ello, a nivel del entorno de escritorio, tanto GNOME como KDE Plasma disponen de sus propias aplicaciones de tienda de software, y que puedes ver un muchas distribuciones, en función del entorno utilizado. Abajo tienes una captura de la tienda de software de GNOME que puedes encontrar en Ubuntu.

Tienda de Software de GNOME

Como puedes ver, aquí se ven únicamente aplicaciones y categorías. Aunque por debajo se esté ejecutando APT y que en cada caso se deban instalar varios paquetes para satisfacer todas las dependencias, este hecho pasa totalmente inadvertido para el usuario.

Particiones y Volúmenes

Imagino que probablemente ya conoces el concepto de particiones. Si no solo debes quedarte con la idea de que son volúmenes, dentro de un mismo disco físico, de modo que, a nivel lógico, son visto como unidades totalmente independientes.

Si vienes de Windows, probablemente estás acostumbrado a la nomenclatura basada en letras para distinguir entre los diferentes volúmenes que son detectados por el sistema (tanto particiones, como unidades físicas independientes).

Así, tenemos a la unidad C, que es la partición donde se encuentra instalado el sistema operativo, y a las unidades D, E, F y sucesivas, que serían otras particiones del mismo disco, o bien de otra unidad conectada al equipo. En GNU/Linux puedes olvidarte de esto. Obviamente también hay particiones, pero no se identifican bajo esta nomenclatura.

Esquemas de Particiones

Los dos esquemas de particiones más habituales actualmente son MBR (Master Boot Record) y GPT (GUID Partition Table). En GNU/Linux puedes trabajar con uno u otro indistintamente, pero teniendo en cuenta ciertas consideraciones. Generalmente, todas las distribuciones suelen adoptar un esquema consistente en las siguientes particiones:

/                ext4
/swap            intercambio

Si quieres profundizar más en todo esto, o conocer de forma práctica como crear o editar particiones, formatear un volumen o partición, etc., te recomiendo la lectura de estos dos posts:

Administrador de Volúmenes LVM

LVM viene de Logical Volume Manager. Se trata de un gestor de volúmenes lógicos, que se podría decir que actúa a modo de capa de abstracción entre las unidades físicas de almacenamiento y los sistemas de archivos.

Básicamente ofrece una mayor flexibilidad al permitir dividir, concatenar o combinar particiones. De hecho, permite incluso combinar particiones de unidades físicas diferentes, en un mismo volumen.

Es una alternativa a los esquemas tradicionales de particiones muchas distribuciones siguen utilizando por defecto. Algunas de ellas, como Fedora u openSUSE, ya lo proponen como opción por defecto, frente al esquema habitual de dos o tres particiones. A continuación te dejo un enlace que te puede venir muy bien para profundizar más en LVM:

Cifrado de Disco LUKS

El cifrado es una de las formas más eficaces de proteger tu información personal de miradas indiscretas. A nivel de disco duro, es algo que cobra especial importancia en el caso de portátiles, al ser algo que solemos llevar encima con nosotros, y que es mucho más susceptible de que perdemos, o nos roben. En GNU/Linux, una de las opciones más conocidas que tenemos en este sentido es LUKS.

LUKS viene de Linux Unified Ley Setup, y es una especificación de cifrado a nivel del volumen, asociada muy comúnmente a LVM.  La implementación de referencia funciona en Linux, y utiliza el módulo del kernel dm-crypt como interfaz de cifrado.

LUKS es la opción de cifrado de disco completo que ofrecen la mayoría de distribuciones en sus programas de instalación. Al activar esta opción, deberás especificar una contraseña para descifrar el disco, y que el sistema te solicitará antes de arrancar el sistema operativo. Aunque lo más recomendable es habilitarlo en el mismo proceso de instalación, también puedes habilitarlo a posteriori.

La Jerarquía de Directorios

La estructura de los directorios el Linux, así como su contenido y funciones, viene definida en el denominado Filesystem Hierarchy Standard o FHS por sus siglas en inglés, que en otras palabras viene a ser el estándar de jerarquía para los sistemas de archivos en sistemas Linux y otros derivados de UNIX. A continuación tienes un esquema gráfico de como sería la estructura (a nivel muy resumido).

Jerarquía de Directorios de Linux

Básicamente tienes que saber que todos los directorios parten del directorio raíz o /. Esto se cumple independientemente de que otros directorios se encuentren en particiones distintas, o incluso dispositivos físicos diferentes.

En este espacio no pretendo profundizar en esto, pero si tienes curiosidad por conocer más a fondo cuáles son los directorios más importantes y sus funciones, te recomiendo la lectura del post que te enlazo a continuación.

Arquitectura de Usuarios, Grupos y Permisos

GNU/Linux es un sistema multiusuario. Eso significa que pueden convivir (y, de hecho, conviven) diferentes cuentas simultáneamente. Existen diferentes tipos de cuentas, en función del rol que desempeñan. Principalmente, podemos distinguir entre las siguientes:

  • Root o Superusuario: Es, por entendernos, el administrador del sistema. Es el usuario con el máximo nivel de privilegios sobre las diferentes partes del sistema, y también el responsable de la ejecución de las tareas administrativas.
  • Usuarios de sistema: Son aquellos que no representan a “personas”, sino que van asociados a determinados servicios. Esto les permite asumir ciertos privilegios relativos a él, así como a los recursos del sistema a los que necesita acceder. En cualquier instalación estándar hay muchos de ellos.
  • Usuarios estándar: Son las cuentas estándar, las que van asociadas a “personas”. Generalmente, en cualquier nueva instalación debe haber como mínimo, un usuario de este tipo, pero se pueden crear tantos como se deseen.

Para simplificar la gestión de permisos entre tantas cuentas, Linux agrupa usuarios dentro de grupos. Esto facilita la tarea de establecer permisos sobre un conjunto de cuentas. Si quieres más info sobre esto, te dejo dos posts que probablemente serán de tu interés.

La Terminal o Línea de Comandos

Actualmente, existen distribuciones GNU/Linux para multitud de propósitos, y muchas de ellas ofrecen un entorno gráfico suficientemente pulido como para permitir que puedas prescindir de la consola. Sin embargo, ésta es una herramienta enormemente potente, y su conocimiento te brindara una gran variedad de posibilidades.

Y es que, por muy pulidas que estén las interfaces gráficas de los escritorios más modernos, aun hay muchísimas cosas que se pueden hacer con la terminal y que no tienen réplica ni sustituto en el entorno gráfico. Si quieres profundizar mucho más en el uso de la terminal o línea de comandos, de dejo con una serie de posts para aprender a sacarle el máximo provecho.

En la mayoría de distribuciones, el interprete de comandos que se utiliza por defecto es Bash, que viene del acrónimo “Bourne-Again Shell”, en referencia a Bourne shell(sh), uno de los primeros interpretes de comandos de Unix. Bash es también la shell utilizada en macOS. A continuación te dejo algunos de los artículos de referencia para profundizar en los diferentes aspectos del uso de la consola.

Esto Continua

Como indico al principio, esta esta pagina forma parte de la serie de introducción a Linux y que sirve de punto de partida para todo el contenido relacionado con GNU/Linux que hay y habrá en el blog.

A continuación iré enlazando el resto de paginas, a medida que las vaya teniendo preparadas.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto:
search previous next tag category expand menu location phone mail time cart zoom edit close