Está en la página 1de 104

9.

EXPLOTACIÓN DEL
SISTEMA OPERATIVO LINUX.

1
1. Introducción

En esta unidad realizaremos gestiones de


administración en del sistema operativos visto Linux
utilizando como base Ubuntu 20.04, la gestión de
ficheros, administración de procesos, acceso a
recursos, comandos, etc.

2
1. Init

Init es el primer proceso que se ejecuta durante el


inicio del sistema en modo usuario (userland), luego
de la carga del kernel. El proceso init es un demonio
que continua su ejecución hasta que el sistema se
apaga. Es el padre de todos los procesos (de forma
directa o indirecta) y es quien adopta
automáticamente los procesos huérfanos. Es iniciado
por el kernel utilizando un nombre de archivo hard-
coded, y si el kernel no es capaz de iniciarlo, el
resultado es un kernel panic.

3
3. Interfaz de Linux
Ya hemos vistos en unidades anteriores que es un
interfaz, en Linux podemos encontrar interfaz de texto y
gráficas.
En GNU/Linux existen multitud de entornos gráficos que
ofrecen un gran abanico de posibilidades para los
usuarios. El motivo es que en los sistemas operativos de
la familia Unix, la interfaz gráfica se ejecuta como una
capa por encima de la interfaz de texto. Esta capa recibe
el nombre de X Windows System y es la encargada de
dibujar las ventanas, botones, cuadros de texto, etc.,
además de gestionar los eventos que los afecte (clic de
ratón, combinaciones de teclas, etc)..

4
3. Interfaz de Linux
Sobre X Windows se ejecutan los gestores de ventanas,
que se encargan de especificar cómo debe dibujarse cada
elemento. Del gestor de ventanas depende el aspecto, la
capacidad de personalización, etc. Algunos ejemplos son:
Kwin, Fluxbox, Openbox, Metacity o Icewm entre otros.
Para facilitar el uso de los gestores de ventanas se han
creado librerías, llamadas toolkits. Las más usadas son:
• GTK (Gimp toolkit)
• QT (Cute).
La última capa de esta estructura son los entornos de
escritorio, que se apoyan en los toolkits para ofrecer el
aspecto final que obtiene el usuario. De ellos depende la
integración entre aplicaciones y el comportamiento
general de la interfaz.
5
3. Interfaz de Linux

Como entornos de escritorio tenemos: KDE, Gnome,


Xfce, Lxde, E17 o Cinnamon.

6
3. Interfaz de Linux

Ademas de la interfaz gráfica Linux posee interfaz de


comandos aunque existen muchos intérpretes de
comandos para los sistemas GNU/Linux, el más
extendido es Bash (del inglés, Bourne again shell). La
escribió Brian Fox para el proyecto GNU en 1987. Se
basaba en Bourne, la interfaz de texto más común de
los sistemas Unix. De ahí su nombre, que proviene de
un juego de palabras, ya que born-again significa
renacimiento.

7
3. Interfaz de Linux

Para acceder al intérprete de comandos en Ubuntu


basta con hacer clic sobre el icono Mostrar
aplicaciones del escritorio y comenzar a escribir la
palabra Terminal.

8
3.1 Interfaz de Linux. Comandos básicos

Linux desde el interprete de comandos o CLI,


proporciona una potencia y versatilidad difícil de
encontrar en el sistema gráfico. Por este motivo
muchos usuarios prefieren usar comandos Linux para
realizar las tareas que necesiten en su sistema
operativo.
Aquí hay un serie de comandos básicos que todo
usuario debe conocer.

9
3.1 Interfaz de Linux. Comandos básicos

Linux desde el interprete de comandos o CLI,


proporciona una potencia y versatilidad difícil de
encontrar en el sistema gráfico. Por este motivo
muchos usuarios prefieren usar comandos Linux para
realizar las tareas que necesiten en su sistema
operativo.
Aquí hay un serie de comandos básicos que todo
usuario debe conocer.

10
3.1 Interfaz de Linux. Comandos básicos

Comando ls
El comando ls se utiliza para listar los archivos y
directorios que existan dentro de otro directorio.
También se puede combinar con otros parámetros para
ver información adicional, por ejemplo, -l. Ejemplos:
• ls -l
Muestra el listado por columnas y con detalles.
• ls -a
Nos muestra los archivos y directorios dentro del
directorio actual, incluyendo los archivos y directorios
ocultos..

11
3.1 Interfaz de Linux. Comandos básicos

Comando cd
Con el comando cd se puede cambiar el directorio en el
que nos encontramos en la terminal. En un sistema
operativo de escritorio, equivaldría a hacer doble click en
una carpeta para abrirla y ver su contenido. Ejemplos:
• cd ..
Sube directamente un nivel respecto al directorio en
el que nos encontramos.
• cd /nombre-directorio
Abre el directorio especificado en la ruta.

12
3.1 Interfaz de Linux. Comandos básicos

Comando pwd
Con el comando pwd se pude ver el nombre del
directorio en el que esta el terminal. Sería como
preguntar al sistema ¿Dónde esta?, algo muy útil en un
sistema gestionado desde la línea a de comandos.

13
3.1 Interfaz de Linux. Comandos básicos

Actividad. Pruebe los comandos anteriores (ls,


cd, pwd) en el terminal de Linux. Capture el
resultado.

14
3.1 Interfaz de Linux. Comandos básicos

