Dia 1 "Conceptos basicos de Linux" - jalvearg/Workshop-satellite GitHub Wiki

Contenidos: Después de completar esta sección el estudiante estará preparado para:

  • Estructura de directorios Linux
  • Edición de archivos con vi
  • Manejo de archivos comprimidos
  • Búsqueda de archivos en el sistema de archivos
  • Manejo básico de usuarios
  • Instalación de paquetes

Sistema de archivos linux conceptos

Linux FS

El siguiente cuadro referencial indica en resumen la función de cada directorio del sistema de archivos linux

Directorio Descripción
/ Jerarquía Principal, conocida como raíz
/bin Binarios y/o programas y/o ejecutables de usuarios regulares
/boot Ejecutables, drivers, archivos de configuración de arranque
/dev Dispositivos físicos y lógicos
/etc Archivos de configuración del sistema operativo
/home Espacio de trabajo de usuarios regulares
/lib Librerías 32 bits
/lib64 Librerías 64 bits
/mnt Directorio sugerido para montar recursos de tipo NAS como cliente
/opt Directorio sugerido para instalación de software de terceros
/run Directorio de datos relevantes de procesos en ejecución (se destruye y recrea al reinicio)
/usr Jerarquía secundaria, destinada a usuarios
/root Espacio de trabajo del usuario root
/sbin Binarios y/o programas y/o ejecutables de super usuario
/srv Data para servicios provistas por el sistema
/media Montaje para dispositivos como usb, cdrom, dvd
/sys Directorio de archivos virtual, exporta información sobre dispositivos y sus controladoras
/tmp Archivos temporales
/proc Directorio de archivos virtual, documenta el kernel y estado de procesos como archivos de texto
/var Archivos Variables

Laboratorio: Explorando el sistema de archivos linux

En el siguiente laboratorio tendrá que realizar las siguientes operaciones:

  1. Identificar la ruta donde se encuentran los dispositivos asociados a los discos duros de la maquina virtual.
  2. Identificar la ruta donde se encuentra el archivo de configuración del servicio SSH.
  3. Identificar la ruta donde se encuentran los archivos de log: messages y secure.
  4. Identificar la ruta donde se encuentran los archivos de booteo: vmlinuz y initramfs.
  5. Identificar la ruta donde se encuentran los archivos de configuraciones por defecto.

2. Creación y edición de archivos

  • Manejo de vi para edición de archivos de configuración y conocer atajos para trabajar de forma eficiente.

El siguiente cuadro referencial indica en resumen la función de cada directorio del sistema de archivos linux

Editando archivos con Vi

Para poder utilizar el editor vi debemos entender el siguiente flujo basico: Vi-Vim2

Modo normal

  • Es el modo predeterminado.
  • Permite un movimiento rápido por el texto.
  • Modificación rápida de texto.
  • Cambiar a otros modos.

Modo de inserción

  • Modificar el archivo insertando nuevo texto

Modo visual

  • Seleccionar parte del texto para operar sobre él.

Modo de comando o ejecución de comando

  • Operación básica del editor (abrir, cerrar, escribir ...)
  • Edición masiva a través de comandos ex

Atajos para Vi

Atajos de Edición

Key Descripción
i Cambie al modo de inserción y comience a insertar antes de la posición actual del cursor.
I Mueva el cursor al inicio de la línea actual y cambie al modo de inserción.
a Cambie al modo de inserción y comience a insertar después de la posición actual del cursor.
A Mueva el cursor al final de la línea actual y cambie al modo de inserción.
o Abra una nueva línea debajo de la actual y cambie al modo de inserción.
O Abra una nueva línea sobre la actual y cambie al modo de inserción.
R Cambie al modo de reemplazo, comenzando en el carácter debajo del cursor.

Atajos de Movimiento

Key Descripción
h Mover el cursor hacia la izquierda.
j Mover el cursor hacia abajo.
k Mover el cursor hacia arriba.
l Mover el cursor hacia la derecha.
H Mover el cursor al inicio.
M Mover el cursor al medio.
L Mover el cursor al final.
w Mover el cursor una palabra hacia la derecha.
b Mover el cursor una palabra hacia la izquierda.
e Mover el cursor hasta el último carácter de la palabra actual.
^ Mover el cursor al inicio de la linea.
$ Mover el cursor al final de la linea.

