Última actualización: octubre 18, 2022
3.1.2.7 Práctica de laboratorio: Familiarizarse con el shell de Linux (versión para el instructor)
Nota para el instructor: Los elementos con color de fuente rojo o resaltados en gris indican texto que aparece solo en la copia del instructor.
Introducción
En esta práctica de laboratorio, utilizarán la línea de comandos de Linux para administrar archivos y carpetas, y para realizar algunas tareas administrativas básicas.
Equipo recomendado
- Máquina virtual CyberOps Workstation
Nota para el instructor: Esta práctica de laboratorio se puede hacer con la máquina virtual creada en la práctica anterior.
Parte 1: Conceptos básicos del Shell
shell es el término que se utiliza para hacer referencia al intérprete de comandos de Linux. También conocido como Terminal, Línea de comandos o Símbolo del sistema, el shell es un método muy versátil para interactuar con una computadora Linux.
Paso 1: Acceder a la línea de comandos
a. Inicien sesión en la VM CyberOps Workstation con analyst como usuario y cyberops como contraseña. En toda esta práctica de laboratorio se utiliza la cuenta analyst como el usuario ejemplo.
b. Para acceder a la línea de comando, hagan clic en el icono del terminal que se encuentra en el Dock, en la parte inferior de la pantalla de la VM. Se abrirá el emulador de terminales.
Paso 2: Mostrar páginas del manual desde la línea de comandos.
Pueden mostrar la ayuda de la línea de comandos si utilizan el comando man. Un página man, abreviatura de página de manual, es una documentación integrada de los comandos de Linux. Una página man proporciona información detallada sobre un comando y todas sus opciones disponibles.
a. Para obtener más información sobre la página man, escriban:
[analyst@secOps ~]$ man man
Mencionen algunas de las secciones que se incluyen en una página man.
Algunas secciones de una página man son: Name, Synopsis, Configuration, Description, Options, Exit status, Return value, Errors, Environment, Files, Versions, Conforming to, Notes, Bugs, Example, Authors y See also.
b. Escriba q para salir de la página man.
c. Utilice el comando man para obtener más información sobre el comando cp:
[analyst@secOps ~]$ man cp
¿Cuál es la función del comando cp?
Copiar archivos desde una ubicación a otra ubicación en el sistema de archivos local.
¿Qué comando utilizaría para encontrar más información sobre el comando pwd? ¿Cuál es la función del comando pwd?
El comando man pwd se utiliza para acceder a la página man sobre pwd. El comando pwd imprime el nombre del directorio actual o activo.
Paso 3: Crear y cambiar directorios
En este paso, utilizará los comandos cambiar directorio (cd), crear directorio (mkdir) y enumerar directorio (ls).
Nota: Directorio es otra palabra para carpeta. Los términos directorio y carpeta se utilizan indistintamente en esta práctica de laboratorio.
a. Escriban pwd en el cursor.
[analyst@secOps ~]$ pwd /home/analyst
¿Cuál es el directorio actual?
Las respuestas pueden variar. En este ejemplo, el directorio actual es /home/analyst.
b. Diríjanse al directorio /home/analyst si no están allí. Escriban cd /home/analyst
[analyst@secOps ~]$ cd /home/analyst
c. Escriba ls -l en el indicador de comando para generar una lista de los archivos y las carpetas presentes en la carpeta actual. La opción -l, que significa lista, muestra el tamaño, los permisos, la titularidad y la fecha de creación del archivo, entre otras propiedades.
[analyst@secOps ~]$ ls -l total 20 drwxr-xr-x 2 analyst analyst 4096 Sep 26 2014 Desktop drwx------ 3 analyst analyst 4096 Jul 14 11:28 Downloads drwxr-xr-x 8 analyst analyst 4096 Jul 25 16:27 lab.support.files drwxr-xr-x 2 analyst analyst 4096 Mar 3 15:56 second_drive -rw-r--r-- 1 analyst analyst 254 Aug 16 13:38 space.txt
d. En el directorio actual, utilice el comandomkdir para crear tres carpetas nuevas: cyops_folder1, cyops_folder2 y cyops_folder3. Escriban mkdir cyops_folder1 y presionen Intro. Repita estos pasos para crear cyops_folder2 y cyops_folder3.
[analyst@secOps ~]$ mkdir cyops_folder1 [analyst@secOps ~]$ mkdir cyops_folder2 [analyst@secOps ~]$ mkdir cyops_folder3 [analyst@secOps ~]$
e. Escriba ls -l para verificar que se hayan creado las carpetas:
[analyst@secOps ~]$ ls -l total 32 drwxr-xr-x 2 analyst analyst 4096 Aug 16 15:01 cyops_folder1 drwxr-xr-x 2 analyst analyst 4096 Aug 16 15:02 cyops_folder2 drwxr-xr-x 2 analyst analyst 4096 Aug 16 15:02 cyops_folder3 drwxr-xr-x 2 analyst analyst 4096 Sep 26 2014 Desktop drwx------ 3 analyst analyst 4096 Jul 14 11:28 Downloads drwxr-xr-x 8 analyst analyst 4096 Jul 25 16:27 lab.support.files drwxr-xr-x 2 analyst analyst 4096 Mar 3 15:56 second_drive -rw-r--r-- 1 analyst analyst 254 Aug 16 13:38 space.txt
f. Escriban cd /home/analyst/cyops_folder3 en el símbolo del sistema y presionen Intro.
[analyst@secOps ~]$ cd /home/analyst/cyops_folder3 [analyst@secOps cyops_folder3]$
¿En qué carpeta está ahora?
En este ejemplo, el directorio actual es /home/analyst/cyops_folder3 según lo que indica cyops_folder3 en el cursor.
Nota: En el indicador [analyst@secOps ~]$ de arriba, el símbolo ~ representa el directorio de inicio del usuario actual. En este ejemplo, el directorio de inicio del usuario actual es /home/analyst. Después del comando cd /home/analyst/cyops_folder3, ahora el directorio de inicio del usuario actual es /home/analyst/cyops_folder3.
Nota: $ (el signo de dólar) indica un privilegio de usuario común. Si se muestra un ‘#’ (signo de hashtag o cardinal) en el indicador, se indica un privilegio elevado (usuario root).
Nota: Si bien estos símbolos, convenciones y conceptos centrales son siempre los mismos, el indicador de una ventana del terminal de Linux permite amplias posibilidades de personalización. Por lo tanto, la estructura del cursor que se ve en la VM CyberOps Worstation probablemente sea diferente del cursor de otras instalaciones de Linux.
Desafío: Escriba el comando cd ~ y describa qué sucede. ¿Por qué sucedió esto?
El directorio se cambia al directorio de inicio. Ya que el shell interpreta el ~ como un atajo para el directorio de inicio del usuario actual, cd ~ cambia al inicio del usuario actual.
g. Utilice el comando mkdir para crear una carpeta nueva de nombre cyops_folder4 dentro de la carpeta cyops_folder3:
[analyst@secOps ~]$ mkdir /home/analyst/cyops_folder3/cyops_folder4 [analyst@secOps ~]$
h. Utilice el comando ls -l para verificar que se haya creado la carpeta.
analyst@secOps ~]$ ls –l /home/analyst/cyops_folder3 total 4 drwxr-xr-x 2 analyst analyst 4096 Aug 16 15:04 cyops_folder4
i. Hasta este punto, hemos utilizado rutas completas. El término «ruta completa» es el que se utiliza para hacer referencia a rutas que siempre comienzan en el directorio raíz (/). También se puede trabajar con rutas relativas. Las rutas relativas reducen la cantidad de texto que se debe escribir. Para comprender cómo funcionan las rutas relativas, tenemos que entender los directorios .y .. (punto y punto doble). En el directorio cyops_folder3, emitan un ls –la:
analyst@secOps ~]$ ls –la /home/analyst/cyops_folder3 total 12 drwxr-xr-x 3 analyst analyst 4096 Aug 16 15:04 . drwxr-xr-x 20 analyst analyst 4096 Aug 16 15:02 .. drwxr-xr-x 2 analyst analyst 4096 Aug 16 15:04 cyops_folder4
La opción -a le indica a ls que debe mostrar todos los archivos. Observe los listados . y .. que muestra ls. El sistema operativo utiliza estos listados para rastrear el directorio actual (.) y el superior en el árbol (..) Puede ver cómo se utilizan los directorios . y .. al emplear el comando cd para cambiar de directorio. Utilizar el comando cd para pasar de un directorio al . no genera ningún cambio de directorio visible porque . apunta a su propio directorio.
j. Pasen del directorio actual a /home/analyst/cyops_folder3:
[analyst@secOps ~]$ cd /home/analyst/cyops_folder3 [analyst@secOps cyops_folder3]$
k. Escriban cd ..
[analyst@secOps cyops_folder3]$ cd . [analyst@secOps cyops_folder3]$
¿Qué ocurre?
Al parecer, nada más que el intérprete de comandos cambió el directorio al directorio actual.
l. Al cambiar al directorio .., se subirá un nivel en el árbol. Este directorio también se conoce como directorio matriz. Escriban cd ...
[analyst@secOps cyops_folder3]$ cd .. [analyst@secOps ~]$
¿Qué ocurre?
El directorio se cambió a /home/analyst, que es el directorio inmediatamente superior a cyops_folder3, también conocido como directorio principal.
¿Cuál sería el directorio actual si emitiera el comando cd .. en [analyst@secOps ~]$?
/home
¿Cuál sería el directorio actual si emitiera el comando cd .. en [analyst@secOps home]$?
/ (barra invertida), la raíz del sistema de archivos
¿Cuál sería el directorio actual si emitiera el comando cd .. en [analyst@secOps ~]$?
/ (barra invertida), la raíz del sistema de archivos. Ya que este es el nivel más alto, no se realiza ningún cambio hacia arriba ya que el directorio raíz no tiene un directorio principal.
Paso 4: Redireccionar salidas
Otro potente operador de la línea de comandos de Linux se conoce como redirect. Representado por el símbolo >, este operador permite redireccionar la salida de un comando a otra ubicación que no sea la ventana del terminal actual (la opción predeterminada).
a. Utilice el comando cd para pasar al directorio/home/analyst/ (~):
[analyst@secOps /]$ cd /home/analyst/ [analyst@secOps ~]$
b. Utilicen el comando echo para hacer echo de un mensaje. Como no se definió ninguna salida, la salida de echo se emitirá a la ventana del terminal actual:
analyst@secOps ~]$ echo This is a message echoed to the terminal by echo. This is a message echoed to the terminal by echo.
c. Utilicen el operador > para redireccionar la salida de echo a un archivo de texto y no a la pantalla:
analyst@secOps ~]$ echo This is a message echoed to the terminal by echo. > some_text_file.txt
No se mostró ninguna salida en la pantalla. ¿Es eso lo que se espera?
Sí. La salida se reorientó hacia el archivo some_text_file.txt.
d. Observen que, incluso aunque el archivo some_text_file.txt no existía, se lo creó automáticamente para recibir la salida generada por echo. Utilicen el comando ls -l para verificar si se creó efectivamente el archivo:
[analyst@secOps ~]$ ls –l some_text_file.txt -rw-r--r-- 1 analyst analyst 50 Feb 24 16:11 some_text_file.txt
e. Utilicen el comando cat para mostrar el contenido de archivo de texto some_text_file.txt:
[analyst@secOps ~]$ cat some_text_file.txt This is a message echoed to the terminal by echo.
f. Vuelvan a utilizar el operador > para redirigir otra salida de echo al archivo de texto some_text_file.txt:
analyst@secOps ~]$ echo This is a DIFFERENT message, once again echoed to the terminal by echo. > some_text_file.txt
g. Nuevamente, utilicen el comando cat para mostrar el contenido del archivo de texto some_text_file.txt:
[analyst@secOps ~]$ cat some_text_file.txt This is a DIFFERENT message, once again echoed to the terminal by echo.
¿Qué le sucedió al archivo de texto? Explique.
El archivo de texto fue completamente reemplazado por el nuevo mensaje. El operador > destruyó el contenido del archivo txt antes de escribir el mensaje repetido por eco.
Paso 5: Redireccionar y anexar a un archivo de texto
a. En forma similar a lo que ocurre con el operador >, >> también permite redireccionar datos a archivos. La diferencia es que >> anexa datos al final del archivo en cuestión, y mantiene el contenido actual intacto. Para anexar un mensaje a some_text_file.txt, emitan el siguiente comando:
[analyst@secOps ~]$ echo This is another line of text. It will be APPENDED to the output file. >> some_text_file.txt
b. Utilicen el comando cat para mostrar el contenido de archivo de texto some_text_file.txt una vez más:
[analyst@secOps ~]$ cat some_text_file.txt This is a DIFFERENT message, once again echoed to the terminal by echo. This is another line of text. It will be APPENDED to the output file.
¿Qué le sucedió al archivo de texto? Explique.
El nuevo mensaje se adjuntó al final del archivo, manteniendo el contenido original intacto.
Paso 6: Trabajar con archivos ocultos en Linux
a. En Linux, los archivos cuyos nombres comienzan con un ‘.’ (punto) no se muestran por defecto. Si bien los archivos . no son especiales en absoluto, se los denomina archivos ocultos debido a esta característica. Ejemplos de archivos ocultos: .file5, .file6, .file7.
Nota: No confundan los archivos . con el símbolo que indica el directorio actual: “.”. Los nombres de los archivos ocultos comienzan con un punto, seguido por más caracteres mientras que el directorio . es un directorio oculto compuesto solo por un punto.
b. Utilicen ls -l para mostrar los archivos almacenados en el directorio de inicio de analyst.
[analyst@secOps ~]$ ls –l
¿Cuántos archivos aparecen en la lista?
La respuesta puede variar en función de las actividades e interacciones de prácticas de laboratorio anteriores del usuario en la máquina virtual de CyberOps Worstation. Asegúrese de contar también los directorios (que muestra ls en azul).
c. Utilicen el comando ls -la para mostrar todos los archivos presentes en el directorio de inicio de analyst, incluidos los ocultos.
[analyst@secOps ~]$ ls –la
¿Cuántos archivos aparecen ahora? ¿Más que antes? Explique.
Muchos más como ls -la muestra, además de archivos regulares, todos los archivos ocultos en la carpeta.
¿Es posible ocultar directorios completos agregando un punto antes de su nombre también? ¿Hay algún directorio en el resultado de ls -la de arriba?
Sí, hay muchos directorios ocultos en la salida.
Indique tres ejemplos de archivos ocultos que aparecen en el resultado de ls -la de arriba.
.config,. bash_history, .xinitrc
d. Escriban el comando man ls en el cursor para obtener más información sobre el comando ls.
[analyst@secOps ~]$ man ls
e. Utilicen la tecla de la flecha hacia abajo (una línea a la vez) o la barra espaciadora (una página a la vez) para desplazarse por la página y ubicar la opción -a antes utilizada y leer su descripción para familiarizarse con el comando ls -a.
Parte 2: Copiar, eliminar y mover archivo
Paso 1: Copiar archivos
a. El comando cp se utiliza para copiar archivos en cualquier lugar del sistema de archivos local. Cuando se utiliza cp, se crea una copia nueva del archivo y se la coloca en la ubicación especificada; el archivo original permanece intacto. El primer parámetro es el archivo de origen y el segundo es el destino. Emita el siguiente comando para copiar some_text_file.txt del directorio de inicio a la carpeta cyops_folder2:
[analyst@secOps ~]$ cp some_text_file.txt cyops_folder2/
Identifique los parámetros presentes en el comando cp de arriba. ¿Cuáles son los archivos de origen y de destino? (Utilicen rutas completas para representar los parámetros)
Fuente: /home/analyst/some_text_file.txt. Destino: /home/analyst/cyops_folder2/some_text_file.txt
b. Utilice el comando ls para verificar que some_text_file.txt ahora esté en cyops_folder2:
[analyst@secOps ~]$ ls cyops_folder2/ some_text_file.txt
c. Utilicen el comando ls para verificar que some_text_file.txt también esté en el directorio de inicio:
[analyst@secOps ~]$ ls -l total 36 drwxr-xr-x 2 analyst analyst 4096 Aug 16 15:01 cyops_folder1 drwxr-xr-x 2 analyst analyst 4096 Aug 16 15:11 cyops_folder2 drwxr-xr-x 3 analyst analyst 4096 Aug 16 15:04 cyops_folder3 drwxr-xr-x 2 analyst analyst 4096 Sep 26 2014 Desktop drwx------ 3 analyst analyst 4096 Jul 14 11:28 Downloads drwxr-xr-x 8 analyst analyst 4096 Jul 25 16:27 lab.support.files drwxr-xr-x 2 analyst analyst 4096 Mar 3 15:56 second_drive -rw-r--r-- 1 analyst analyst 142 Aug 16 15:09 some_text_file.txt -rw-r--r-- 1 analyst analyst 254 Aug 16 13:38 space.txt
Paso 2: Eliminar archivos y directorios
a. Utilice el comando rm para eliminar archivos. Emita el siguiente comando para quitar el archivo some_text_file.txt del directorio de inicio. Luego se debe utilizar el comando ls para mostrar que el archivo some_text_file.txt fue retirado del directorio de inicio:
[analyst@secOps ~]$ rm some_text_file.txt [analyst@secOps ~]$ ls -l total 32 drwxr-xr-x 2 analyst analyst 4096 Aug 16 15:01 cyops_folder1 drwxr-xr-x 2 analyst analyst 4096 Aug 16 15:11 cyops_folder2 drwxr-xr-x 3 analyst analyst 4096 Aug 16 15:04 cyops_folder3 drwxr-xr-x 2 analyst analyst 4096 Sep 26 2014 Desktop drwx------ 3 analyst analyst 4096 Jul 14 11:28 Downloads drwxr-xr-x 8 analyst analyst 4096 Jul 25 16:27 lab.support.files drwxr-xr-x 2 analyst analyst 4096 Mar 3 15:56 second_drive -rw-r--r-- 1 analyst analyst 254 Aug 16 13:38 space.txt
b. En Linux, los directorios se ven como un tipo de archivo. Por ese motivo, el comando rm también se utilizar para eliminar directorios, pero se debe emplear la opción -r (recursivo). Observen que todos los archivos y demás directorios que se encuentran dentro de un directorio determinado también son eliminados cuando se elimina un directorio matriz. Emitan el siguiente comando para eliminar la carpeta cyops_folder1 y su contenido:
[analyst@secOps ~]$ rm –r cyops_folder1 [analyst@secOps ~]$ ls -l total 28 drwxr-xr-x 2 analyst analyst 4096 Aug 16 15:11 cyops_folder2 drwxr-xr-x 3 analyst analyst 4096 Aug 16 15:04 cyops_folder3 drwxr-xr-x 2 analyst analyst 4096 Sep 26 2014 Desktop drwx------ 3 analyst analyst 4096 Jul 14 11:28 Downloads drwxr-xr-x 8 analyst analyst 4096 Jul 25 16:27 lab.support.files drwxr-xr-x 2 analyst analyst 4096 Mar 3 15:56 second_drive -rw-r--r-- 1 analyst analyst 254 Aug 16 13:38 space.txt
Paso 3: Mover archivos y directorios
a. Mover archivos es similar a copias archivos. La diferencia es que al mover un archivo se lo quita de su ubicación original. Utilice los comandos mv para mover archivos a cualquier lugar del sistema de archivos local. Al igual que con los comandos cp, el comando mv también requiere parámetros de origen y de destino. Emitan el siguiente comando para mover some_text_file.txt de /home/analyst/cyops_folder2 de regreso al directorio de inicio:
[analyst@secOps ~]$ mv cyops_folder2/some_text_file.txt . [analyst@secOps ~]$ ls –l cyops_folder2/ total 0 [analyst@secOps ~]$ ls –l /home/analyst/ total 32 drwxr-xr-x 2 analyst analyst 4096 Aug 16 15:13 cyops_folder2 drwxr-xr-x 3 analyst analyst 4096 Aug 16 15:04 cyops_folder3 drwxr-xr-x 2 analyst analyst 4096 Sep 26 2014 Desktop drwx------ 3 analyst analyst 4096 Jul 14 11:28 Downloads drwxr-xr-x 8 analyst analyst 4096 Jul 25 16:27 lab.support.files drwxr-xr-x 2 analyst analyst 4096 Mar 3 15:56 second_drive -rw-r--r-- 1 analyst analyst 142 Aug 16 15:11 some_text_file.txt -rw-r--r-- 1 analyst analyst 254 Aug 16 13:38 space.txt
¿Por qué se utilizó el punto (“.”) como parámetro de destino para mv?
El punto (“.”) significa que mv debe mover el archivo al directorio actual. Ya que el directorio actual ya era /home/analyst/ (el directorio adonde el archivo se debe mover), utilizar el punto “.” representa precisamente eso.
El comando mv también se puede utilizar par mover directorios completos con sus archivos. Utilicen el siguiente comando para mover cyops_folder3 (y todos los archivos y directorios que contiene) a cyops_folder2:
[analyst@secOps ~]$ mv cyops_folder3/ cyops_folder2/ [analyst@secOps ~]$ ls –l /home/analyst/ total 28 drwxr-xr-x 3 analyst analyst 4096 Aug 16 15:15 cyops_folder2 drwxr-xr-x 2 analyst analyst 4096 Sep 26 2014 Desktop drwx------ 3 analyst analyst 4096 Jul 14 11:28 Downloads drwxr-xr-x 8 analyst analyst 4096 Jul 25 16:27 lab.support.files drwxr-xr-x 2 analyst analyst 4096 Mar 3 15:56 second_drive -rw-r--r-- 1 analyst analyst 142 Aug 16 15:11 some_text_file.txt -rw-r--r-- 1 analyst analyst 254 Aug 16 13:38 space.txt
c. Utilicen el comando ls para verificar que el directorio cyops_folder3 se movió correctamente a cyops_folder2.
[analyst@secOps ~]$ ls –l cyops_folder2/ total 4 drwxr-xr-x 3 analyst analyst 4096 Feb 27 11:47 cyops_folder3
Reflexión
¿Cuáles son las ventajas de utilizar la línea de comandos de Linux?
Las respuestas pueden variar. La línea de comandos permite que los usuarios tengan más opciones y control sobre la interfaz gráfica. A medida que los usuarios ganan más experiencia con la línea de comandos, pueden combinar estos comandos en scripts para realizar tareas de rutina. La interfaz de línea de comandos utiliza menos recursos cuando los usuarios administran las computadoras de forma remota.