Comando mkdir
El comando mkdir se utiliza para crear los directorios que
se necesiten desde la línea de comandos. Para usarlo se
debe poner el comando mkdir seguido del nombre del
directorio que quieres crear. También se puede usar /
para crear un directorio dentro de otro directorio.
Ejemplos:
• mkdir Directorio1
Esto creará un directorio con el nombre establecido.
• mkdir Directorio1/Directorio2
Esto creará el Directorio2 dentro del Directorio1.

15
3.1 Interfaz de Linux. Comandos básicos

Comando rmdir
Se puede eliminar y para esto se utiliza el comando
rmdir. Sólo se puede borrar directorio que no tengan
contenido dentro y no pide confirmación, cuando se
utiliza el comando rmdir, lo borrará. Ejemplos:
• rmdir Directorio1
Elimina el Directorio1, siempre que esté vacío.
• rmdir Directorio1/Directorio2
Borra el Directorio2.

16
3.1 Interfaz de Linux. Comandos básicos

Actividad. Cree el directorio SOM, muéstrelo y


después bórrelo. Capture todo los pasos.

17
3.1 Interfaz de Linux. Comandos básicos

Comando touch
El comando touch permite crear un documento con el
nombre que le asigne, listo para su edición. Su uso es
muy sencillo y no copia ninguna información. Ejemplos:
• touch archivo1.txt
Para crear un archivo simple con el nombre y la extensión
que queramos.
• touch archivo1.txt archivo2.txt archivo3.txt
Esto crea todos los archivos que indiquemos de golpe.

18
3.1 Interfaz de Linux. Comandos básicos

Comando cat
El comando cat se utiliza, principalmente, para ver el
contenido de un archivo o para crear un archivo en el
que poder escribir. Ejemplos:
• cat nombre-archivo.txt
Esto mostrará el contenido del archivo en la
terminal.
• cat > nombre-archivo.txt
Al usar > creamos el archivo con el nombre indicado
para editarlo y añadir el texto que queramos.
• cat archivo1 archivo2 > archivo3.txt
Copia el contenido de varios archivos a un tercero..

19
3.1 Interfaz de Linux. Comandos básicos

Actividad. Crear un archivo con el comando touch,


añadir texto y utilizar el comando cat para ver el
contenido.

20
3.1 Interfaz de Linux. Comandos básicos

Comando rm
Si lo que necesitas es borrar un archivo, el comando rm
el que tienes que utilizar. La acción de borrado con rm es
irreversible, así que hay que tener precaución con su uso.
Ejemplos:
• rm archivo1.txt
Para el eliminar el archivo indicado totalmente.
• rm -r
Con este modificador se eliminan todos los archivos y
subdirectorios.

21
3.1 Interfaz de Linux. Comandos básicos

Actividad. Eliminar un archivo creado con el comando


rm.

22
3.1 Interfaz de Linux. Comandos básicos

Shutdown
Se encarga de apagar el sistema de forma segura. Todos los
usuarios logueados son notificados y se deshabilita el login. Es
posible apagar el sistema inmediatamente o luego de cierto
período de tiempo. También da la posibilidad a todos los servicios a
detenerse de forma limpia.
• Para reiniciar el sistema inmediatamente, ejecutar:
shutdown -r now
• Otro ejemplo, para apagar el sistema a las 23:59, ejecutar:
shutdown -h 23:59

23
3.1 Interfaz de Linux. Comandos básicos

Shutdown
Una característica interesante de shutdown, es que permite
cancelar un apagado que está esperando mediante la opción -c. Por
ejemplo, si se ha programado un apagado a las 12:35, es posible
cancelarlo en cualquier momento ejecutando shutdown -c:

24
3.1 Interfaz de Linux. Comandos básicos

Actividad. Utilice el comando shutdown para reiniciar el


sistemas y programa el apagado para dentro de cinco
minutos. Capture los pasos.

25
4. Niveles de ejecución

Los niveles de ejecución de los sistemas operativos basados en


Unix, también conocidos como run leves, en inglés, indican el modo
en el que el sistema será iniciado. Los niveles son indicados
mediante los números del 0 al 6. En la mayoría de los Unix y
distribuciones Linux (aunque no podría decir que en todas) el nivel
de ejecución en son los siguientes:
• 0 Indica halt o apagado de la máquina.
• 1 Indica monousuario.
• 2 Indica modo multiusuario sin soporte de red.
• 3 Indica modo multiusuario completo con soporte de red.
• 4 No usado, con esta opción el administrador puede personalizar el inicio
para cargar algún servicio.
• 5 Indica multiusuario completo con inicio gráfico (X11)
• 6 Indica shutdown y reboot: Se apaga inmediatamente la máquina para
reinicio.

26
4. Niveles de ejecución

Para ver en qué nivel está siendo ejecutado nuestro


sistema operativo utilizamos el siguiente comando:
El comando “runlevel” nos indica en qué nivel se ejecutó
nuestro sistema operativo.
El comando “who -r” nos indica una detalle del nivel en
que se ejecutó el sistema operativo, la fecha y hora en
que se ejecutó.

27
4. Niveles de ejecución

Actividad. Ejecute los comandos “runlevel” y “who –r”


para ver el nivel de ejecución de nuestro sistema
operativo.

28
4. Niveles de ejecución

En Ubuntu niveles de ejecución los puedes encontrar en las


carpeta que /etc/rcX.d, donde la “X” representa los niveles de
ejecución vistos anteriormente.

29
4. Niveles de ejecución

En Ubuntu niveles de ejecución los puedes encontrar en las carpeta