Atajos para guardar

Key Descripción
:wq Guarde y salga del archivo actual.
:x Guarde el archivo actual si hay cambios sin guardar, luego salga.
:w Guarde el archivo actual y permanezca en el editor.
:w Guarde el archivo actual con un nombre de archivo diferente.
:q Salga del archivo actual (solo si no hay cambios sin guardar).
:q! Salga del archivo actual, ignorando los cambios no guardados.

Atajos Varios

Key Descripción
/ Buscar una palabra dentro de un archivo.
:<numero_de _linea> Ir a una linea especifica.
dd,D Borrar una linea.
x Borrar un caracter.
yy Copiar una linea.
p Pegar lineas o palabras copiadas.
u Deshacer un cambio.

Laboratorio: Editando archivos de configuración utilizando atajos.

En el siguiente laboratorio tendrá que realizar las siguientes operaciones:

  1. Editar el archivo sshd_config_template ubicado en el home del usuario root, modificar la directiva de #LoginGraceTime 2m yes a LoginGraceTime 5m utilizando la función de buscar (/), luego edite y grabe sin salir del archivo.
  2. Copiar las primeras 10 lineas del archivo sshd_config_template y pegarlas al final del archivo.
  3. Modificar la directiva #Banner none a Banner /etc/issue que se encuentra en la linea 123, utilizando el modo de ejecucion :<number_line>
  4. Grabar los cambios.

3. Instalación de paquetes de software

1. Habilitación de repositorio local

[root@prr ~]# cat /etc/yum.repos.d/rhel84.repo

[rhel8.4-BaseOS]
name=RHEL7 BaseOS Local Repository
baseurl=http://192.168.0.100/rhel84/BaseOS
enabled=1
gpgcheck=0

[rhel84-AppStream]
name=RHEL84 AppStream Local Repository
baseurl=http://192.168.0.100/rhel84/BaseOS
enabled=1
gpgcheck=0

Verificar que el repositorio cargue sin problema

[root@prr ~]# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repo id                                                               repo name
rhel84-AppStream                                                      RHEL84 AppStream Local Repository
rhel84-BaseOS                                                         RHEL84 BaseOS Local Repository
[root@prr ~]# yum list all

Instalar software para validar que el repositorio es funcional

[root@prr ~]# yum install -y vim 
Directorio Descripción
yum list '<packagename>' Muestra los paquetes instalados y disponibles.
yum search '<packagename>' Enumera los paquetes por palabras clave que se encuentran solo en los campos de nombre y resume.
yum info '<packagename>' Muestra información detallada sobre le paquete en consulta.
yum provides '<pathname>' Muestra paquetes que coinciden con el nombre de ruta especificada.
yum install '<packagename>' Instala el paquete y sus dependencias de software.
yum update '<packagename>' Actualiza el paquete de software y sus dependencias relacionadas.
yum remove '<packagename>' Remueve el paquete de software instalado.
yum history Muestra el listado de paquetes instalados y removidos.
yum history undo '<num>' Retorna al estando anterior antes de instalar o remover un paquete, esta opción borra incluso las dependencias.
yum group list Lista grupo de paquetes. Si se le agrega la palabra 'hidden' mostrara la lista completa incluida ocultos.
yum group info '<groupname>' Muestra la información del grupo de paquetes a instalar.
yum group install '<groupname>' Instala el grupo de paquetes indicado.



# Laboratorio: Configurando repositorio local e instalando software
En el siguiente laboratorio tendrá que realizar las siguientes operaciones:
1. Configurar un repositorio local con la iso y/o url proporcionada. El nombre del repositorio deberá ser rhel84.repo y deberá contener las directivas de configuración para los repositorios BaseOS y AppStream.
2. Instalar el paquete bash-completion, sos.
3. Instalar el grupo de paquetes Networking Tools.
4. Instalar el servicio vsftpd.
5. Instalar el servicio httpd
6. Desinstalar el servicio httpd y sus dependencias

4. Compresión de archivos y búsquedas.

Tar es una herramienta de línea de comando utilizada para crear y manipular archivos de almacenamiento en sistemas Linux y Unix.

El siguiente cuadro indica en resumen de las opciones y funciones de tar.

