
Como ya se ha mencionado antes, una distribución o sabor es
el conjunto del núcleo o kernel Linux con varias herramientas com
plementarias GNU. Por lo tanto, y aunque muchos lectores expertos
pueden no estar de acuerdo con esta idea, nos atrevemos a afirmar
que para el usuario medio o incluso experto, acabaría siendo indi
erente la distribución con la que se empezara a trabajar: al final,
seguirá utilizando como base el mismo kernel, y reunirá, entre las
herramientas con las que viene la propia distribución, y las que con
siga a través de los repositorios o de la red, el conjunto de aplicaciones informáticas con las que realmente necesite trabajar. Así, por
ejemplo, podemos empezar con una distro (distribución) Ubuntu,
que popularmente se concibe como una de las más amigables para
el no iniciado, y que incorpora por defecto un escritorio Gnome,
y cambiarlo por el más espectacular y agradable a la vista KDE. Si
no nos gusta el navegador Firefox que incorpore, podemos cambiar
o por Opera, Chrome,... las posibilidades son infinitas.
En los próximos apartados, trataremos de hacer un repaso de las características comunes a todas las distribuciones con base GNU/
Linux, a efectos de proporcionar una base teórica con la que el
nuevo aficionado pueda sentirse más seguro en su viaje por nuestro mundo. Empezaremos con la preparación del disco duro, su forma
de organizar los archivos, los tipos de usuario y los correspondien
tes permisos de lectura/escritura, y a continuación pasaremos a analizar los dos escritorios más populares (al menos para nosotros):
KDE y GNOME. Analizaremos el sistema de instalación de aplicaciones en el S.O. en base a los repositorios, para terminar echando
una ojeada sobre el terminal BASH (uno de los más populares), que
suele ser la bestia negra que distinguirá al usuario noob (novato) del
que realmente empieza a avanzar como linuxero.
Pasen y vean. Particiones y formatos lógicos
Hablaremos en estas líneas del modo que tiene GNU/Linux de
organizar y localizar la información en los distintos archivos en
sus sistemas de almacenamiento, sean discos duros, lápices USB,
disquetes (¿alguien los utiliza todavía?), etc.
En primer lugar, hay que aclarar que el no iniciado debe
olvidarse por completo de lo que estaba acostumbrado a ver en
Windows. El mítico Mi PC nos ofrecía en una ventana una imagen
rápida de los distintos sistemas de almacenamiento antes mencionados, nombrados alfabéticamente: C:/, D:/, etc., para discos duros,
A:/ para disquetes, y así sucesivamente.
En Linux, por sistema, se ignoran los discos que no se utilicen.
Los que se utilizan, se dice que están montados (es decir, se destina
parte de los recursos del ordenador a acceder a su contenido). El
resto, simplemente se ignoran, logrando una mayor eficiencia en la
gestión de la memoria. Pero volveremos más tarde sobre ello. El caso es que los discos duros, sobre los que normalmente se
asentarán los sistemas operativos, se organizan según un formato
lógico que asignará unos sectores del disco a unos tipos de archivo
en particular. Cuando queremos utilizar más de un sistema de archivos en un mismo disco duro (separar software de datos, o instalar
más de un sistema operativo), debemos dividir previamente el disco
duro en más de una partición (división dentro del disco duro). Windows utiliza los formatos lógicos FAT, FAT16, FAT32
y NTFS. Linux, en cambio, utiliza los formatos EXT2, EXT3 y EXT4,
entre otros.
La instalación de cualquier sistema operativo GNU/Linux pasará por la división del disco que la va a alojar, al menos en dos
particiones distintas: la partición raíz (/), y la partición swap o memoria de intercambio. En el siguiente apartado nos ocuparemos de
la primera. En cuanto a la memoria de intercambio, baste decir que
es un apartado dentro del disco duro que se reserva para procesos
poco activos, pero presentes, dentro de la memoria, de modo que
estén disponibles para cuando se necesiten, pero al mismo tiempo
no ocupen espacio dentro de la memoria RAM con la que trabaja
directamente el microprocesador.
En GNU/Linux, herramientas como Gparted nos ayudan
a organizar y administrar particiones y formatos lógicos dentro
del disco.
Sistema de archivos en GNU/Linux.
Como se decía en el anterior apartado, asignábamos a los formatos
lógicos la responsabilidad de organizar la información dentro de
la partición en un determinado sistema de archivos y carpetas. En
concreto, los formatos EXT* disponen de un árbol de directorios
estandarizado e inamovible en la partición raíz (/):
• /bin: para guardar comandos de usuario,
• /boot: información sobre el arranque del sistema,
• /dev: dispositivos presentes en la máquina (montados y no
montados),
• /etc: archivos de configuración de las aplicaciones,
• /home: carpeta reservada para alojar los distintos documentos
de cada usuario. Hay una carpeta por usuario, que es el único
con permisos de escritura en dicha carpeta,
• /lib: para alojar librerías necesarias en distintas aplicaciones,
• /media: a través de esta carpeta, se puede acceder a la infor-
mación de los dispositivos presentes en /dev que hayan sido
previamente montados,
• /mnt: actualmente no tiene mucha utilidad. Es el predecesor de
/media,
• /proc: aloja información sobre el estado de los procesos y el
kernel,
• /root: reservado para el administrador del sistema.
• /sbin: aloja comandos disponibles sólo para el administrador
(root),
• /tmp: carpeta disponible para archivos temporales,
• /usr:en esta carpeta se alojan todos los archivos que se juzganrelativos a aplicaciones del usuario, documentación, etc. En
fin, todo lo que no es encuadrable en el resto de carpetas,
• /var: en esta carpeta se aloja información de tipo variable: diarios o logs de sistema, cuentas de correo, sitios web alojados en un servidor dentro del ordenador, etc.
El sentido de esta organización es el de tener asignado un lugar
específico para cada tipo de archivo. En consecuencia, aunque un usuario, sea gráficamente o a través de consola, pueda acceder
otras carpetas aparte de la que corresponde realmente a su cuenta
(/home/nombredeusuario/), no podrá estropear nada accidental mente o a propósito, puesto que sólo el usuario con permisos de
superusuario o administrador (el consabido root) tendrá atribuciones para modificar archivos en las carpetas.
Además, siempre se le solicitará la introducción de su contraseña de superusuario, lo
que añade un grado más de seguridad a dicho sistema de archivos.
En otro orden de cosas, el avispado lector puede empezar a imaginar ya la dificultad de intentar introducir malware o software
malicioso en un ordenador organizado de este modo. Aquí, un
virus tiene mucho más difícil el instalarse por su cuenta oculto
en el seno de otro programa, entre otras razones, que luego se
verán, porque se vería obligado a denunciarse a sí mismo al pedir
al usuario la contraseña de administrador para obtener permiso de
instalación. De todos modos, y como se verá después, la filosofía de trabajo a la hora de instalar nuevo software también varía bastante.
Eso sí, ¡cuidado!. No pretendemos decir con esto que
GNU/Linux sea invulnerable a ataques malintencionados, porque
la vulnerabilidad siempre está sujeta a las reacciones del propio
usuario. Sí podemos afirmar que será un sistema estable, que bien
utilizado, dificultará muchísimo el acceso externo por parte de
personas no autorizadas a nuestro equipo.
Hablemos ahora de los permisos de usuario. En GNU/Linux,
sólo un usuario tiene atribuciones de lectura y escritura sobre las
carpetas y archivos fuera de la carpeta de su propia cuenta en /home: el administrador o superusuario, denominado root. Cualquier
intento de creación, modificación o borrado de un archivo, así como de instalación de nuevo software, exigirá la introducción
previa de la contraseña de superusuario. A nivel de consola,
cualquier comando que suponga trabajar a este nivel, deberá ser precedido del término sudo, que indica que la orden tecleada
corresponde a un superusuario que espera se le pida el password
para identificarse.
Fuera del root, en GNU/Linux se consideran tres tipos de iden
tificación de usuario:
• Propietario del archivo o carpeta,
• Grupo de usuarios al que pertenece el propietario,
• Otros usuarios no enmarcados en los grupos anteriores.
Cada uno de los cuales puede tener, o no, permiso para:
• Leer el archivo,
• Escribir o borrar el archivo,
• Ejecutar el archivo.
Cada archivo tiene asignado un permiso de lectura/escritura/
ejecución para cada uno de los tipos de usuario antes mencionado,
según esta terminología numérica: 0 para ningún tipo de permiso,
1 para lectura, 2 para escritura, y 4 para ejecución. Según los permisos que se asignen a cada tipo de usuario, que se suman entre sí,
tendremos una tríada que oscilará entre 000 y 777.
Comprendemos que es un concepto algo difícil al principio;
por eso queremos ilustrarlo con un ejemplo. Supongamos que tenemos dos grupos de usuarios asignados en un PC con kernel Linux:
profesores y alumnos.
En el primer grupo, tenemos los usuarios
profesor1 y profesor2. En el segundo grupo, tenemos los usuarios
alumno1 y alumno2. Imaginemos que el usuario profesor1 es
poseedor del archivo examenhistoria.txt, en su carpeta de cuenta
/home/profesor1. Por otro lado, el usuario alumno1 es el propietario del archivo ejecutable chuletasparaexamen.sh, en su carpeta
/home/alumno1.
En un principio, el archivo examenhistoria.txt tiene los permisos 710. ¿Qué permisos tendrán los otros usuarios sobre dicho
archivo? Analicémoslo. Según lo expuesto, el sistema numérico
indica los permisos, por orden, para el propietario, para el grupo,
y para otros usuarios. Por lo tanto:
• El propietario, profesor1, tiene asignado el número 7, que corresponde a los permisos sumados 1+2+4. Esto es, profesor1
tiene permisos de lectura, escritura y ejecución (aunque el
archivo es de texto, no es un ejecutable en este ejemplo) sobre
examenhistoria.tx
• Los otros usuarios del grupo de profesor1, profesores, tienen el permiso 1 sobre ese mismo archivo. Es decir, como no se
puede dividir este permiso como suma de otros números, el
otro usuario del mismo grupo (profesor2) tiene permisos de
lectura sobre examenhistoria.txt. El usuario profesor2 podrá leer, aunque no modificar, dicho archivo.
• Los usuarios alumno1 y alumno2, que no pertenecen al grupo antes mencionado, tienen permiso 0 (ningún permiso) sobre el
archivo. No podrán leer, ni mucho menos modificar o ejecutar,
un archivo con ese número de permiso.
Siguiendo con el ejemplo, el archivo chuletasparaexamen.sh, un
ejecutable que (por ejemplo) generara "apuntes de apoyo" para el
próximo examen del alumno, tiene asignado el número de permiso
541. En base a eso:
• El propietario, alumno1, tiene el permiso 5, como resultado
de sumar 4+1. Esto es, alumno1 puede ejecutar este archivo,
así como leerlo para poder analizar su estructura de progra
mación.
• Los otros usuarios del mismo grupo alumnos, alumno2 en este
caso, tendrán el permiso 4. Esto es, alumno2 también podrá generar "apuntes de apoyo", si bien no podrá leer ni mucho
menos modificar dicho archivo.
• Curiosamente (y a efectos ilustrativos de nuestro ejemplo), el
permiso asignado a otros usuarios es 1, que correspondería a la
lectura del archivo para un posible análisis, aunque no parezca
lógico darle un permiso que no tienen los usuarios del mismo
grupo que el propietario.
Gráficamente, (usando escritorios como Gnome o Kde), podemos ver y, si somos propietarios, modificar estos permisos mediante
el ya familiar proceso de hacer clic derecho–>Propiedades–>
Hacer clic en la pestaña Permisos. Si trabajamos a través de ter
minal, el comando utilizado es chmod (ejemplo: chmod 777 chuleta
sparaexamen.sh dará todos los permisos a todos los usuarios, si
nos hemos identificado como alumno1. Si no somos tal usuario,
se nos dará un mensaje de error).
Entornos de escritorio.
Las distribuciones GNU/Linux actuales cuentan con un sistema
gráfico que permite al usuario un manejo amigable, fácil e intuitivo del ordenador. Con base en el software gráfico X Window
System, orientado a Unix, y que va en la actualidad por la versión X11, los entornos de escritorio cuentan con un sistema de
ventanas de idéntico (prácticamente) funcionamiento a los S.O.
Windows y MAC OS (minimizado, maximizado, cierre de ventanas, menús desplegables, teclas de atajo de teclado, fondos de
escritorio, colores, etc.).
Muy interesante resulta recalcar que, a diferencia de los otros
sistemas operativos no libres, queda en manos del usuario elegir
qué entorno de escritorio desea utilizar. Si no queda satisfecho con
el que viene por defecto con la distribución elegida (por ejemplo,
Gnome para Ubuntu, o KDE para Mandriva), puede utilizar el sistema de repositorios (en próximos apartados se explica) para instalar
otro u otros de su agrado. Puede incluso mantener en convivencia
más de un entorno, eligiendo cuál le apetece usar en cada inicio de
sesión de usuario.
El sistema de trabajo por menús de todos los escritorios, salvando las lógicas distancias, es altamente intuitivo, incluso para el
usuario no iniciado. Normalmente, se hará una división de menús
por tipo de posibilidad (separando aplicaciones, explorador de
archivos y utilidades de configuración del sistema).
Algunos ejemplos de entornos de escritorio son:
• KDE y GNOME (ampliamente mencionados desde el principio del artículo),
• Window Maker,
• Ice Wm,
• Blackbox,
• Flushbox.
Tradicionalmente, se ha sostenido que KDE es gráficamente más
rico y vistoso que Gnome, además de otorgar muchas más posibi
lidades de configuración al usuario, si bien exige más recursos al
sistema, y Gnome es mucho más estable. En la actualidad, aplica
ciones como Compiz añadidas al software original, mejora la apariencia gráfica y acerca visualmente ambos escritorios.
Instalación de nuevo software.
La instalación de nuevo software en un S.O. GNU/Linux centra
su base en la utilización de los repositorios. Un repositorio viene
a ser un sitio con una dirección web determinada donde se almacena
y mantiene información digital, normalmente en forma de archivos
informáticos.
Cuando nuestro ordenador está equipado con un sistema operativo libre, dispone de una lista de direcciones de repositorios,
normalmente en el archivo /etc/apt/sources.list (el lector puede consultarlo, si bien no modificarlo directamente, a causa del es
tablecimiento de permisos de archivo mencionado en anteriores
apartados).
El sistema de repositorios utilizado en GNU/Linux permite la
instalación de nuevo software mediante la gestión de paquetes. Según esta definición, un paquete consistiría en un conjunto de software, normalmente encapsulado en un único fichero, que incluiría
información adicional como el nombre completo, la identificación
del distribuidor, una descripción de sus funciones, y sobre todo, la
relación de otros paquetes que se requieren para el correcto funcionamiento del software en cuestión. Lo que nos lleva al concepto
de dependencia. En GNU/Linux, como en cualquier otro sistema
operativo, si nos hace falta un software determinado para conseguir que otro funcione, y no lo tenemos instalado, lógicamente no
funcionará. Pero si en el paquete que estamos instalando se hace
una referencia a dicho software del que dependemos, es posible
que el propio proceso de instalación localice, descargue (cuando
hablamos de Internet, un 90% de las veces) e instale esos paquetes
complementarios.
De este modo, el usuario no necesita saber nada sobre métodos
de instalación, localizar el archivo dentro del conjunto que inicia
el proceso, decidir la carpeta donde se guardará el programa...
El
propio sistema operativo, una vez se le ha indicado el software
que se desea, buscará en su base de datos el nombre del paquete,
localizará el repositorio donde se localiza dicho paquete, lo descargará a memoria, leerá la información contenida en él y realizará la
instalación, resolviendo las dependencias que dicho paquete señale
(esto es, descargando e instalando los programas complementarios que dicho paquete declare necesitar).
Aunque uno de los repositorios normalmente suele ser el propio
CD de instalación que hemos utilizado para instalar el sistema ope
rativo que estemos utilizando, lo más normal es que la instalación
de nuevos programas mediante paquetes requiera la utilización de
Internet.
Los paquetes en Linux suelen tener la extensión *.deb, para sistemas operativos provenientes del sistema Debian (Debian, Ubuntu,
Molinux, y varios más) y *.rpm, para los derivados del originario
Red Hat (Fedora, Mandriva, Suse,...).
En ocasiones, el usuario que empieza a adquirir algo de
experiencia requiere la instalación de un software que no está incluido en los paquetes universales que por defecto incorpora
su distribución. En esos casos, una breve investigación en la red
le permitirá conocer la dirección del repositorio que necesita
utilizar, sea mediante consola, identificándose como root y modificando el archivo /etc/apt/sources.list, sea utilizando el menú de
configuración de opciones del sistema donde se haga referencia a
tal posibilidad. Por ejemplo, en los sistemas operativos derivados
de la distribución Debian, como Ubuntu o Molinux, dicha posibilidad se encuentra en Sistema->Administración->Orígenes del
software.
Todos los entornos de escritorio incorporan una utilidad directa
de instalación de nuevo software de manera gráfica, utilizando los
repositorios. Sin embargo, el software, diríamos, básico en que se
apoyan todas estas utilidades sigue siendo el elemento gestor de pa-
quetes; por ejemplo, Synaptic en Gnome, Rpmdrake para Mandriva
o Yast en OpenSuse.
Naturalmente, estas aplicaciones gráficas son implementaciones desde el escritorio de aplicaciones a más bajo nivel, escritas
normalmente en C, que pueden correrse directamente bajo consola.
El ejemplo con el que los redactores de este artículo nos sentimos
más cómodos es con dpkg, el gestor de paquetes deb, que pueden
utilizar las aplicaciones apt-get o aptitude, con la opción install,
(otros son yum o urpmi). Veamos un ejemplo de consola (de la que
hablaremos a continuación); supongamos que deseamos instalar un
videojuego llamado crafty:
antonio@antonioelmalo:
~$ sudo aptitude install crafty
El comando sudo indica que nos deseamos identificar como usuario
root, con permisos de administración:
[sudo]password for antonio:******
Introducimos nuestra contraseña; a continuación, se nos va infor-
mando del progreso de la instalación:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se nos comunica la relación de paquetes que se procederán a instalar, para resolver todas las dependencias:
Se instalarán los siguiente paquetes NUEVOS:
crafty crafty-books-medtosmall{a} gnuchess{a}
gnuchess-book{a} xaw3dg{a}
xboard{a}
0 paquetes actualizados, 6 nuevos instalados, 0 para
eliminar y 0 sin actualizar.
Necesito descargar 5829kB de ficheros. Después de
desempaquetar se usarán 13,5MB.
¿Quiere continuar? [Y/n/?] y
A partir de aquí, la consola devuelve la relación de direcciones de
repositorios desde donde se va descargando cada paquete, así como
el progreso de la instalación. Si al finalizar el proceso, hubiera cual
quier problema, el terminal nos lo comunicaría.
El usuario no iniciado, de todos modos, siempre contará con
alguna herramienta de corte gráfico más simple que no proporciona tanta información, posiblemente densa y excesiva para el
principiante, y que cumplirá igualmente con su objetivo.
Una de
nuestras preferidas, en las últimas versiones de Ubuntu, se encuentra en el menú de Gnome Aplicaciones->Centro de software
de Ubuntu... |