que /etc/rcX.d, donde la “X” representa los niveles de ejecución
vistos anteriormente.
Cada fichero es un enlace simbólico que ejecutará un script, alojado
en la carpeta /etc/init.d.
El nombre de los enlaces simbólicos tiene una lógica que seria:
• La primera letra del nombre puede ser una K que significa kill o
una S que significa start.
• Un número de dos dígitos, del 1 al 99, que se refiere a la prioridad
que le hemos asignado a proceso o programa.
• Al final una cadena de texto, que se refiere al nombre del
programa.
Quedando como el siguiente ejemplo S01apache, en este caso se
refiere a un programa que comienza (start), con prioridad 1 y
nombre apache.

30
4. Niveles de ejecución

31
4. Niveles de ejecución

Actividad. Mostrar los distintos ficheros que es encuentra en todas las


carpetas rcX.d Capture todos los ficheros.

32
5. Estructura de archivos de Linux

Un sistema Linux reside bajo un árbol jerárquico de


directorios muy similar a la estructura del sistema de archivos
de plataformas Unix.
Originariamente, en los inicios de Linux, este árbol de
directorios no seguía un estándar cien por cien, es decir,
podíamos encontrar diferencias en él de una distribución a
otra.
Posteriormente se desarrollarían el proyecto FHS (Filesystem
Hierarchy Standard, o lo que es lo mismo: Estándar de
Jerarquía de Sistema de Ficheros) en otoño de 1993.

33
5. Estructura de archivos de Linux
FHS se define como un estándar que detalla los nombres, ubicaciones, contenidos y
permisos de los archivos y directorios, es decir, un conjunto de reglas que especifican
una distribución común de los directorios y archivos en sistemas Linux.
Como se ha mencionado, se creo inicialmente para estandarizar la estructura del
sistema de archivos para sistemas GNU/Linux y más tarde, en torno al año 1995,
también para su aplicación en sistemas Unix.
FHS no es más que un documento guía, es decir, cualquier fabricante de software
independiente o cualquier persona que decida crear una nueva distribución GNU/Linux,
podrá aplicarlo o no a la estructura del sistema de archivos, con la ventaja de que si lo
integra en el sistema, el entorno de éste será mucho más compatible con la mayoría de
las distribuciones.
Es importante saber que el estándar FHS es en cierto modo flexible, es decir, existe
cierta libertad en el momento de aplicar las normas. De ahí que existan en la actualidad
leves diferencias entre distribuciones GNU/Linux.
Objetivos principales de FHS
• Presentar un sistema de archivos coherente y estandarizado.
• Facilidad para que el software prediga la localización de archivos y directorios instalados.
• Facilidad para que los usuarios prediga la localización de archivos y directorios instalados.
• Especificar los archivos y directorios mínimos requeridos.

34
5. Estructura de archivos de Linux

En Linux todo es un archivo, tanto el Software como el


Hardware. Desde el ratón, pasando por la impresora, el
reproductor de DVD, el monitor, un directorio, un
subdirectorio y un fichero de texto. De ahí vienen los
conceptos de montar y desmontar por ejemplo un CDROM. El
CDROM se monta como un subdirectorio en el sistema de
archivos. En ese subdirectorio se ubicará el contenido del
disco compacto cuando esté montado y, nada cuando esté
desmontado.
Este concepto es muy importante para conocer como
funciona Linux.

35
5. Estructura de archivos de Linux

La organización de sistema de archivos según FHS tenemos el


directorio raíz que surge a partir del directorio raíz (/).
El contenido de este directorio debe ser el adecuado para
reiniciar, restaurar, recuperar y/o reparar el sistema, es decir,
debe proporcionar métodos, herramientas y utilidades
necesarias para cumplir estas especificaciones.
Además, es deseable que se mantenga los más
razonablemente pequeño como sea posible por cuestión de
funcionamiento y de seguridad.
Por último, este debe que ser el único directorio en el nivel
superior del árbol jerárquico de archivos y, tiene que ser
imposible moverse más allá del mismo.
36
5. Estructura de archivos de Linux

Contenido del directorio raíz, entre otros, seria:


• /bin: En este directorio se ubica el código binario o compilado de
los programas y comandos que pueden utilizar todos los usuarios
del sistema.
• /boot: Este directorio contiene todo lo necesario para que
funcione el proceso de arranque del sistema, almacena los datos
que se utilizan antes de que el kernel comience a ejecutar
programas en modo usuario.
• /dev: Almacena las definiciones de todos los dispositivos. Cada
dispositivo tiene asociado un archivo especial.
• /home: Directorio que contiene los subdirectorios que son
directorios origen para cada uno de los usuarios del sistema. Cada
subdirectorio /home/user de cada usuario proporciona el lugar
para almacenar sus ficheros, así como los archivos de
configuración propios de cada uno.

37
5. Estructura de archivos de Linux
• /lib: contiene librerías compartidas (similar a las dll de Windows) necesarias
para arrancar el sistema y para los ficheros ejecutables contenidos en, por
ejemplo, /bin.
• /media: contiene los subdirectorios que se utilizan como puntos del
montaje para los medios de almacenamiento, tales como disquetes, CD-
ROM y memorias USB.
• /mnt: contiene sistemas de archivos externos que hayan sido montados. Las
entidades que aparecen dentro de /mnt representan recursos externos a los
que se puede acceder a través de este directorio.
• /opt: se suelen instalar complementos o add-ons de los programas. Las
aplicaciones crean un subdirectorio dentro de /opt denominado con el
mismo nombre del programa.
• /root: Este directorio es el directorio /home del administrador del sistema
(root).
• /sbin: Los programas y comandos que se utilizan para la administración del
sistema se almacenan en /sbin, /usr/sbin y /usr/local/sbin. /sbin únicamente
contiene los ejecutables esenciales para el arranque, recuperación y
reparación del sistema.

