¡Descarga GUIA LINUX PARA PRINCIPIANTES y más Guías, Proyectos, Investigaciones en PDF de Informática y Tecnologías de la Información solo en Docsity!
Introducción a
GNU/Linux
PID_
Gerard Farràs Ballabriga
Tiempo mínimo de dedicación recomendado: 4 horas
Gerard Farràs Ballabriga
Ingeniero técnico en Informática de sistemas por la Universidad Autóno- ma de Barcelona (UAB). Ingeniero en Informática y máster en Socie- dad de la información y el conoci- miento por la Universitat Oberta de Catalunya (UOC). Actualmente tra- baja como profesor en una escue- la de secundaria y formación pro- fesional. Anteriormente ha desarro- llado su actividad profesional en el área de sistemas de información de un centro tecnológico y también co- mo profesional autónomo ( freelan- ce ) trabajando como administrador de sistemas y desarrollador web.
El encargo y la creación de este recurso de aprendizaje UOC han sido coordinados
por el profesor: Julià Minguillón Alfonso (2020)
Primera edición: febrero 2020 © Gerard Farràs Ballabriga Todos los derechos reservados © de esta edición, FUOC, 2020 Avda. Tibidabo, 39-43, 08035 Barcelona Realización editorial: FUOC
Ninguna parte de esta publicación, incluido el diseño general y la cubierta, puede ser copiada, reproducida, almacenada o transmitida de ninguna forma, ni por ningún medio, sea este eléctrico, químico, mecánico, óptico, grabación, fotocopia, o cualquier otro, sin la previa autorización escrita de los titulares de los derechos.
1. Introducción
El objetivo de este documento consiste en ofrecer una introducción al sistema
operativo GNU/Linux para especialistas en tratamiento de datos.
GNU/Linux es un sistema avanzado, con muchas herramientas dispo-
nibles y posibilidades de automatización, estable, además de gratuito y
con licencia de software libre.
Por estos motivos, se recomienda a los estudiantes el aprendizaje de este sis-
tema operativo. Ciertamente, sería posible hacer la mayoría de operaciones
con otros sistemas, pero consideramos que este es el más adecuado. Por otro
lado, el aprendizaje sobre el funcionamiento de un sistema operativo se pue-
de realizar desde múltiples perspectivas (por ejemplo, poniendo el foco en el
funcionamiento interno del sistema, en su rendimiento o en su seguridad). No
obstante, el objetivo de este documento es ofrecer unas primeras pinceladas
iniciales sobre qué es GNU/Linux y el enfoque en los comandos necesarios
para el tratamiento de datos masivos, así que dejaremos de lado el resto de
perspectivas.
El objetivo pedagógico de este documento consiste en ofrecer una in-
troducción a los sistemas GNU/Linux para usuarios no experimentados
y en ofrecer a los estudiantes una guía para que puedan emplear este
tipo de sistemas para las tareas relacionadas con la ciencia de datos.
Nuestra recomendación para conseguir este objetivo sería disponer de un sis-
tema GNU/Linux (la manera más sencilla es empleando una máquina virtual)
y leer, en paralelo, este documento con objeto de ir probando todos los co-
mandos. Los usuarios más experimentados emplearán otros métodos para el
aprendizaje. Son los usuarios más neófitos los que necesitarán una guía inicial
para empezar. En todo caso, no se trata de memorizar comandos: a medida
que se usen, se recordarán por repetición. Así, pues, se recomienda instalar el
sistema, leer este documento y hacer algunas primeras pruebas. El orden de
lectura tampoco es excesivamente importante: se pueden leer y probar aparta-
dos concretos, no es necesario que la lectura sea lineal. A medida que el apren-
dizaje avance, esta guía perderá interés.
Usuarios experimentados
Los usuarios experimentados emplearán otros métodos pa- ra el aprendizaje, por ejemplo, utilizando los manuales inter- nos de la máquina, búsquedas avanzadas en internet y más «ensayo-error»
Respecto a la licencia pública general GNU GPL,
2
es la licencia para software
libre más utilizada, que permite hacer copias, distribuirlas (tanto en versiones
comerciales como las que no lo son) y modificar el código fuente, siempre
que cualquier modificación se continúe distribuyendo con la misma licencia.
Lo que no permite la licencia GPL es la distribución de software ejecutable
sin disponer del código fuente correspondiente. Richard Stallman, de la Free
Software Foundation, fue el primer autor del proyecto GNU, que otorgaba a los
destinatarios de un programa de ordenador los derechos correspondientes al
software libre. Se trata de una licencia copyleft , lo que significa que los trabajos
derivados se tienen que distribuir con los mismos términos.
Figura 1. Fotografía de Linus Torvalds recibiendo un premio en 2018
Fuente: imagen extraída de la Wiquipedia (en.wikipedia.org/wiki/Linus_Torvalds).
(2)GNU GPL, GNU General Public License.
Free Software Foundation
La Free Software Foundation (FSF) es una organización sin ánimo de lucro global que tie- ne como objetivo la promo- ción del software libre (en el sentido de otorgar libertad al usuario).
3. Entorno gráfico contra línea de comandos
La mayoría de sistemas operativos actuales se utilizan con entornos de venta-
nas (por medio de interfaces gráficas de usuario),^3 aunque siguen mantenien-
do la posibilidad de ser utilizados por medio de terminales. El uso de un ter-
minal es ciertamente más complicado y menos intuitivo para los usuarios no
experimentados, pero otorga más flexibilidad. Además, hay tareas que sola-
mente se pueden realizar empleando comandos de terminal. La gran ventaja
del uso de terminales consiste en la posibilidad de automatización de tareas
por medio de scripts (guiones de secuencias). Otra ventaja consiste en el hecho
de que hay multitud de herramientas que funcionan solamente por medio de
terminal, y no con software basado en ventanas.
(3)En inglés GUI, Graphical User In- terface.
Figura 2. Captura de pantalla del escritorio de una máquina con la distribución Ubuntu en entorno gráfico
Este escritorio concreto contiene dos pantallas diferentes.
Así, pues, el alumnado deberá familiarizarse con el uso de terminales en sis-
temas operativos GNU/Linux. Una vez instalado un sistema operativo GNU/
Linux en modo gráfico, hay que buscar solamente la aplicación de «Terminal»
en la barra de aplicaciones. El resto del manual que escribimos a continuación
se basará en los detalles de este entorno.
Cuando abrimos el terminal, observaremos que aparece una cadena de texto
similar a la siguiente:
usuario@nombreMaquina:$
Consejo
Aconsejamos trabajar en una instalación similar con entorno gráfico, pero será necesario aprender a utilizar los coman- dos de terminal.
1988 tar -xvf docs.tar 1989 exit 1990 hostclear 1991 clear 1992 clear 1993 clear 1994 history 1995 history | more
Y se pueden ejecutar de nuevo empleando un identificador del comando (el
número que lo acompaña), precedido de un signo de exclamación. Por ejem-
plo:
usuario@nombreMaquina:$!
De manera similar, se pueden ejecutar comandos que ya se han ejecutado an-
teriormente de manera directa empleando el carácter «!» con las primeras le-
tras del comando que se desee ejecutar. Por ejemplo:
usuario@nombreMaquina:$ !wge
Finalmente, con la combinación de teclas «control» + «r», aparece un buscador
de comandos en el que se pueden introducir letras concretas de comandos
también anteriores:
(reverse-i-search)'c': clear
4. Usuarios del sistema
El sistema operativo puede integrar varios usuarios. Durante el proceso de ins-
talación, el asistente solicitará el nombre de usuario y la contraseña para, al
menos, un usuario, además de la contraseña para el usuario administrador
(que, en entornos GNU/Linux se denomina root ). Así, pues, en un sistema ope-
rativo estándar, se dispondrá de, como mínimo, dos usuarios, un usuario root
y otro usuario normal.
La información de todos los usuarios se aloja en el fichero «/etc/password», que
contiene los campos siguientes, donde el carácter «:» actúa como delimitador.
En concreto, la información que almacena cada línea es la siguiente:
- el nombre de usuario,
- la contraseña cifrada (en las distribuciones actuales esta información está
en el fichero «/etc/shadow», así que ya no reside aquí),
- un número identificador de usuario,
- el identificador del grupo al cual pertenece el usuario,
- el nombre completo,
- la carpeta con los ficheros del usuario (se denomina técnicamente la home ),
y
- el software que actuará de intérprete de los comandos (en el caso de esta
asignatura «/bin/bash»).
Por ejemplo:
usuario@nombreMaquina:$ cat /etc/passwd | grep usuario usuario:x:1000:1000:usuario,,,:/home/usuario:/bin/bash
Con el comando id podemos conocer el identificador de usuario, y también
los grupos a los que pertenece:
usuario@nombreMaquina:$ id uid=1000(usuario) gid=1000(usuario) grupos=1000(usuario),4(adm),24(cdrom),27(sudo),30(dip), 46(plugdev),113(lpadmin),128(sambashare)
El usuario administrador que dispone de todos los permisos del sistema se
denomina root y tiene el identificador «0». Es posible «suplantar» al usuario
administrador con los comandos sudo y su. A continuación mostramos un
par de ejemplos:
usuario@nombreMaquina:$ sudo apt-get install xboard #Comando que accederá como root (con autenticación previa e instalará por medio de los repositorios de software el paquete xboard). Este comando solamente ejecutará una instrucción como superusuario.
Recomendación
Se recomienda a todos los usuarios que siempre empleen un usuario concreto (por ejem- plo, «usuario») y que no se acostumbren a trabajar habitualmente con el usuario root. Sin
5. El sistema de ficheros
El sistema operativo GNU/Linux dispone de un sistema de ficheros para
el almacenamiento de la información y los datos estructurado por me-
dio de carpetas y ficheros.
A diferencia de los sistemas basados en Microsoft Windows, GNU/Linux no
utiliza unidades tipo «C:», «D:» o «E:» para referirse a espacios de almacena-
miento, sino que toda la estructura cuelga de una carpeta inicial ( / ). De ahí
cuelga todo el árbol de carpetas y subcarpetas. A continuación mostramos al-
gunas de las carpetas que acostumbran a incluir la mayoría de sistemas GNU/
Linux:
Carpeta Contenido
/bin Contiene los ficheros ejecutables esenciales para los usuarios (los binarios).
/boot Contiene los ficheros estáticos de arrancada del sistema.
/dev Contiene los dispositivos tipo puertos USB, dispositivos de alma- cenamiento, entre otros.
/etc Contiene ficheros de configuración de software.
/home Contiene las carpetas de los usuarios. Cada usuario dispone de una carpeta dentro de esta «home», de la cual es propietario y responsable (por ejemplo, en «/home/usuario» están todos los fi- cheros del usuario «usuario»).
/lib Contiene librerías compartidas para el software.
/lost+found Contiene ficheros recuperados.
/mediao/mnt Carpeta con el punto de montaje de los dispositivos extraíbles.
/opt Carpeta con software opcional.
/proc Contiene ficheros del kernel e información de los procesos que se ejecutan en el sistema.
/root «home» del usuario root. Tal como hemos comentado anterior- mente, este usuario es el administrador del sistema.
/sbin Contiene ficheros ejecutables para la administración del sistema.
/tmp Contiene ficheros temporales.
/usr Contiene ficheros ejecutables (binarios) de los usuarios.
/var Contiene ficheros de datos variables.
A continuación veremos algunos primeros comandos de terminal para navegar
por medio de esta estructura de carpetas.
pwd^4 es la herramienta que muestra en qué carpeta reside el usuario en ese
momento. Se trata de una herramienta de cariz solamente informativo, que
mostrará al usuario en qué carpeta está y no ejecuta ninguna otra acción. Por
ejemplo:
usuario@nombreMaquina:$ pwd /home/usuario
ls es una herramienta para listar los ficheros que están en un directorio. Las
opciones más utilizadas son las siguientes:
- a mostrará todos los ficheros (los ficheros que se inician con un punto.
están ocultos y no se ven con un ls normal).
- l proporciona detalles con un formato de lista largo.
- t ordena por fecha de modificación, primero el más nuevo.
- S ordena las entradas por medida, de mayor a menor.
- r invierte el orden.
Toda la información del comando ls se puede consultar en la página del ma-
nual de la herramienta, accesible con el comando:
usuario@nombreMaquina:$ man ls
También es posible ver un resumen de los parámetros disponibles empleando
el comando:
usuario@nombreMaquina:$ ls –-help
Algunos ejemplos sencillos:
usuario@nombreMaquina:# ls CCA0.aux CCA0.synctex.gz CCA0.tex CCA1.tex
usuario@nombreMaquina:# ls -l total 16 -rw-r--r-- 1 root root 454 de ma 5 21:01 CCA0.aux -rw-r--r-- 1 root root 3803 de ma 5 21:01 CCA0.synctex.gz -rw-r--r-- 1 root root 3497 de ma 5 21:01 CCA0.tex -rw-r--r-- 1 root root 3497 de ma 10 19:22 CCA1.tex
cd es la herramienta para cambiar de la carpeta actual. Si el usuario está en
«/home/usuario/» y, ejecutando ls observamos que hay una carpeta que se
denomina «PACS», será posible acceder a ella usando el comando cd PACS.
Para regresar a la carpeta anterior, habrá que ejecutar cd ..
Es posible acceder directamente a la home del usuario usando el comando cd
sin emplear ningún parámetro. Por ejemplo:
usuario@nombreMaquina:/Projects$ pwd
(4)Proviene del acrónimo Print Wor- king Directory.
tmpfs 7,9G 81M 7,8G 2% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 7,9G 0 7,9G 0% /sys/fs/cgroup tmpfs 1,6G 16K 1,6G 1% /run/user/ tmpfs 1,6G 40K 1,6G 1% /run/user/
ln es una herramienta para crear enlaces entre ficheros (se trata del concepto
de accesos directos de Windows). Acostumbraremos a realizar soft links. Por
ejemplo:
usuario@nombreMaquina:$ ln -s /etc/passwd contraseñas.txt #Este comando creará en la carpeta actual un fichero contraseñas.txt que será un acceso directo a /etc/passwd. usuario@nombreMaquina:$ ls -l lrwxrwxrwx 1 usuario usuario 11 de ju 22 11:13 contraseñas.txt -> /etc/passwd
El primer carácter de la línea anterior es una «l», que indica que se trata de
un enlace ( link ).
chown es la herramienta que hay que utilizar para cambiar el propietario de
un fichero. Cada fichero pertenece a un propietario y también a un grupo
propietario. Examinemos el ejemplo siguiente:
usuario@nombreMaquina:$ touch hola.txt #Con este comando crearemos un fichero hola.txt. usuario@nombreMaquina:$ ls -l hola.txt #Y con este otro comando veremos quién es el propietario. -rw-r--r-- 1 usuario usuario 0 de ju 22 11:15 hola.txt
El primer «usuario» se refiere al usuario propietario del fichero. El segundo
se refiere al grupo propietario. En los ficheros «/etc/passwd» se pueden ver el
listado de usuarios existentes en un sistema. En el fichero «/etc/group» está el
listado de los grupos. En este caso concreto, hay un grupo que se denomina
igual que el usuario, aunque no siempre es así.
Con el comando siguiente estableceremos el cambio de propietario y de grupo
propietario del fichero «hola.txt». Para traspasar un fichero para que sea pro-
piedad de root , habrá que emplear la herramienta sudo, que permite ejecutar
comandos como si fuéramos root.
usuario@nombreMaquina:$ sudo chown root:root hola.txt usuario@nombreMaquina:$ ls -l hola.txt -rw-r--r-- 1 root root 0 de ju 22 11:15 hola.txt
chmod es la herramienta empleada para cambiar los permisos de ficheros. En
entornos GNU/Linux, hay tres permisos y tres tipos de usuario:
Permisos Usuarios
«r» de lectura «u», el propietario del fichero
«w» de escritura «g», el grupo propietario
«x» de ejecución «o» para el resto
Para un fichero, «ejecutar» significa poder ejecutar el programa que hay den-
tro. Para un directorio, el permiso de ejecución es necesario para hacer cual-
quier cosa dentro de la carpeta.
usuario@nombreMaquina:$ ls -l script.sh -rw-r--r-- 1 usuario usuario 0 de ju 22 11:15 script.sh
Con este comando observamos los permisos de este hola.txt. El usuario root
puede hacer rw- (puede leer y escribir, pero no ejecutar, el grupo propietario
puede solamente leer r-- y, finalmente, el resto de usuarios, pueden solamen-
te leer r--). El primer guion sirve para conocer de qué tipo de fichero se trata
(las carpetas contienen una «d» y los enlaces una «l», tal como hemos visto
previamente).
Para otorgar permiso de ejecución, podemos realizar lo siguiente:
usuario@nombreMaquina:$ chmod u+x script.sh
Y ahora:
usuario@nombreMaquina:$ ls -l script.sh -rwxr--r-- 1 usuario usuario 0 de ju 22 11:15 script.sh
El parámetro u del comando chmod se refería al usuario. De manera similar,
podríamos haber empleado g para el grupo y o para los otros.
Hay otra manera de emplear el comando chmod. Consideramos que los per-
misos consisten en tres números (observamos que hay tres permisos para tres
objetos –usuario, grupo y el resto). Consideramos ahora estos permisos en bi-
nario (un «0» si no se le otorga y un «1» si se le otorga). De binario, traspasa-
mos a decimal.
Por ejemplo:
- 7 se escribe en binario 111.
- 5 se escribe en binario 101.
- 1 se escribe en binario 001.
Es posible establecer permisos empleando esta codificación:
usuario@nombreMaquina:$ chmod 751 fichero.txt usuario@nombreMaquina:$ ls -l fichero.txt -rwxr-x--x 1 usuario usuario 0 de se 16 06:44 fichero.txt
En este caso, el usuario «usuario» puede realizar todas las operaciones (leer, escribir y ejecutar), que se leería como 111 y en binario corresponde al número 7, el grupo «usuario» solamente leer y ejecutar (r-w), que en binario se leería 101 y corresponde al número 5 y, finalmente, el resto de usuarios solamente ejecutar (--x), que en binario se leería 001 y corresponde al número 1.
El comando para la creación de la base de datos se tiene que realizar como root :
usuario@nombreMaquina:$ sudo updatedb
Hay que ejecutar este comando a menudo. Idealmente, se pone en el Cron
para que se ejecute de manera automática.
Con la base de datos construida, ya es posible buscar ficheros:
usuario@nombreMaquina:$ locate mkpasswd /usr/bin/grub-mkpasswd-pbkdf /usr/bin/mkpasswd /usr/share/man/man1/grub-mkpasswd-pbkdf2.1.gz /usr/share/man/man1/mkpasswd.1.gz
7. Manipulación de ficheros
En este apartado trataremos el tema de la manipulación de ficheros por medio
de las herramientas de un terminal con GNU/Linux.
Primero empezaremos indicando en qué consisten los descriptoresde
ficheros : se trata de enteros positivos que representan ficheros abiertos.
En el supuesto de que el sistema disponga de cincuenta ficheros abiertos, ha-
brán cincuenta descriptores que apunten a estos. Dado que en los sistemas
operativos basados en Unix todo es un fichero, los procesos incorporan des-
criptores«especiales» :
Descriptor Tarea Operador
stdin Un descriptor de fichero que representa la entrada de datos de los procesos y al que se le asigna el entero 0.
stdout Un descriptor de fichero que apunta dónde se publican los resultados de las ejecuciones y al que se le asigna el entero 1.
stderr Un descriptor que apunta en el fichero dónde se incor- poran los errores y al que se le asigna el 2.
En el ejemplo siguiente, el resultado del comando ls se redirige a un fichero
externo:
usuario@nombreMaquina:$ ls -l > ficheros.txt
Hay que tener en cuenta que, en el supuesto de que «ficheros.txt» ya existiera,
se sobrescribiría y se perdería la información que contuviera. En el supuesto
de que se desee agregar información al ya existente, habría que emplear el
operador >>.
Por ejemplo, el comando siguiente agregaría a «ficheros.txt» el resultado del
comando pwd:
usuario@nombreMaquina:$ pwd >> ficheros.txt
La entrada estándar también se puede modificar empleando el carácter <. Por
ejemplo:
usuario@nombreMaquina:$ sort < listado.txt
Operadores
Con los operadores es posible sobrescribir los descriptores.