Opción Descripción
-c, --create Crea un nuevo archivo.
-x, --extract Extrae de un archivo existente.
-t, --list Lista la tabla de contenido de un archivo.
-v, --verbose Muestra que archivos son archivados o extraidos
-f, --file= Nombre del archivo.
-p, --preserve-permissions Preserva los permisos de los archivos cuando estos son extraidos.
-z, --gzip Usa gzip para compresion (.tar.gz).
-j, --bzip2 Usa bzip2 para compresion (.tar.bz2).
-J, --xz Usa xz para compresion (.tar.xz).

Ejemplos .tar

Crear archivo .tar

[root@prr ~]# tar -cvf etc.tar /etc
[root@prr ~]# ls -l /root/etc.tar

Listar archivo .tar

[root@prr ~]# tar -tvf /root/etc.tar

Extraer archivo .tar

[root@prr ~]# tar -xvf etc.tar

Ejemplo .tar.gz

Crear archivo .tar.gz

[root@prr ~]# tar -zcvf etc.tar.gz /etc
[root@prr ~]# ls -l /root/etc.tar.gz

Listar archivo .tar.gz

[root@prr ~]# tar -tvf /root/etc.tar.gz

Extraer archivo .tar.gz

[root@prr ~]# tar -zxvf etc.tar.gz

Ejemplos .tar.bz2 NOTA:Validar que el paquete bzip2 este instalado

Crear archivo .tar.bz2

[root@prr ~]# tar -jcvf etc.tar.bz2 /etc
[root@prr ~]# ls -l /root/etc.tar.bz2

Listar archivo .tar.bz2

[root@prr ~]# tar -tvf /root/etc.tar.bz2

Extraer archivo .tar.bz2

[root@prr ~]# tar -jxvf etc.tar.gz

Ejemplos .tar.xz

Crear archivo .tar.xz

[root@prr ~]# tar -Jcvf etc.tar.xz /etc
[root@prr ~]# ls -l /root/etc.tar.xz

Listar archivo .tar.xz

[root@prr ~]# tar -tvf /root/etc.tar.xz

Extraer archivo .tar.xz

[root@prr ~]# tar -Jxvf etc.tar.xz

Verificar los pesos para determinar cual tiene mejor compresion

[root@prr ~]# du -sh etc.*
21M     etc.tar
3.6M    etc.tar.bz2
5.0M    etc.tar.gz
3.1M    etc.tar.xz

5.Describiendo las opciones de búsqueda de archivos.

Búsquedas con locate y find

locate, es un utilitario que permite hacer búsquedas rápidas dentro del sistema operativo. Para utilizar locate debemos tener instalado el paquete mlocate.

[root@prr ~]# yum install -y mlocate
[root@prr ~]# updatedb
[root@prr ~]# locate sshd_config
/etc/ssh/sshd_config
/root/etc/ssh/sshd_config
/usr/share/man/man5/sshd_config.5.gz

Con la opcion -i podemos ignorar el case-sensitive

[root@prr ~]# locate -i message
...
/usr/share/vim/vim80/lang/zh_TW.UTF-8/LC_MESSAGES
/usr/share/vim/vim80/lang/zh_TW.UTF-8/LC_MESSAGES/vim.mo
/usr/share/vim/vim80/syntax/messages.vim
/usr/share/vim/vim80/syntax/msmessages.vim

find, es un utilitario que permite hacer búsquedas avanzadas dentro del sistema operativo. Su estructura es:
find <startingdirectory> <options> <search term>

Ejemplos: Búsqueda en directorios específicos en tiempo real

[root@prr ~]# find /etc -name sshd_config
/etc/ssh/sshd_config

Ingorar case-sensitive

[root@prr ~]# find / -iname message
/var/log/MESSAGE
/usr/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/message
/usr/share/mime/message

Busqueda basada en propietario
user

[root@prr ~]# find / -user prr 2> /dev/null
/var/spool/mail/nova
/home/prr
/home/prr/.bash_logout
/home/prr/.bash_profile
/home/prr/.bashrc

group

[root@prr ~]# find / -group prr 2> /dev/null
/home/prr
/home/prr/.bash_logout
/home/prr/.bash_profile
/home/prr/.bashrc

uid