38
5. Estructura de archivos de Linux

• /srv: Contiene los archivos de datos específicos para cada


servicio instalado en el sistema.
• /tmp: En este directorio se guardan los archivos temporales.

Por un reconocimiento especial debe de tener el directorio


/usr ya que es la segunda sección más grande o estructura
jerárquica (después del directorio raíz) del sistema de
ficheros.
Normalmente, este directorio tiene su partición propia.
Comúnmente, se almacena aquí el software instalado en el
sistema.

39
5. Estructura de archivos de Linux

La estructura de /usr seria:


• /usr/bin: Éste es el directorio primario de comandos ejecutables
del sistema, alberga los archivos ejecutables vinculados al
software instalado en el sistema.
• /usr/include: Linux está escrito en lenguaje C. En C es posible
utilizar funciones que ya estén predefinidas (como otros muchos
lenguajes de programación) para incluirlas en el programa que
estemos haciendo. Esta técnica se denomina programación
modular. Estas funciones se llaman comúnmente archivos
cabecera (.h de header) y contienen las declaraciones externas de
una libreria. La manera de incluir estos archivos cabecera en
nuestro programa, es haciendo uso de la directiva include; de ahí
la denominación del subdirectorio..

40
5. Estructura de archivos de Linux

• /usr/lib: Este directorio incluye librerías compartidas y ficheros


binarios pensados para no ser ejecutados directamente por los
usuarios del sistema.
• /usr/local/: es para uso del administrador del sistema cuando
instala software localmente. Puede usarse para programas y datos
que son compartibles entre un grupo de máquinas
• /usr/sbin: Este directorio contiene comandos y programas no
esenciales usados exclusivamente por el administrador de
sistema. Como se ha comentado, los comandos necesarios para la
reparación, recuperación y otras funciones esenciales del sistema,
se almacenan en /sbin.
• /usr/src: Por lo general, en /usr/src (src de source o, fuente en
castellano) se guarda el código fuente del Kernel del sistema.
41
5. Estructura de archivos de Linux

El directorio /var va ha contener ficheros de datos variables y


temporales, así como archivos spool.
Todos los log del sistema y los generados por los servicios
instalados, se ubican dentro de la estructura jerárquica de
/var. Esto quiere decir que el tamaño global de este directorio
va ha crecer constantemente.
La utilidad de /var radica en poder detectar problemas para
prevenirlos y solucionarlos.
Es aconsejable montar en una nueva partición este directorio.
Si no se pudiera, es preferible ubicar /var fuera de la partición
raíz y de la partición /usr.

42
6. Permisos de ficheros en Ubuntu.
El sistema de archivos que utiliza Linux es mucho más
avanzado, y a la vez sencillo, que el que utilizan otros
sistemas, como Windows. Este se basa en especificar si el
propietario, el grupo de usuarios o cualquiera puede leer,
escribir o ejecutar el archivo. Sin duda, es una forma muy
eficaz de mantener a cada usuario del sistema controlado,
evitando que este pueda acceder a los datos de los demás sin
permiso.

43
6. Permisos de ficheros en Ubuntu.
En Linux, todo archivo y directorio tiene tres niveles de
permisos de acceso: los que se aplican al propietario del
archivo, los que se aplican al grupo que tiene el archivo y los
que se aplican a todos los usuarios del sistema. Con ls -l
podemos ver los permisos cuando listamos un directorio:

44
6. Permisos de ficheros en Ubuntu.

Tomando como ejemplo la primera línea. La primera columna


(-rwxrwxr--) es el tipo de archivo y sus permisos, la siguiente
columna (1) es el número de enlaces al archivo, la tercera
columna (sergio) representa al propietario del archivo, la
cuarta columna (ventas) representa al grupo al que pertence
al archivo y las siguientes son el tamaño, la fecha y hora de
última modificación y por último el nombre delarchivo o
directorio.

45
6. Permisos de ficheros en Ubuntu.

El primer carácter al extremo izquierdo, representa el tipo de


archivo, los posibles valores para esta posición son los
siguientes:
• - un guión representa un archivo comun (de texto, html,
mp3, jpg, etc.)
• d representa un directorio
• l link, es decir un enlace o acceso directo
• b binario, un archivo generalmente ejecutable

46
6. Permisos de ficheros en Ubuntu.

Los siguientes 9 restantes, representan los permisos del archivo y deben


verse en grupos de 3.
Los tres primeros representan los permisos para el propietario del archivo.
Los tres siguientes son los permisos para el grupo del archivo y los tres
últimos son los permisos para el resto del mundo o otros.

En cuanto a las letras, su significado son los siguientes:


• r read – lectura.
• w write - escritura (en archivos: permiso de modificar, en directorios:
permiso de crear archivos en el dir.)
• x execution – ejecución.

47
6. Permisos de ficheros en Ubuntu.
Actividad. Indique permiso tiene cada usuario sobre el siguiente
archivo.

48
6. Permisos de ficheros en Ubuntu.
Actividad. Indique permiso tiene cada usuario sobre el siguiente
archivo.

En este archivo, el propietario root, tiene todos los permisos, el


grupo solo de ejecución y lectura igual other.

49
6. Permisos de ficheros en Ubuntu.

Las nueve posiciones de permisos son en realidad un bit


que o esta encendido (mostrado con su letra
correspondiente) o esta apagado (mostrado con un guión
-), así que, por ejemplo, permisos como rwxrw-r--,
indicaría que los permisos del propietario (rwx) puede
leer, escribir y ejecutar el archivo, el grupo (o sea los
usuarios que estén en mismo grupo del archivo) (rw-)
podrá leer y escribir pero no ejecutar el archivo, y
cualquier otro usuario del sistema (r--), solo podrá leer el
archivo, ya que los otros dos bits de lectura y ejecución
no se encuentran encendidos o activados.

50
6. Permisos de ficheros en Ubuntu.

Estos permiso de puede ver de forma numérica, la


combinación de valores de cada grupo de los usuarios
forma un número octal, el bit x es 20 es decir 1, el bit w
es 21 es decir 2, el bit r es 22 es decir 4, tenemos
entonces:

51
6. Permisos de ficheros en Ubuntu.
La combinación de bits encendidos o apagados en cada grupo da
ocho posibles combinaciones de valores, es decir la suma de los bits
encendidos:

52
6. Permisos de ficheros en Ubuntu.
Cuando se combinan los permisos del usuario, grupo y otros, se
obtienen un número de tres cifras que conforman los permisos del
archivo o del directorio. Esto es más fácil visualizarlo con algunos
ejemplos:

53
6. Permisos de ficheros en Ubuntu.
Actividad. Convierta a numérico o a texto los siguientes permisos.

• 661
• 722
• 545
• -RW- -WX - - X
• - -WXR-XR-X
• - R-XRWX---

54
6. Permisos de ficheros en Ubuntu.
Actividad. Convierta a numérico o a texto los siguientes permisos.

• 661 → -RW-RW---X
• 722 → -RWX-W - -W-
• 545 → -R-XR - - R - X
• -RW-WX - - X → 631
• - -WXR-X-R-X → 355
• - R-XRWX--- → 570

55
6. Permisos de ficheros en Ubuntu.

Para cambiar los permisos en Linux es necesario usar el


comando «chmod». Este comando debe ir acompañado
del nuevo nivel de privilegios que queramos darle al
nuevo archivo o directorio, así como de un «+» si lo que
se hace es darle ese nuevo permiso, o un «-» si lo que se
hace es quitarle permisos. También se puede cambiar los
permisos del «grupo» y «otros usuarios» añadiendo los
parámetros «g» y «o» respectivamente. El propietario se
indicaría sin este parámetro, o con una «u». Y si
queremos cambiar los permisos a todos a la vez,
podemos usar el parámetro «a».

56
6. Permisos de ficheros en Ubuntu.
Partiendo de un archivo «softzone», estos son algunos ejemplos
para cambiar los permisos usando el código de letras:
• chmod +rwx softzone -> añade permiso de lectura, escritura y
ejecución al propietario.
• chmod g+rwx softzone -> añade permiso de lectura, escritura y
ejecución al grupo del usuario propietario.
• chmod o+rwx softzone -> añade permiso de lectura, escritura y
ejecución al resto de usuarios.
• chmod -x softzone -> quita el permiso de ejecución al propietario.
• chmod g-wx softzone -> quita los permisos de escritura y
ejecución al grupo del usuario propietario.
• chmod o-rwx softzone -> quita todos los permisos al resto de
usuarios.
• chmod a+r -> añade permiso de lectura a propietario, grupo y
resto de usuarios.
57
6. Permisos de ficheros en Ubuntu.

También se puede usar el código numérico para cambiar


el nivel de permisos de cualquier archivo:
• chmod 777 softzone: permiso rwx para propietario,
grupo y resto de usuarios.
• chmod 700 softzone: permiso rwx para propietario, y
grupo y usuarios sin permisos.
• chmod 327 softzone: permiso de escritura y ejecución
para propietario, escritura para grupo y rwx para resto
de usuarios.

58
6. Permisos de ficheros en Ubuntu.

Actividad. Crear un fichero en el escritorio y modificar


los permisos utilizando los comandos anteriores, se
pondrá el permiso –rwxrwxrwx. Capturar todos los
pasos.

59
7. Script en Linux
Un script de comandos es un fichero de texto cuyas líneas son comandos
ejecutables, tal y como las escribirías en la línea de comandos del shell.
Los scripts pueden ejecutarse como si fueran un nuevo comando. Las
líneas que empiezan con el carácter # son comentarios y son ignoradas por
el shell al ejecutar el script.
El intérprete de comandos o "shell" es también un lenguaje de
programación completo. La programación de shell se usa mucho para
realizar tareas repetidas con frecuencia.
En Linux cuando hagas un script se suelen comenzar con una línea que
indica la shell con la que se va a ejecutar el script. Puede ser:
• #!/bin/bash
• #!/bin/sh
• #!/bin/ksh
Cualquier otra línea del script que comience por # es tomada como un
comentario, éstos se deben añadir con el fin de facilitar la lectura del
programa.

60
7. Script en Linux

Para comenzar a crear un script tienes que:


• Escribir los comandos en un fichero de texto (con un editor de
texto simple o redireccionando con cat > nombre_script).
• Escribir los comandos.
• Grabar o guardar.
• Cambiar los permisos del fichero para que tenga permiso de
ejecución (con el comando chmod).
• Ejecutarle.
Ahora para ejecutarle hay varias opciones:
Escribir en la línea de comandos el nombre del fichero de script,
como si fuera un nuevo comando. El shell busca el fichero en los
directorios que están incluidos en la variable PATH. Si el directorio
actual '.' no está en el PATH, para ejecutar el script hay que indicar
donde se encuentra, por ejemplo: . /miScript