[root@prr ~]# find / -uid 1000 2> /dev/null
/var/spool/mail/nova
/home/prr
/home/prr/.bash_logout
/home/prr/.bash_profile
/home/prr/.bashrc

gid

[root@prr ~]# find / -gid 1000 2> /dev/null
/home/prr
/home/prr/.bash_logout
/home/prr/.bash_profile
/home/prr/.bashrc

user and group

[root@prr ~]# find / -user root -group mail 2> /dev/null

Busquedas basadas en permisos
perm

[root@prr ~]# find /root/find -perm 600
/root/find/file600
[root@prr find]# ls -l /root/find/file600
-rw-------. 1 root root 0 Aug 24 02:16 /root/find/file600
[root@prr ~]# find /root/find -perm -644
/root/find
/root/find/file644
/root/find/file664
[root@prr find]# ls -l
total 0
-rw-------. 1 root root 0 Aug 24 02:16 file600
-rw-r--r--. 1 root root 0 Aug 24 02:16 file644
-rw-rw-r--. 1 root root 0 Aug 24 02:17 file664
[root@nova find]# ls -ld /root/find/
drwxr-xr-x. 2 root root 51 Aug 24 02:20 /root/find/
[root@prr ~]# find /root/find -perm /004
/root/find
/root/find/file644
/root/find/file664
[root@prr find]# ls -ld /root/find/
drwxr-xr-x. 2 root root 51 Aug 24 02:20 /root/find/

Busquedas basadas en tamaño
size

[root@prr ~]# dd if=/dev/urandom of=/root/find/size10M bs=1M count=10
[root@prr ~]# find /root/find -size 10M
/root/find/size10M
[root@prr ~]# find /root/find -size -10M
/root/find
/root/find/file600
/root/find/file644
/root/find/file664
[root@prr ~]# find /root/find -size +10M
[root@prr ~]#

Laboratorio: Explorando el sistema de archivos linux

En el siguiente laboratorio tendrá que realizar las siguientes operaciones:

  1. Ubicar archivos que tengan la palabra sshd en todo el sistema.
  2. Ubicar archivos que tengan la palabra networkmanager.conf y que ignoren el case-sensitive.
  3. Ubicar dentro de /dev los dispositivos de tipo bloque.
  4. Ubicar los archivos que le pertenecen al usuario nova.
  5. Ubicar en /etc los archivos que tengan la extensión .repo.
  6. Crear un respaldo con tar del directorio /etc el formato de compresión utilizado sera xz. El respaldo deberá ser guardado en /root.
  7. Crear un sosreport para atención del caso de soporte 1000203040. Una vez creado desempaquetar e inspeccionar.

6. Manejo básico de usuarios y grupos.

Hay tres tipos principales de cuentas de usuario: superusuario, usuarios del sistema y usuarios regulares.

Superusuario
La cuenta de superusuario es para la administración del sistema. El nombre del superusuario es root y la cuenta tiene UID 0. El superusuario tiene acceso completo al sistema.

Usuario de sistema o Usuario de servicio
El sistema tiene cuentas de usuario del sistema que son utilizadas por procesos que brindan soporte servicios. Estos procesos, o demonios, generalmente no necesitan ejecutarse como superusuario. Son cuentas no privilegiadas asignadas que les permiten proteger sus archivos y otros recursos de entre sí y de los usuarios regulares del sistema. Los usuarios no inician sesión de forma interactiva mediante un sistema cuenta de usuario.

Usuario o Usuario regular
La mayoría de los usuarios tienen cuentas de usuario regulares que utilizan para su trabajo diario. Como sistema usuarios, los usuarios habituales tienen acceso limitado al sistema.

UID ranges

El UID 0 siempre se asigna a la cuenta de superusuario, root.

El UID 1-200 es un rango de "usuarios del sistema" asignados estáticamente a los procesos del sistema por Red Hat.

El UID 201-999 es un rango de "usuarios del sistema" que utilizan los procesos del sistema que no poseen archivos en el sistema de archivos.

El UID 1000+ es el rango disponible para su asignación a usuarios regulares.

Archivo principal: /etc/passwd
Formato: user01: x :1000:1000:User One:/home/user01:/bin/bash

Las columnas representan la siguiente informacion:

Columna Descripción
1 Nombre del usuario.
2 Password encryptado en /etc/shadow.
3 Identificador de usuario uid.
4 Identificador de grupo guid.
5 Descripción o Gecos.
5 Directorio de trabajo.
6 Shell.

Creación de usuarios locales.

Comando para crear usuario
useradd <opciones> <username>
Comando para modificar usuario
usermod <opciones> <username>
Comando para borrar usuario
userdel <opciones> <username>
Comando para listar opciones
useradd --help o usermod --help o userdel --help

Ejemplos
Crear usuario con uid 1001 y shell /bin/bash

[root@prr ~]# useradd -u 1001 -s /bin/bash operador1001


Asignar contraseña al usuario operador1001

[root@prr ~]# echo "redhat" | passwd --stdin operador1001


Verificador los datos de uid,gid y grupos primarios y secundarios asociados a la cuenta

[root@prr ~]# id operador1001
uid=1001(operador1001) gid=1001(operador1001) groups=1001(operador1001)


Modificar el nombre del usuario operador1001 por operador100

[root@prr ~]# usermod -l operador100 operador1001


Eliminar la cuenta operador100

[root@prr ~]# userdel -r operador100

Administración de grupos locales.

Objetivos: Después de completar esta sección el estudiante estará preparado para:

  • Crear grupos locales y entender los archivos de configuración implicados.

Grupos Locales Linux

Hay dos tipos de grupos: grupos primarios, grupos secundarios o suplementarios.

Grupos primarios
Es el que provee el parámetro gid que es el identificador del grupo primario, por lo general cuando se crea un usuario este grupo se crea con el mismo nombre del usuario y sirve para asignar los permisos para ese usuario a los recursos del sistema.

Grupo secundario o suplementarios
Son los grupos que sea crean con el propósito de agrupar usuarios que realizan tareas en conjunto con un cierto propósito.
Por ejemplo: developers,devops,netadmins,storageadmins, entre otros. Estos deben agregarse al usuario sin modificar su grupo primario.

Archivo principal: /etc/group
Formato: group01: x: 10000: user01,user02,user03

Las columnas representan la siguiente informacion:

Columna Descripción
1 Nombre del grupo.
2 Password de grupo, valor teórico.
3 Identificador de grupo gid.
4 Lista de usuarios.

Creación de grupos locales.

Comando para crear grupo
groupadd <opciones> <groupname>
Comando para modificar grupo
groupmod <opciones> <groupname>
Comando para borrar grupo
groupdel <opciones> <groupname>
Comando para listar opciones
groupadd --help o groupmod --help o groupdel --help

Ejemplos
Crear grupo con gid 2000 y de nombre developers

[root@prr ~]# groupadd -g 2000 developers


Verificador los datos del grupo

[root@prr ~]# grep developers /etc/group
developers:x:2000:


Modificar el nombre del grupo developers por devops

[root@prr ~]# groupmod -n devops developers


Eliminar el grupo devops

[root@prr ~]# groupdel devops


Crear el usuario devops01 y agregar los grupos prod, dev y qa como grupos secundarios.

[root@prr ~]# useradd devops
[root@prr ~]# groupadd prod
[root@prr ~]# groupadd dev
[root@prr ~]# groupadd qa
[root@prr ~]# usermod -aG prod devops
[root@prr ~]# usermod -aG dev devops
[root@prr ~]# usermod -aG qa devops
[root@prr ~]# id devops
uid=1002(devops) gid=1002(devops) groups=1002(devops),2001(prod),2002(dev),2003(qa)

Laboratorio: Explorando el sistema de archivos linux

En el siguiente laboratorio tendrá que realizar las siguientes operaciones:

  1. Crear el grupo prod con identificador de grupo 2000
  2. Crear el grupo dev con identificador de grupo 3000
  3. Crear el grupo qa con identificador de grupo 4000
  4. Crear los usuarios jonas, martha, claudia los cuales deberán pertenecer al grupo prod como grupo secundario
  5. Crear los usuarios hannah, katharina, charlotte los cuales deberán pertenecer al grupo dev como grupo secundario.
  6. Crear los usuarios noah, helge, peter los cuales deberán pertenecer al grupo qa como grupo secundario. Nota: El password para todos los usuarios deberá ser redhat y deberán conservar su grupo primario.
⚠️ **GitHub.com Fallback** ⚠️