61
7. Script en Linux

La invocación (ejecución) del archivo puede realizarse:


• Dando el nombre de archivo como argumento a bash.
$bash miScript
• Invocándolo directamente como un comando.
$miScript
• Puede requerirse indicar una vía absoluta o relativa, o referirse al
directorio actual como
$./miScript
• Si el directorio actual no está contenido en la variable PATH.
$source miScript

62
7.1. Variables.
Como en cualquier lenguaje de programación. Las variables se pueden definir como un espacio en la memoria del
sistema que puede contener un valor o no. Una variable de bash puede contener un número, un carácter o una
cadena de caracteres. No necesitas declararla.
Para asignar variables usamos el símbolo de igual =, o con el comando set.
Para obtener el valor de la variable debemos precederla por $, es decir, el carácter $ nos permite expandir el valor
de una variable dentro de una cadena.
Si se asigna a una variable algo entre paréntesis, lo que hacemos es crear una matriz del número de elementos
que hay entre paréntesis o entre comillas.
$colores = (rojo amarillo azul verde blanco)
Si se quiere que se introduzcan las variables desde la línea de comandos, solicitando información al usuario o
usuaria usa el comando read (del inglés leer). Este comando tiene como propósito solicitar información al usuario
o usuaria. Su ejecución captura las digitaciones realizadas, hasta obtener un carácter nueva línea (tecla Enter).
Existen una serie de variables predefinidas por el shell que contienen valores útiles. Por ejemplo:
$PWD, el nombre del directorio actual.
$HOME, el nombre del directorio raíz del usuario.
$PATH, una lista de directorios separados por “:” donde el shell busca los comandos.
El valor de cualquiera de ellas se puede ver en todo momento con el comando echo. Por ejemplo:
$ echo $HOME
Para borrar el contenido seria:
unset valor

63
7.1. Variables.

Por ejemplo, asignar un valor a una variable seria:


variable1=7
Para visualizar el contenido de la variable
root@ubuntu:~# echo $variable1
7
Borrar el contenido
root@ubuntu:~# unset variable1
root@ubuntu:~# echo $variable1

64
7.1. Variables.

Actividad. Visualice las variables del sistema anteriores por


líneas de comandos.

65
7.1. Variables.

Actividad. Visualice las variables del sistema anteriores por


líneas de comandos.

66
7.2. Parámetros.

Los parámetros son el conjunto de datos adicionales


colocados detrás del nombre de una orden, es decir, recibida
por un archivo por lotes.
Quizá en ocasiones el usuario o usuaria desee crear un
programa y ejecutarlo con diferentes conjuntos de datos.
Estos parámetros se introducen desde el símbolo del sistema,
después del nombre del script.
Al ejecutar un script se le pueden pasar argumentos. Cada
cadena (separada por espacios) que se le indique detrás del
nombre del fichero en la línea de comandos es un argumento
(si se desea pasar una cadena que contiene espacios como un
sólo argumento hay que encerrarla entre comillas).
67
7.2. Parámetros.

Dentro del script, las variables $1, $2, $3, ... se substituyen por la
cadena correspondiente a cada parámetro:
• $0: es la llamada al script.
• $1: es el primer parámetro que se pasa.
• $2: es el segundo, etc.
• $#: es el número de parámetros que se pasan.
• $@ y $*: son todos los parámetros, que se listan de una vez, en el
orden que se han pasado.
• $$: pid que tiene nuestro script. Número de procesos del shell.
• $?: es el valor de salida del último comando ejecutado. En un "exit
1", se devolvería el valor 1. Si todo sale bien, se devuelve el valor
0.
• $_: nos da el último argumento que hemos utilizado.

68
7.3. Ejecución.

Existe varias formas de ejecutar los scripts:


• Anteponiendo sh, source o bien "." al nombre del script.
• root@ubuntu:~# sh ejemplo.sh
• root@ubuntu:~# source ejemplo.sh
• root@ubuntu:~# . ejemplo.sh
• Dando permiso de ejecución y a continuación, invocándolo
con su nombre anteponiendo la ruta donde se encuentra el
script:
• root@ubuntu:~# chmod +x ejemplo.sh
• root@ubuntu:~# ./ejemplo.sh

69
7.4. Línea de comandos.

La línea de comandos es la interfaz del usuario con el sistema.


El formato típico de una línea de orden consta de una
orden y unos modificadores y parámetros opcionales,
aunque puede incluir algunos caracteres especiales que
modifiquen el comportamiento típico.
Orden [Modificador …][Parámetro …]
Por ejemplo, para listar el contenido del directorio actual se
debe utilizar:
$ ls
Mediante el carácter almohadilla (#), se indica que lo que le
sigue es un comentario y no se debe interpretar.
$ ls #Esto lista el directorio actual

70
7.5. Script.

Un script Bash es un fichero de texto normal que consta de


una serie de bloques de código formados por líneas de
comandos que se ejecutan secuencialmente (son
interpretadas y ejecutadas como si se introdujeran
directamente desde teclado). Para ello, el usuario debe
tener los permisos de modificación (escritura) en el
directorio (para crear un nuevo programa) o sobre el propio
fichero (para modificar uno existente).
Como cualquier otro programa binario, el usuario debe tener
permiso de ejecución en el fichero del script, el cual se
ejecuta indicando la ruta completa al mismo, así como sus
opciones y parámetros. Si el script se encuentra en un
directorio indicado en la variable de entorno $PATH, no
necesita indicar la ruta.
71
7.5. Script.
Un script debe comenzar con la marca #! para especificar el camino
completo y los parámetros del intérprete de órdenes que ejecutará el
script. Mediante ella, se puede indicar cualquier intérprete instalado en la
máquina.
Para realizar el primer script, crear el fichero miprimerscript.sh, para ello se
utilizara el editor nano de Ubuntu, seria:
$ nano miprimerscript.sh
Y escribir el siguiente código:
#!/bin/bash
#Ejemplo: Muestra la frase hola a todo el mundo
echo "Hola a todo el mundo"
Establezca los permisos de ejecución del script:
$ chmod +x miprimerscript.sh
Y, finalmente, ejecute el script:
$ ./miprimerscript.sh

72
7.5. Script.

Actividad. Repita la pasos anteriores y escriba al Script anterior.

73
7.5. Script.

Al contrario que en otros lenguajes de programación, Bash no hace


distinción entre los tipos de datos de las variables; son, esencialmente,
cadenas de caracteres, aunque, según el contexto, también pueden
usarse con operadores de números enteros y condicionales. Esta
filosofía de trabajo permite una mayor flexibilidad en la programación
de scripts, pero, a su vez, puede provocar errores difíciles de depurar.
Junto a las variables, el intérprete de Bash permite utilizar una gran
variedad de expresiones en el desarrollo de programas y en la línea de
comandos.
Una variable Bash se define o actualiza mediante operaciones de
asignación, mientras que se hace referencia a su valor utilizando el
símbolo del dólar ($) delante de su nombre.
Normalmente se utiliza la convención de definir las variables en mayúscula
para distinguirlas fácilmente de las órdenes y funciones, ya que en
Unix las mayúsculas y minúsculas se consideran caracteres distintos.

74
7.5. Script.
Un ejemplo de las variables serian:
VAR1="Esto es una prueba" # Asignación de una variable
VAR2=12 # Asignación de valor numérico
echo $VAR1 # ==> Esto es una prueba
echo "VAR2=$VAR2" # ==> VAR2=12
Las variables del intérprete Bash pueden considerarse desde los siguientes
puntos de vista:
• Variables locales. Son definidas por el usuario y se utilizan únicamente
dentro de un bloque de código, de una función determinada o de un
script.
• Variables de entorno. Son las que afectan al comportamiento del
intérprete y al de la interfaz del usuario.
• Parámetros de posición. Son los recibidos en la ejecución de cualquier
programa o función y hacen referencia a su orden ocupado en la línea de
comandos.
• Variables especiales. Son aquellas que tienen una sintaxis especial y
que hacen referencia a valores internos del proceso. Los parámetros de
posición pueden incluirse en esta categoría.

75
7.5. Script.

Centrándose en las variables locales, se definen para operar en


un ámbito reducido de trabajo, ya sea un programa, una función o
un bloque de código. Fuera de dicho ámbito de operación, la
variable no existe.
Una variable tiene un nombre único en su entorno de
operación, sin embargo pueden (aunque no es nada
recomendable) utilizarse variables con el mismo nombre en
distintos bloques de código.
Para asignar valores a una variable, se utiliza simplemente su
nombre, pero para hacer referencia a su valor, hay que utilizar
el símbolo del dólar ($).

76
7.5. Script.

Un ejemplo seria
#!/bin/bash
#
# Esto es un ejemplo en Bash del clásico "Hola Mundo"
#
MENSAJE="Hola Mundo"
echo $MENSAJE

77
7.5. Script.

Actividad. Implemente el código anterior y ejecútele, capture el


resultado.

78
7.5. Script.

Hay varias formas de hacer referencia a una variable, por ejemplo:

• ERROR=2 # Asigna el valor 2 a la variable ERROR


• echo ERROR # ==> ERROR (Cadena "ERROR")
• echo $ERROR # ==> 2 (valor de ERROR)
• echo ${ERROR} # ==> 2 (es equivalente)
• echo "Error ${ERROR}: salir" # ==> Error 2: salir

79
7.5. Script.

Actividad. Modifique el Script anterior y muestre la variable con las


opción:
• Mensaje
• $Mensaje
• ${Mensaje}

80
7.5. Script.

Los parámetros de entrada , como se vio anteriormente,


son variables especiales de Bash, que contienen los
valores de los parámetros que recibe un programa o una
función. El número indica la posición de dicho parámetro
en la llamada del script .
El primer parámetro se denota por la variable $1, el
noveno por $9 y a partir del décimo hay que utilizar la
notación ${numero}. El comando interno shift desplaza la
línea de parámetros hacia la izquierda para procesar los
parámetros más cómodamente. El nombre del programa
se denota por $0.

81
7.5. Script.

Para poner parámetros de entrada de un script solo


en el momento de ejecución ponerlos después del
nombre del script seguidos de un espacio. Ejemplo:
./Prueba.sh Par1 Par2 Par3

82
7.5. Script.

Por ejemplo, el siguiente script se llama ParEnt.sh y el


código seria:
#!/bin/bash
# Este script muestra el nombre del script y 3 parámetros de entrada.
echo $0
echo $1
echo $2
echo $3

83
7.5. Script.

Actividad. Escriba el script anterior y realice las


siguientes pruebas:
• Ejecute el script sin parámetros de entrada
• Ejecute el script con un solo parámetro de entrada
• Ejecute el script con dos parámetros de entrada
• Ejecute el script con tres parámentros de entrada
• Ejecute el script con cuatro parámetros de entrada

84
7.5. Script.

El intérprete de Bash permite utilizar una gran variedad de


expresiones en el desarrollo de programas y en la línea de
comandos. Las distintas expresiones soportadas por el intérprete
pueden englobarse en las siguientes categorías:
• Expresiones aritméticas. Generan como resultado un número
entero o binario.
• Expresiones condicionales. Se utilizan por comandos internos de
Bash para su evaluación, indicando si esta es cierta o falsa.
• Expresiones de cadena. Utilizan cadenas de carácter
Las expresiones complejas que cuentan con varios parámetros y
operadores se evalúan de izquierda a derecha. Sin embargo, si una
operación está encerrada entre paréntesis, se considera de mayor
prioridad y se ejecuta antes.

85
7.5. Script.

86
7.5. Script.

Para las expresiones aritméticas representan operaciones con


número enteros o binarios, mediante el comando let. Por ejemplo:
#!/bin/bash
let A=100
let B=200
let C=$A+$B
echo "A: $A | B: $B | C: $C"
A la hora de asignar valores, no es necesario hacerlo mediante
let, y su asignación se realiza como si de una variable normal
se tratase (nombre=valor),pero si se quiere operar con ellos, no se
puede utilizar directamente el comando (+,-,*,/,%), sino que los
valores se deben asignar a una variable definida con let como en el
ejemplo anterior, de modo que se evalúe la expresión.

87
7.5. Script.

Actividad. Escriba el script anterior y pruébelo.

88
7.5. Script.

Actividad. Escriba un Script, simple, que sume dos valores pasados


como parámetros.

89
7.5. Script.

Actividad. Escriba un Script, simple, que sume dos valores pasados


como parámetros.

#!/bin/bash
#Suma de dos variables introducida por parámetros
let suma=$1+$2
echo ‘La suma es ‘ $suma

90
7.5. Script.

Para terminar la iniciación a los Script de Linux, se muestra el


comando “read” el cual lee la entrada estándar (por teclado)
y asigna los valores a las variables indicadas en la orden.
Permite la opción de mostrar un mensaje antes de solicitar
los datos. La sintaxis seria:
read <variable>

A el comando “read” se puede añadir el parámetro -p para


añadir una cadena de texto:

read –p “Texto a mostrar” <variable>

91
7.5. Script.

Un ejemplo seria:
#!/bin/bash
#Lee una palabra por pantalla y lo muestra con un mensaje
echo “Introducir una palabra”
read variable
echo “Muestra valor introducido: $variable”
También puede ser
#!/bin/bash
#Lee una palabra por pantalla y lo muestra con un mensaje
read -p “Introducir una palabra” variable
echo “Muestra valor introducido: $variable”

92
7.5. Script.

Actividad. Escriba los scripts anterior de lectura de datos por


teclado y ejecútelos.

93
7.5. Script.

Actividad. Escriba un script que pida dos números por teclado,


sume sus valores y muestre el resultado por pantalla.

94
7.5. Script.

Actividad. Escriba un script que pida dos números por teclado,


sume sus valores y muestre el resultado por pantalla.

#!/bin/bash
# Sumar dos números introducidos por teclado
read –p “Introduzca el primer número: “ Num1
read –p “Introduzca el segundo número: “ Num2
let suma=$Num1+$Num2
echo “El resultado de la operación es $suma”

95
8. Actividades de repaso.

Actividad. ¿Qué hacen los siguientes comandos?

• ls
• mkdir
• pwd

96
8. Actividades de repaso.

Actividad. ¿Qué hacen los siguientes comandos?

• ls → lista el contenido de un directorio.


• mkdir → Permite crear un directorio o directorios
• pwd → Muestra en que directorio en el que esta el terminal

97
8. Actividades de repaso.

Actividad. Indique que tipo de archivo y permisos tienen si se ven la


siguientes cadenas.

• drwx - - - - - -
• - r-x-wx - -x
• lrw-rw-rw-

98
8. Actividades de repaso.

Actividad. Indique que tipo de archivo y permisos tiene si se ve la


siguiente cadena.

• drwx - - - - - - → Es un directorio, los usuarios tiene permisos de


lectura, escritura y ejecución, el grupo y el resto no tienen permisos.
• - r-x-wx - -x →Es un archivo, el usuario tiene permiso de lectura y
ejecución, el gurpo escritura y ejecución y el resto solo ejecución.
• lrw-rw-rw- → Es un enlace directo, y todos usuario, grupo y el resto
tiene permiso de lectura y escritura.

99
8. Actividades de repaso.

Actividad. Convierta a numérico o a texto los siguientes permisos.

• 555 →
• 777→
• -wxr-xw - - →
• r - - -w - - -x→

100
8. Actividades de repaso.

Actividad. Convierta a numérico o a texto los siguientes permisos.

• 555 → r-x r-x r-x


• 777→ rwx rwx rwx
• -wxr-xw - - → 352
• r - - -w - - -x→ 421

101
8. Actividades de repaso.

Actividad. Escriba un script que pasando un número parámetro y otro


pedido por teclado y multiplíquelos.

102
8. Actividades de repaso.

Actividad. Escriba un script que pasando un número parámetro y otro


pedido por teclado y multiplíquelos.
#!/bin/bash
#Multiplicar dos números
Read –p “Introduzca el segundo número a multiplicar: “ Num2
let multi=$Num2*$1
Echo “El resultado de la multiplicación es $multi”

103
104

También podría gustarte