├── .vscode └── settings.json ├── img ├── LPIC-1-Small.png └── systemd-vs-sysVinit-chuleta.jpg ├── docs ├── 101-500 │ ├── img │ │ ├── lvm.png │ │ ├── vim.png │ │ ├── signals.png │ │ ├── tableofcontent.png │ │ └── FileSystemHierarchy.png │ ├── test.md │ ├── Tema_101_dudas.md │ ├── cambios_v4-v5.md │ ├── 104:Dispositivos-sistemas-de-archivos-Linux-y-el-estandar-de-jerarquia-de-archivos.md │ ├── 102:Instalacion-de-Linux-y-gestion-de-paquetes.md │ ├── 101:Arquitectura-del-Sistema.md │ └── 103:Comandos-GNU-y-Unix.md ├── 102-500 │ ├── img │ │ ├── port.png │ │ ├── log_facilities.png │ │ └── loggin_priority.png │ ├── scripts │ │ ├── out.log │ │ ├── web-backup.sh │ │ ├── web-backup.timer │ │ ├── web-backup.service │ │ └── if.sh │ ├── 106:Interfaces-de-usuario.y-escritorios.md │ ├── 105:Shells-y-scripts.md │ ├── 109:Fundamentos-de-redes.md │ ├── 107:Tareas-administrativas.md │ ├── 108:Servicios-esenciales-del-sistema.md │ └── 110:Seguridad.md └── trucos.md ├── .gitignore ├── objetivos_102.md ├── websites.md ├── README.md └── objetivos_101.md /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.language": ",es" 3 | } -------------------------------------------------------------------------------- /img/LPIC-1-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SorianoTech/LPIC-1/HEAD/img/LPIC-1-Small.png -------------------------------------------------------------------------------- /docs/101-500/img/lvm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SorianoTech/LPIC-1/HEAD/docs/101-500/img/lvm.png -------------------------------------------------------------------------------- /docs/101-500/img/vim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SorianoTech/LPIC-1/HEAD/docs/101-500/img/vim.png -------------------------------------------------------------------------------- /docs/102-500/img/port.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SorianoTech/LPIC-1/HEAD/docs/102-500/img/port.png -------------------------------------------------------------------------------- /docs/101-500/img/signals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SorianoTech/LPIC-1/HEAD/docs/101-500/img/signals.png -------------------------------------------------------------------------------- /docs/102-500/scripts/out.log: -------------------------------------------------------------------------------- 1 | if.sh 2 | learnyoubash 3 | out.log 4 | /home/sergio/GITHUB/LPIC-1/docs/102-500/scripts 5 | -------------------------------------------------------------------------------- /docs/101-500/img/tableofcontent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SorianoTech/LPIC-1/HEAD/docs/101-500/img/tableofcontent.png -------------------------------------------------------------------------------- /docs/102-500/img/log_facilities.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SorianoTech/LPIC-1/HEAD/docs/102-500/img/log_facilities.png -------------------------------------------------------------------------------- /docs/102-500/img/loggin_priority.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SorianoTech/LPIC-1/HEAD/docs/102-500/img/loggin_priority.png -------------------------------------------------------------------------------- /img/systemd-vs-sysVinit-chuleta.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SorianoTech/LPIC-1/HEAD/img/systemd-vs-sysVinit-chuleta.jpg -------------------------------------------------------------------------------- /docs/trucos.md: -------------------------------------------------------------------------------- 1 | ### Buscar en las páginas de manuales de linux 2 | 3 | Presionar la tecla `/` e introducir el texto a buscar. 4 | -------------------------------------------------------------------------------- /docs/101-500/img/FileSystemHierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SorianoTech/LPIC-1/HEAD/docs/101-500/img/FileSystemHierarchy.png -------------------------------------------------------------------------------- /docs/102-500/scripts/web-backup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DATE=$(date "+%d") 4 | 5 | /bin/tar -czf /root/site-backup-$DATE.tar.gz /var/www/html 6 | -------------------------------------------------------------------------------- /docs/101-500/test.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1. [ Description. ](#desc) 4 | 2. [ Usage tips. ](#usage) 5 | 6 | 7 | ## 1. Description 8 | 9 | sometext 10 | 11 | 12 | ## 2. Usage tips 13 | -------------------------------------------------------------------------------- /docs/102-500/scripts/web-backup.timer: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Fire off the backup 3 | 4 | [Timer] 5 | OnCalendar=*-*-* 23:00:00 6 | Persistent=true 7 | Unit=web-backup.service 8 | 9 | [Install] 10 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Files to ignore 2 | docs/101-500/test.md 3 | 4 | 5 | # OS generated files # 6 | ###################### 7 | .DS_Store 8 | .DS_Store? 9 | ._* 10 | .Spotlight-V100 11 | .Trashes 12 | ehthumbs.db 13 | Thumbs.db 14 | settings.json 15 | .vscode -------------------------------------------------------------------------------- /docs/102-500/scripts/web-backup.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Backup the web site, every day, or the boss will be mad 3 | 4 | [Service] 5 | Type=simple 6 | ExecStart=/usr/local/sbin/web-backup.sh 7 | 8 | [Install] 9 | WantedBy=multi-user.target 10 | -------------------------------------------------------------------------------- /objetivos_102.md: -------------------------------------------------------------------------------- 1 | # Tabla de contenido :+1: 2 | 3 | ## Objetivos del examen 102 4 | 5 | - [ ] [Tema 105: Shells y scripts](docs/102-500/Tema_105.md) 6 | - [ ] [Tema 106: Interfaces de usuario y escritorios](docs/102-500/Tema_106.md) 7 | - [ ] [Tema 107: Tareas administrativas](docs/102-500/Tema_106.md) 8 | - [ ] [Tema 108: Servicios esenciales del sistema](docs/102-500/Tema_107.md) 9 | - [ ] [Tema 109: Fundamentos de redes](docs/102-500/Tema_108.md) 10 | - [ ] [Tema 110: Seguridad](docs/102-500/Tema_109.md) 11 | -------------------------------------------------------------------------------- /websites.md: -------------------------------------------------------------------------------- 1 | # Webs principales para seguir la guia de estudio 2 | 3 | https://wiki.lpi.org/wiki/LPIC-1_Objectives_V5.0 4 | https://wiki.lpi.org/wiki/LPIC-1_Objectives_V5.0(ES) 5 | 6 | https://developer.ibm.com/tutorials/l-lpic1-101-1/ 7 | 8 | https://github.com/appijumbo/Linux-LPIC-1/wiki/101:-System-Architecture 9 | 10 | webminar 11 | https://www.youtube.com/watch?v=e3Y7CSbArbo 12 | 13 | The linux man, filesystem en linux 14 | https://www.youtube.com/watch?v=g7OkSvioFlU 15 | 16 | https://www.youtube.com/watch?v=HIXzJ3Rz9po 17 | 18 | https://quizlet.com/306700585/linux-academy-practice-test-lpic-1-flash-cards/ 19 | -------------------------------------------------------------------------------- /docs/102-500/scripts/if.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Si existe la carpeta opt or el fichero host, entonces dara verdadero. 3 | if [[-d /opt || -f ~/etc/host]]; then 4 | echo "Esta condicion es verdadera." 5 | else 6 | echo "Esta condicion es falsa." 7 | fi 8 | 9 | 10 | #condicion preguntado el valor de una Variable 11 | VALUE="things" 12 | 13 | if [[ "$VALUE" = "things"]]; then 14 | echo "This is 'things'" 15 | else 16 | echo "This is not the right word." 17 | fi 18 | 19 | if [[ "$VALUE" != "things"]]; then 20 | echo "This is 'things'" 21 | else 22 | echo "This is not the right word." 23 | fi 24 | 25 | 26 | if [[$1 = "y"]]; then 27 | echo "Has dicho 'si'" 28 | elif [[$1 = "n"]]; then 29 | echo "Has dicho 'no'" 30 | else 31 | echo "Has introducido una opcion incorrecta" 32 | fi 33 | -------------------------------------------------------------------------------- /docs/101-500/Tema_101_dudas.md: -------------------------------------------------------------------------------- 1 | # Aprendiendo con preguntas sobre el tema 101 2 | 3 | ¿Qué diferencia existe entre BIOS y UEFI? 4 | 5 | ¿Qué diferencia existe entre un sistema de ficheros(fylesystem) y un directorio? 6 | 7 | Ejercicio 1. 8 | Eliminar un dispositivo integrado del sistema 9 | 10 | 11 | Diferencias entre UEFI y BIOS, EFI MRB 12 | 13 | UEFI predecesor de BIOS 14 | EFI y luego aparecion UEFI 15 | BIOS tiene MBR 16 | 17 | 18 | ## Dudas examen Linux Academy 19 | 20 | systemctl o systemd 21 | 22 | - [x] ¿Cuáles son los parámetros necesarios para el comando `dd`? 23 | 24 | ¿Qué significa el primer dígito al modificar los permisos con el commando chmod, por ejemplo 1775? 25 | sticky bitsticky bit 26 | 27 | ¿Que ocurre si tengo activo todos los bits? 28 | 29 | ¿Para que sirve el digito stykibit? 30 | 31 | ¿Cuáles son las capas de particionado en los sistemas LVM? 32 | 33 | ¿Para que sirve el comando set -o noclobber? 34 | 35 | ¿Cómo podemos ejecutar un comando y que se muestre en pantalla cada 10 segundos? 36 | 37 | 38 | ¿Para que sirve el comando tmux? 39 | 40 | 41 | ¿Dónde podemos encontrar todos lo programas instalados? 42 | 43 | ¿Dónde podemos ver todos los programas que arrancan al inicio del sistema? 44 | 45 | 46 | ¿Para que sirve systemctl? 47 | 48 | ¿Cómo podemos añadir un programa al arranque de inicio? 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /docs/102-500/106:Interfaces-de-usuario.y-escritorios.md: -------------------------------------------------------------------------------- 1 | ## 106: Interfaces de usuario y escritorios 2 | 3 | ### 106.1 Instalar y configurar X11 4 | 5 | #### 106.1.1 The Basics of X11 6 | 7 | X11 lo llevan los antiguos sistemas (CentOS 5) 8 | Wayland - remplaza al sistema de ventas X. 9 | 10 | #### 106.1.2 Instalando X11 11 | 12 | `yum grouplist` - para ver los grupos de instalaciones. 13 | 14 | `yum -y groupinstall "X Windows System"` 15 | 16 | x.org se encarga de llevar el proyecto. 17 | 18 | Podemos encontrar el fichero de configuración en `/etc/init` y veremos que apunta a `/etc/X11/prefdm` 19 | 20 | #### 106.1.3 Configuraciones de X11 21 | 22 | `xorg.conf` - fichero de configuración de entorno visual de ventanas X 23 | 24 | man `xorg,conf` - para ver toda la documentación sobre la configuración del entorno de ventanas. 25 | 26 | `xdpyinfo` - muestra información sobre la sesión de ventanas. 27 | 28 | #### 106.1.4 Conexiones gráficas remotas 29 | 30 | `xhost` - no usar para entornos de producción. (Se usaba antes) con este comando podemos habilitar o deshabilitar el acceso remoto. 31 | 32 | ```console 33 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  xhost 34 | access control enabled, only authorized clients can connect 35 | SI:localuser:sergio 36 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  xhost - 37 | access control enabled, only authorized clients can connect 38 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  xhost + 39 | access control disabled, clients can connect from any host 40 | ``` 41 | 42 | `xauth` - sirve para editar y ver información de seguridad que permita a los usuarios controlar los clientes de ventanas X11. 43 | 44 | `VNC` - Virtual Network computing. 45 | 46 | Instalar el servidor de VNV: 47 | 48 | `yum install tigervnc-server` 49 | 50 | **Demo** de como configurar un servidor VNC y crear una redirección de puertos por ssh para conectarnos de forma segura. 51 | 52 | `ssh -C -L 5901:localhost:5901 192.168.122.241` 53 | 54 | 5901:localhost - puerto y dirección local 55 | 56 | 5901 192.168.122.241 - puerto y dirección remota 57 | 58 | Ahora podemos utilizar la ip local para conectarnos por VNC al escritorio remoto 59 | 60 | `SPICE` - Protocolo de conexión seguro encriptado con TLS, permite conexiones con sistemas Windows, linux y android. 61 | 62 | --- 63 | 64 | ### 106.2 Escritorios Gráficos 65 | 66 | GTK+ : desarrolladas en C 67 | 68 | - GNOME 69 | - XFCE 70 | 71 | QT : desarrolladas en C++ 72 | 73 | - KDE 74 | 75 | ### 106.3 Accesibilidad 76 | 77 | Configuración especifica de accesibildad, como zoom, punteros, lectura de ventanas por voz, etc. 78 | Orca permite la configuración de accesibilidad, centrándonos en la configuración de screen reader. 79 | -------------------------------------------------------------------------------- /docs/101-500/cambios_v4-v5.md: -------------------------------------------------------------------------------- 1 | # Tabla de contenido a revisar de la version 4 a la 5 del **Examen 101** 2 | 3 | - [101: System Architecture](#101-system-architecture) 4 | - 5 | 6 | The following changes constitute the update of exam 101 from version 4.0 to version 5.0: 7 | 8 | # 101: System Architecture 9 | 10 | ## 101.1 Determine and configure hardware settings 11 | Removed 'Configure systems with or without external peripherals such as keyboards.' 12 | Removed 'Know the differences between coldplug and hotplug devices.' 13 | 14 | ## 101.2 Boot the system 15 | Added coverage of UEFI (equal to BIOS coverage) and journalctl (with respect to boot events) 16 | 17 | ## 101.3 Change runlevels / boot targets and shutdown or reboot system 18 | Added awareness of acpid 19 | 20 | # 102: Linux Installation and Package Management 21 | 22 | ## 102.1 Design hard disk layout 23 | Added EFI System Partition (ESP) 24 | 25 | ## 102.2 Install a boot manager 26 | (no changes) 27 | 28 | ## 102.3 Manage shared libraries 29 | (no changes) 30 | 31 | ## 102.4 Use Debian package management 32 | Removed aptitude 33 | Added awareness of apt. 34 | 35 | ## 102.5 Use RPM and YUM package management 36 | Removed yumdownloader 37 | Added Zypper (equal to YUM) 38 | Added awareness of dnf 39 | 102.6 Linux as a virtualization guest 40 | New objective (weight: 1) 41 | Added specialties of running Linux in a virtual machines and containers on premise and in the cloud 42 | 43 | # 103: GNU and Unix Commands 44 | 45 | 103.1 Work on the command line 46 | Added quoting 47 | Added type and which 48 | 49 | 103.2 Process text streams using filters 50 | Decreased weight from 3 to 2 51 | Removed expand, fmt, join, pr and unexpand 52 | Added bzcat, md5sum, sha256sum, sha512sum, xzcat and zcat 53 | 54 | 103.3 Perform basic file management 55 | Added bunzip2 and unxz 56 | 57 | 103.4 Use streams, pipes and redirects 58 | (no changes) 59 | 60 | 103.5 Create, monitor and kill processes 61 | Added watch and tmux 62 | 63 | 103.6 Modify process execution priorities 64 | (no changes) 65 | 66 | 103.7 Search text files using regular expressions 67 | Increased weight from 2 to 3 68 | Added understanding of the differences between basic and extended regular expressions 69 | Added understanding of the concepts of special characters, character classes, quantifiers and anchors 70 | Added use of regular expressions to delete, change and substitute text 71 | 72 | 103.8 Basic file editing 73 | Renamed from 'Perform basic file editing operations using vi' to ' Basic file editing' 74 | Clarified wording of 'Understand and use vi modes.' 75 | Removed vi commands c and :e! 76 | Added awareness of other common editors (Emacs, nano and vim) and setting the default editor (EDITOR environment variable) 77 | 78 | 104: Devices, Linux Filesystems, Filesystem Hierarchy Standard 79 | 104.1 Create partitions and filesystems 80 | Removed awareness of ReiserFS 81 | Added GPT partition tables 82 | Added exFAT 83 | Changed awareness of Btrfs to 'Basic feature knowledge of Btrfs, including multi-device filesystems, compression and subvolumes.' 84 | 85 | 104.2 Maintain the integrity of filesystems 86 | Removed debugfs and dumpe2fs 87 | Changed 'XFS tools (such as xfs_metadump and xfs_info)' to coverage of xfs_repair, xfs_fsr and xfs_db 88 | 89 | 104.3 Control mounting and unmounting of filesystems 90 | Added use of labels and UUIDs for identifying and mounting file systems 91 | Added awareness of systemd mount units 92 | Added blkid and lsblk 93 | 94 | 104.4 Manage disk quotas 95 | Removed objective (former weight: 1) 96 | 97 | 104.5 Manage file permissions and ownership 98 | (no changes) 99 | 100 | 104.6 Create and change hard and symbolic links 101 | (no changes) 102 | 103 | 104.7 Find system files and place files in the correct location 104 | (no changes) -------------------------------------------------------------------------------- /docs/102-500/105:Shells-y-scripts.md: -------------------------------------------------------------------------------- 1 | # Tema 105: Shells y scripts 2 | 3 | [BASH (Bourne-again shell](https://es.wikipedia.org/wiki/Bash)) - es un programa escrito en C que interpreta las ordenes escritas por consola para interactuar con el sistema. [Manual](https://www.gnu.org/software/bash/manual/) 4 | 5 | ## 105.1 Personalizar y usar el entorno de shell 6 | 7 | ### Setting Up the Shell Environment 8 | 9 | Tenemos que tener en cuenta que hay varios tipos de consolas: 10 | 11 | - **Consolas interactivas de acceso**. (Interactives Login Shell). 12 | 13 | - Es la consola que se crea cuando te logas en una ventana de terminal sin escritorio. 14 | - Consola que se crea cuando nos logamos por SSH. 15 | 16 | - **Consola interactiva sin acceso**. (Non-login terminal) 17 | - Es una consola creada por otra aplicación, por ejemplo la terminal que abrimos desde un entorno de escritorio en GNOME. 18 | 19 | > Si hacemos un echo \$0 sobre la terminal podemos saber que tipo de consola es 20 | 21 | Login Shell: `bash` 22 | Non-Login Shell: `-bash` 23 | 24 | > La diferencia esta en el carácter "-" 25 | 26 | **Archivos** 27 | 28 | `/etc/profile` - es el primero fichero que se lee cuando se accede a una nueva sesión. Configura las variables de entorno que serán usadas por esta consola, como valore de umask, historial de bash, etc. 29 | 30 | `/etc/profile.d/` - directorio que contiene scripts de configuración extra para bash. 31 | 32 | `/etc/bashrc` - fichero de configuración de funciones y alias. 33 | 34 | `/etc/skel` - es el directorio que contiene la plantillas que se aplican cuando se crea un usuario nuevo. 35 | 36 | Para modificar los alias y las funciones de un usuario tendremos que modificar el fichero `~/.bashrc`. 37 | 38 | ### Customizing the Shell Environment 39 | 40 | `env` - nos muestra todas las variables de entorno configuradas para la shell actual. 41 | 42 | `export` - comando para exportar una variable de entorno para la bash actual y las bash que se creen por debajo de ella. 43 | 44 | `set` - nos muestra la configuración de todas las consolas bash, variables y funciones. Puede ser utilizado para habilitar y deshabilitar configuraciones de la bash. 45 | 46 | Por ejemplo si queremos deshabilitar el file globing `set -f` . Para volver habilitar usamos `set +f`. 47 | 48 | `unset` - se utiliza para borrar una variable de entorno. 49 | 50 | `Alias` - los alias son acceso directos a comandos y se añaden en el fichero bashrc. 51 | 52 | `function` - las funciones son una serie de ordenes que se ejecutan cuando la función es llamada. Es útil para tareas repetitivas. 53 | 54 | En caso de que cambiemos o añadamos algún **alias** el fichero de **bashrc**, tenemos que pararle la opcion `source` para que se actualice. 55 | 56 | ```s 57 | source ~/.bashrc 58 | ``` 59 | 60 | `PATH` - es la variable de entorno que contiene los directorios que la bash utilizara para poder ejectuar un programa sin tener que especificar la ruta completa. Es una variable muy importate. 61 | 62 | ## 105.2 Personalización y escritura de scripts sencillos 63 | 64 | Los scripts son una colección de comandos que hacen alguna acción concreta. 65 | 66 | Los scripts se identifican por el tipo de consola en la que se ejecutan. 67 | 68 | Indicamos que el script lo va a ejecutar la shell de **bash**. 69 | 70 | ```s 71 | #!/bin/bash 72 | ``` 73 | 74 | Se pueden pasar parametos a la ejecución de scripts definiendolos así -> `$1` parametro 1, por ejemplo `./myscript.sh text.txt` lanzará el script tomando como valor `$1` `text.txt`. 75 | 76 | ### Basic Shell Scripts 77 | 78 | ```s 79 | #!/bin/bash 80 | # Crea un fichero vacio y añade contenido a el 81 | touch $1 82 | echo "Esto es un fichero de prueba" > $1 83 | #Lanzo un clear para limpiar la pantalla y muestro el fichero 84 | clear 85 | cat $1 86 | ``` 87 | 88 | **¿Dónde están ubicados los script del sistema?** 89 | 90 | - `/usr/bin` - script del sistema 91 | - `/usr/local/bin/` - scripts instalados o creados por los usuarios para ser utilizados en el sistema local. 92 | - `/home/user/bin` - scripts creados por el usuario y solo disponibles para el usuarios. 93 | 94 | ### Bash Loops and Sequences 95 | 96 | - `for` 97 | - `while` 98 | - `until` 99 | 100 | Ejemplos [aquí](https://es.wikibooks.org/wiki/El_Manual_de_BASH_Scripting_B%C3%A1sico_para_Principiantes) 101 | 102 | --- 103 | 104 | `read` Leemos lo que introducimos por teclado y lo guardamos en la variable GRETTING. `read GREETING`. 105 | 106 | `exit` - para especificar el retorno de salida, normalmente seria 0, pero se puede cambiar a otro numero, por ejemplo para salir en un bucle. 107 | 108 | `exec` - se puede utilizar para re-direccionar la salida de una shell a un fichero. `exec > out .log` 109 | 110 | --- 111 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LPIC-1 2 | 3 | Guía de estudio de preparación para la certificación LPIC-1. 4 | 5 | LPIC son las siglas de **Linux Professional Institute Certification**. 6 | 7 | ![logo_lpic](img/LPIC-1-Small.png) 8 | 9 | A fecha de 03/04/2019 esta certificación se encuentra en la versión 5.0 y los códigos de examen son 101-500 y 102-500. El examen no esta disponible en idioma español, aunque la version 4.0 esta disponible hasta Julio de 2019. 10 | 11 | Se divide en dos exámenes: :+1: 12 | 13 | - Examen 101 14 | - Examen 102 15 | 16 | ## Objetivos del examen 101 17 | 18 | - [ ] [Tema 101: Arquitectura del Sistema](docs/101-500/101:Arquitectura-del-Sistema.md) 19 | - [ ] [Tema 102: Instalación de Linux y gestión de paquetes](docs/101-500/102:Instalacion-de-Linux-y-gestion-de-paquetes.md) 20 | - [ ] [Tema 103: Comandos GNU y Unix](docs/101-500/103:Comandos-GNU-y-Unix.md) 21 | - [ ] [Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos](docs/101-500/104:Dispositivos-sistemas-de-archivos-Linux-y-el-estandar-de-jerarquia-de-archivos.md) 22 | 23 | ## Objetivos del examen 102 24 | 25 | - [ ] [Tema 105: Shells y scripts](docs/102-500/105:Shells-y-scripts.md) 26 | - [ ] [Tema 106: Interfaces de usuario y escritorios](docs/102-500/106:Interfaces-de-usuario.y-escritorios.md) 27 | - [ ] [Tema 107: Tareas administrativas](docs/102-500/107:Tareas-administrativas.md) 28 | - [ ] [Tema 108: Servicios esenciales del sistema](docs/102-500/108:Servicios-esenciales-del-sistema.md) 29 | - [ ] [Tema 109: Fundamentos de redes](docs/102-500/109:Fundamentos-de-redes.md) 30 | - [ ] [Tema 110: Seguridad](docs/102-500/110:Seguridad.md) 31 | 32 | Al obtener esta certificación se obtiene los conocimientos necesarios para: 33 | 34 | - Comprender la arquitectura de un sistema Linux. 35 | - Instalar y mantener una estación de trabajo Linux, incluyendo X11 y su configuración como un cliente de red. 36 | - Trabajar en la línea de comandos de Linux, incluidos los comandos comunes de GNU y Unix. 37 | - Manejar archivos y permisos de acceso, así como la seguridad del sistema. 38 | - Realizar tareas de mantenimiento: ayudar a los usuarios, agregar usuarios a un sistema más grande, realizar copias de seguridad y restaurar, apagar y reiniciar. 39 | 40 | Al obtener esta certificación se garantiza que has adquirido unos conocimientos suficientes para resolver los problemas más comunes con los que te puedes encontrar cuando trabajas con sistemas UNIX. 41 | 42 | ## FAQ 43 | 44 | ### Preguntas para resolver sobre la certificación 45 | 46 | **¿El examen se puede realizar en español?** 47 | Si, tanto en español como en inglés. 48 | 49 | **¿Cómo son los exámenes?** 50 | Cada examen tiene 60 preguntas tipo test de selección múltiple o preguntas de rellenar. 51 | 52 | **¿Cuanto dura el examen?** 53 | Se dispone de 90 minutos 54 | 55 | **¿Qué nota tengo que sacar para superar cada examen?** 56 | Cada examen tiene un peso de 800 puntos. Deberás obtener al menos 500 en cada examen. 57 | 58 | **¿Qué significa eso del peso de las preguntas** 59 | El peso de las preguntas en cada una de las partes del examen, significa que si un apartado tiene un peso de 4, en el examen habrá 4 preguntas de ese tema. 60 | 61 | **¿Cuánto cuesta el examen?** 62 | 170€ aprox. cada examen. Tienes que hacer los dos para obtener la certificación. 63 | 64 | **¿Durante qué tiempo es válida la certificación?** 65 | Tu certificación LPIC-1 será válida durante 5 años. 66 | 67 | **¿Dónde se realizan los exámenes?¿Presencial o online?** 68 | Los exámenes se realizan de forma presencial en centros asociados o centros PearsonVue. Puedes consultar tu centro más cercano [aquí](https://wsr.pearsonvue.com/testtaker/registration/SelectTestCenterProximity/LINUXPROFESSION?conversationId=1290514) 69 | 70 | El centro mas cercano en madrid esta en: 71 | 72 | ``` 73 | AZPE Centro de Estudios 74 | c/ Gran Via 40, 1ª (Metro Callao) 75 | 28013 Madrid 76 | Spain 77 | Phone: 78 | 0034915323659 79 | ``` 80 | 81 | **¿Qué debo hacer si quiero presentarme al examen?** 82 | 83 | 1. Debes estar registrado en la Linux Professional Institute para obtener un _LPI ID_. Pues registrarte [aquí](https://cs.lpi.org/caf/Xamman/register). Tardan 24 h en generarte el ID. 84 | 2. Registrarte en PearsonVue utilizando el _LPI ID_ [aquí](https://home.pearsonvue.com/lpi). 85 | 3. Buscar un centro mas cercano de PearsonVue. 86 | 87 | ## Enlaces 88 | 89 | [Wiki con los objetivos de la version 5.0]() 90 | 91 | [Wiki del contenido en github](https://github.com/appijumbo/Linux-LPIC-1/wiki) 92 | 93 | [Materiales de estudio en español](http://www.lpifit.com/course/) 94 | 95 | [Consola de linux Online](https://www.tutorialspoint.com/unix_terminal_online.php) 96 | 97 | [Cursos oficiales PUE](https://www.pue.es/cursos/lpi) 98 | 99 | [FAQ LPIC](mbRadvvMT51IjsN8gsTz) 100 | 101 | ### Documentación oficial Linux 102 | 103 | [The Linux Document Project](http://www.tldp.org/) 104 | 105 | [GNU Project](http://www.gnu.org/doc/) 106 | 107 | [Man pages](https://linux.die.net/man/) 108 | 109 | [Free Software Directory](https://directory.fsf.org/wiki/Main_Page) 110 | 111 | ### Blog's 112 | 113 | [Blog de contenido Linux](http://www.linuxlinks.com) 114 | 115 | [Systemadmin.es](http://systemadmin.es/) 116 | 117 | ### Videos 118 | 119 | [Lista de reproducción de youtube LPIC-1](https://www.youtube.com/watch?v=Fov9nM-AbSw&list=PLD_mb6U5Xp95cX_CDO3Cg-p8370lPwRR2) 120 | 121 | [The Linux man](https://www.youtube.com/channel/UCVQ7kPpJJ2FA_iYl8Wtx0SA) 122 | 123 | ### Canales de ayuda 124 | 125 | [Freenode](https://webchat.freenode.net) 126 | 127 | [Buscador de canales IRC](http://irc.netsplit.de/channels/) 128 | 129 | [Canal Freenode para principiantes](http://irc2go.com/webchat/?net=freenode&room=%23linux-beginners) 130 | 131 | ### Cursos de pago por suscripción online 132 | 133 | [Openwebminars LPIC-1 ](https://openwebinars.net/carreras/certificacion-lpic-1/) 134 | 135 | [Linux Academy](https://linuxacademy.com/cp/modules/view/id/214) 136 | 137 | ### Mas información 138 | 139 | [Free Software Fundation](https://www.fsf.org/) 140 | 141 | Distribuciones 142 | 143 | [ArchLinux](https://wiki.archlinux.org/index.php/Main_page_(Espa%C3%B1ol) 144 | 145 | [LinuxFreedom](http://linuxfreedom.com/Distros/) 146 | -------------------------------------------------------------------------------- /docs/102-500/109:Fundamentos-de-redes.md: -------------------------------------------------------------------------------- 1 | # 109: Fundamentos de redes 2 | 3 | ## 109.1 Fundamentos de los protocolos de Internet 4 | 5 | ### Fundamentos de red 6 | 7 | - **TCP** Transmission Control Protocol 8 | - **UDP** User Datagram Protocol 9 | - **ICMP** Internet Control Message Protocol, se utiliza para enviar mensajes entre dispositivos(switches, firewall, etc). 10 | 11 | Los rangos de IP se describen en el [RFC1918](https://tools.ietf.org/html/rfc1918). 12 | 13 | - Clase A: Ragngo 1 -126 14 | - Clase B: Rango 128 - 191 15 | - Clase C Rango 192 -223 16 | 17 | Mascaras de red: 18 | 19 | - Clase A: 255.0.0.0/8 20 | - Clase B: 255.255.0/16 21 | - Clase C: 255.255.255.0/24 22 | 23 | **Gateway** 24 | **Broadcast Address** 25 | 26 | --- 27 | 28 | ### Common Networking Services 29 | 30 | Es necesario memoriazar el puerto, el protocolo y el servicio. 31 | 32 | ![Port](img/port.png) 33 | 34 | ## 109.2 Configuración de red persistente 35 | 36 | ### Network manager 37 | 38 | `nmcli` - comando para ver los interfaces de red. 39 | `nmcli dev show` - muestra toda la informacion de los interfaces de red. 40 | 41 | Nombres de los dispositivos de red 42 | 43 | Nomenclatura principal: 44 | 45 | - **en** = ethernet 46 | - **wl** = wireless 47 | 48 | - eo1 = onboar devices, indexado por la bios o el firmware. 49 | - ens1 = dispositvos en PCI Express hotplug slot, indexado por la BIOS o firmware. 50 | - enp2s0 - dispositivios físicos. (p=bus, s=slot) 51 | - eht0 - antiguo. 52 | 53 | `nmcli con show` - para ver las conexiones que tenemos establecidas. 54 | 55 | Tirar abajo un dispositivo de red: 56 | 57 | ``` 58 | nmcli con down "NAME" 59 | ``` 60 | 61 | `nmcli device status` - para ver el estado de los interfaces. 62 | 63 | Añadir una nueva conexión y añadir el dns. 64 | 65 | ``` 66 | nmcli con add con-name "backup" type ethernet ip4 192.168.0.202/24 gtw 192.168.0.1 iframe ens11 autoconnect 67 | 68 | nmcli con mod bakcup ipv4.dns "192.168.122.1" 69 | ``` 70 | 71 | `iframe` - es el dispositivo que queremos que utilice. 72 | 73 | `nmcli con edit` - comando para edir una conexión. 74 | 75 | `ip` - comando para modificar la dirección ip, rutas y informacion de los interfaces. Es un proyecto de [iproute2](https://es.wikipedia.org/wiki/Iproute2). 76 | 77 | `hostnamectl` - comando para hacer persistente el cambio de hostname 78 | 79 | ``` 80 | hostnamectl -set-hostname "centos07" 81 | ``` 82 | 83 | --- 84 | 85 | ### Herramietas de red antiguas(legact) 86 | 87 | net-tools 88 | 89 | `ifconfig` - antigua utilidad para las configuraciones de red. 90 | 91 | `ifup` - levantar un interface. 92 | 93 | `ifdown` - tirar un interface. 94 | 95 | `route` - cambiar la routa de acceso de los interfaces. 96 | 97 | ## 109.3 Resolución de problemas básicos de red 98 | 99 | ### Pruebas de conexion 100 | 101 | `ping` - envia paquetes ICMP pra comprobar la conexión cono otra máquina. 102 | 103 | `ping6` - la misma funcionalidad que ping pero para redes IPv6. 104 | 105 | `traceroute` - muestra ala lista de saltos que el paquete tiene que atravesar para llegar a su destino. Envia paquetes ICMP, algunos firewall bloquean este tipo de paquetes. 106 | 107 | Enviamos paquetes TCP 108 | 109 | ``` 110 | traceroute -T 8.8.8.8 111 | ``` 112 | 113 | `netstat` - antigua herramienta para ver las conexiones que tenemos establecidas 114 | 115 | Mostrar conexiones activas y escuchando por el protocolo TCP 116 | 117 | ``` 118 | netstat -tl 119 | ``` 120 | 121 | Mostrar las conexiones activas y escuchando por el protocolo UDP 122 | 123 | ``` 124 | netstat -ul 125 | ``` 126 | 127 | Ver los procesos a sociados a las conexiones que estan escuchando. 128 | 129 | ``` 130 | netstat -tulp 131 | ``` 132 | 133 | `tracepath` - la misma funcionalidad de que traceroute pero para redes IPv6. 134 | 135 | `ss` - es el equivalente moderno a netstat, podemos utilizar los mismos parámetros para ver la informacion. 136 | 137 | ## 109.4 Configuración DNS en el lado del cliente 138 | 139 | ### The Basics of DNS Resolution from Linux 140 | 141 | `/etc/host` - ficher que contiene la direccion de loopbak de IPv4 y IPv6, se puede utilizar para asignar cual ip a un DNS sin que pase por un DNS externo. 142 | 143 | `/etc/hostname/` - contiene el nombre de la maquina. Con el comando **hostnamectl** pordemos cambiar el nombre y que sea permanente. 144 | 145 | `/etc/resolv.conf` - contiene los servidores de nombres (DNS) que la máquina utiliza para consultar las direcciones de nombres asiganadas a las IP. 146 | 147 | `/etc/nsswitch.conf` - este fichero es usado para determinar el orden de como se resuelven los nombres. 148 | 149 | `hosts` - resuleve la ip dandole un nombre, tambien podemos ver los servidores de correo. Los numeros equivialen a la prioridad de entrega. 150 | 151 | ```s 152 | host sergiosoriano.es 153 | sergiosoriano.es has address 104.24.101.12 154 | sergiosoriano.es has address 104.24.100.12 155 | sergiosoriano.es has IPv6 address 2606:4700:30::6818:650c 156 | sergiosoriano.es has IPv6 address 2606:4700:30::6818:640c 157 | sergiosoriano.es mail is handled by 1 aspmx.l.google.com. 158 | sergiosoriano.es mail is handled by 10 alt4.aspmx.l.google.com. 159 | sergiosoriano.es mail is handled by 5 alt1.aspmx.l.google.com. 160 | sergiosoriano.es mail is handled by 10 alt3.aspmx.l.google.com. 161 | sergiosoriano.es mail is handled by 5 alt2.aspmx.l.google.com. 162 | ``` 163 | 164 | `dig` - se utiliza para realizar una query a los servidores de DNS. 165 | 166 | Realizamos una consulta al DNS para saber que direccion equivale mi página web. 167 | 168 | ```s 169 | dig sergiosoriano.es 170 | 171 | ; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> sergiosoriano.es 172 | ;; global options: +cmd 173 | ;; Got answer: 174 | ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14907 175 | ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 176 | 177 | ;; OPT PSEUDOSECTION: 178 | ; EDNS: version: 0, flags:; udp: 4096 179 | ;; QUESTION SECTION: 180 | ;sergiosoriano.es. IN A 181 | 182 | ;; ANSWER SECTION: 183 | sergiosoriano.es. 158 IN A 104.24.100.12 184 | sergiosoriano.es. 158 IN A 104.24.101.12 185 | 186 | ;; Query time: 2 msec 187 | ;; SERVER: 192.168.0.1#53(192.168.0.1) 188 | ;; WHEN: Thu Jun 20 07:14:40 CEST 2019 189 | ;; MSG SIZE rcvd: 77 190 | ``` 191 | 192 | Con **-t** seguido del tipo de registro (MX) consultamos los registros concretos del dominio en cuestión. 193 | 194 | ```s 195 | dig -t MX sergiosoriano.es 196 | 197 | ; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> -t MX sergiosoriano.es 198 | ;; global options: +cmd 199 | ;; Got answer: 200 | ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57448 201 | ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 7 202 | 203 | ;; OPT PSEUDOSECTION: 204 | ; EDNS: version: 0, flags:; udp: 512 205 | ;; QUESTION SECTION: 206 | ;sergiosoriano.es. IN MX 207 | 208 | ;; ANSWER SECTION: 209 | sergiosoriano.es. 41 IN MX 1 aspmx.l.google.com. 210 | sergiosoriano.es. 41 IN MX 10 alt4.aspmx.l.google.com. 211 | sergiosoriano.es. 41 IN MX 5 alt1.aspmx.l.google.com. 212 | sergiosoriano.es. 41 IN MX 10 alt3.aspmx.l.google.com. 213 | sergiosoriano.es. 41 IN MX 5 alt2.aspmx.l.google.com. 214 | 215 | ;; ADDITIONAL SECTION: 216 | alt2.aspmx.l.google.com. 229 IN A 74.125.200.26 217 | alt2.aspmx.l.google.com. 229 IN AAAA 2404:6800:4003:c00::1b 218 | aspmx.l.google.com. 229 IN A 64.233.167.26 219 | aspmx.l.google.com. 229 IN AAAA 2a00:1450:400c:c07::1b 220 | alt1.aspmx.l.google.com. 229 IN A 108.177.14.26 221 | alt1.aspmx.l.google.com. 229 IN AAAA 2a00:1450:4010:c0f::1b 222 | 223 | ;; Query time: 6 msec 224 | ;; SERVER: 192.168.0.1#53(192.168.0.1) 225 | ;; WHEN: Thu Jun 20 07:16:37 CEST 2019 226 | ;; MSG SIZE rcvd: 295 227 | ``` 228 | 229 | Podemos consultar los registros, utilizando otro DNS con la arroba 230 | 231 | ```s 232 | dig @8.8.8.8 -t A google.es 233 | 234 | ; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> @8.8.8.8 -t A google.es 235 | ; (1 server found) 236 | ;; global options: +cmd 237 | ;; Got answer: 238 | ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21093 239 | ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 240 | 241 | ;; OPT PSEUDOSECTION: 242 | ; EDNS: version: 0, flags:; udp: 512 243 | ;; QUESTION SECTION: 244 | ;google.es. IN A 245 | 246 | ;; ANSWER SECTION: 247 | google.es. 299 IN A 172.217.17.3 248 | 249 | ;; Query time: 29 msec 250 | ;; SERVER: 8.8.8.8#53(8.8.8.8) 251 | ;; WHEN: Thu Jun 20 07:22:03 CEST 2019 252 | ;; MSG SIZE rcvd: 54 253 | ``` 254 | 255 | Puedes encontrar mas ejemplos [aquí](https://elbauldelprogramador.com/dig-chuleta-basica-de-comandos/) 256 | 257 | `getent` - realiza una query al fichero `/etc/nsswitch.conf` y responde la información de la base de datos a la que corresponda. Mas info [aquí](http://man7.org/linux/man-pages/man1/getent.1.html). Se puede utilizar para consultar los grupos, protocolos, etc. 258 | -------------------------------------------------------------------------------- /docs/101-500/104:Dispositivos-sistemas-de-archivos-Linux-y-el-estandar-de-jerarquia-de-archivos.md: -------------------------------------------------------------------------------- 1 | - [Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos](#tema-104-dispositivos-sistemas-de-archivos-linux-y-el-est%C3%A1ndar-de-jerarqu%C3%ADa-de-archivos) 2 | - [104.1 Creación de particiones y sistemas de archivos](#1041-creaci%C3%B3n-de-particiones-y-sistemas-de-archivos) 3 | - [104.2 Mantener la integridad de los sistemas de archivos](#1042-mantener-la-integridad-de-los-sistemas-de-archivos) 4 | - [104.3 Controlar el montaje y desmontaje de los sistemas de archivos](#1043-controlar-el-montaje-y-desmontaje-de-los-sistemas-de-archivos) 5 | - [104.4 Eliminado](#1044-eliminado) 6 | - [104.5 Administración de los permisos y los propietarios de los archivos](#1045-administraci%C3%B3n-de-los-permisos-y-los-propietarios-de-los-archivos) 7 | - [Permisos especiales](#permisos-especiales) 8 | - [104.6 Crear y cambiar enlaces duros y simbólicos (Hard link and symbolic link)](#1046-crear-y-cambiar-enlaces-duros-y-simb%C3%B3licos-hard-link-and-symbolic-link) 9 | - [104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente](#1047-encontrar-archivos-de-sistema-y-ubicar-archivos-en-el-lugar-correspondiente) 10 | 11 | # Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos 12 | 13 | 14 | ## 104.1 Creación de particiones y sistemas de archivos 15 | 16 | swap file: es el fichero que se utiliza cuando esta la memoria ram llena. 17 | 18 | `fdisk` - se utiliza para modificar particiones basadas en MBR 19 | 20 | `gparted` - se utiliza para modificar particiones basadas tables de particiones GPT 21 | 22 | `parted` - 23 | 24 | `mkswap` - comando para usado para formatear una partcion swap 25 | 26 | `swapoff` - deshabilita una partición de swap 27 | 28 | Para añadir una partición al arranque tenemos que modificar el fichero `/etc/fstab/` 29 | 30 | 31 | Añadir una nueva partición de SWAP, añadimos al fichero `fstab` la siguiente información: 32 | 33 | ``` 34 | LABEL=SWAP swap swap defaults 0 0 35 | ``` 36 | 37 | ## 104.2 Mantener la integridad de los sistemas de archivos 38 | 39 | `df` - (diskfree) nos muestra el espacio dispoible de un sistema de ficheros 40 | 41 | `du` - (diskusage) nos muestra la cantidad del disco utilizada. 42 | 43 | `inode` - indice de nodos, guarda información de los ficheros y carpetas, como permisos, propietarios, tipo de ficheros, casi todos los sistemas de ficheros tienen un limite de inodos. 44 | 45 | 46 | ## 104.3 Controlar el montaje y desmontaje de los sistemas de archivos 47 | 48 | mount /dev/sdb1 /opt 49 | 50 | Para hacer que un punto de montaje sea permanente tenemos que modificar el fichero `/etc/fstab` 51 | 52 | ```console 53 | LABEL=opt /opt ext4 defaults 1 2 54 | ``` 55 | 56 | mount 57 | `man mount` - para buscar el la ayuda utilizamos el caracter `/` o introducimos el número de la linea a la que queremos ir. Linea 412 para las opciones de montado. 58 | umount 59 | 60 | 61 | Mostrar unicamente un sistema de ficheros concreto, por ejemplo ext4. 62 | 63 | ```console 64 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  mount -t ext4 65 | /dev/nvme0n1p2 on / type ext4 (rw,relatime,errors=remount-ro) 66 | ``` 67 | 68 | El contenido del comando mount es el mismo que el fichero: 69 | `cat /etc/mtab` que no es mas que un enlace simbólico a `/proc/self/mounts` 70 | 71 | Montar un sistema de ficheros especificando opciones concretas 72 | 73 | `-L` - para indicar la etiqueta 74 | `-t` para indicar el sistema de ficheros a utilizar 75 | `-o` para indicar las opciones de montado 76 | `rw` - lectura y escritura 77 | `noexec` - no permite la ejecución de archivos binarios en la unidad montada. 78 | 79 | 80 | ```console 81 | mount -L OPT -t xfs -o rw,noexec /opt 82 | ``` 83 | 84 | Para que sea permanente: 85 | 86 | Editamos el fichero `/etc/fstab` 87 | 88 | ```console 89 | LABEL=OPT /opt xfs rw,exec,suid,auto 1 2 90 | ``` 91 | 92 | Más información sobre fstab [aquí](https://wiki.archlinux.org/index.php/Fstab_(Espa%C3%B1ol)) 93 | 94 | 95 | Una vez añadido en el fichero /etc/fstab podemos utilizar el comando `mount -a` para actualizar la lista que hayamos añadido. 96 | 97 | **Ejercicio**: Montar una imagen iso 98 | 99 | ```console 100 | mount /root/install.iso -o ro,loop /media 101 | ``` 102 | 103 | `ro` - para especificar que es de solo lectura. 104 | `loop` - para emular que es un cdroom 105 | 106 | 107 | ## 104.4 Eliminado 108 | 109 | 110 | 111 | ## 104.5 Administración de los permisos y los propietarios de los archivos 112 | 113 | `chow`: cambia el usuario propietario de un fichero o directorio. 114 | 115 | `chgrp`: cambiar el grupo propietario de un fichero o directorio. 116 | 117 | `chmod`: cambia el modo de acceso a los ficheros o directorios con la simbología 777 o 775. 118 | 119 | - *Primer dígito*: permisos para propietario 120 | - *Segundo dígito*: permisos para grupo. 121 | - *Tercer dígito*: Permisos para otros. 122 | 123 | 124 | Lectura: 4 125 | Escritura: 2 126 | Ejecución: 1 127 | 128 | 0: Sin permisos 129 | 1: Ejecución 130 | 2: Escritura 131 | 3: Lectura y escritura 132 | 4: Lectura 133 | 5: Lectura y ejecución 134 | 6: Lectura y escritura 135 | 7: Lectura, escritura y ejecución 136 | 137 | Si queremos establecer un permiso de escritura usaremos el 6 (4 + 2 = Lectura + Escritura) 138 | 139 | Si queremos que un usuario pueda ejecutar usaremos el 7 (4 + 2 + 1= Lectura + Escritura + Ejecución) 140 | 141 | Los tipos de permisos más comunes, o su combinación, son los siguiente: 142 | 143 | 666 ( RW / RW / RW) | 144 | ---------| 145 | Esta opción permite que todos los usuarios puedan leer y escribir en un archivo. | 146 | 147 | 777 ( RWX / RWX /RWX) | 148 | ---------------| 149 | Esta opción permite que todos los usuarios puedan leer y escribir en un archivo. | 150 | 151 | 777 ( RWX / RWX /RWX)| 152 | ---------------| 153 | Esta opción permite que todos los usuarios puedan leer, escribir y ejecutar en el archivo o carpeta. | 154 | 155 | 156 | 755 (RWX / RW / RW)| 157 | ---------------| 158 | Con este permiso el propietario del archivo puede leer, escribir y ejecutar en el archivo mientras que los demás leer y escribir en el archivo mas no ejecutar.| 159 | 160 | 161 | 644 (RW / R / R) | 162 | ---------------| 163 | Con este permiso el propietario puede leer y escribir en el archivo mientras los demás solo pueden leer.| 164 | 165 | 700 (RWX /---)| 166 | ---------------| 167 | Con este permiso el propietario tiene el control total del archivo mientras que los demás usuarios no tendrán acceso de ningún tipo al archivo.| 168 | 169 | 170 | ------ 171 | 172 | Ejercicio: Dar permisos de lectura y escritura recursivamente a una carpeta 173 | 174 | 175 | ```console 176 | sudo chmod 666 -R /opt/myapp/* 177 | ``` 178 | 179 | ### Permisos especiales 180 | 181 | Unix nos ofrece a parte una serie de permisos especiales, se trata de los bits de permanencia (1000), SGID (2000) y SUID (4000). 182 | 183 | **Sticky bit** 184 | El bit sticky bit se activa sobre un fichero o directorio añadiendo 1000 185 | 186 | Se utiliza para permitir que cualquiera pueda escribir y modificar archivo o directorio, pero que solo su propietario pueda eliminarlo, por ejemplo /tmp puede ser utilizado por todos pero solo el propietario puede eliminarlo. 187 | 188 | Al directorio con el Sticky Bit aplicado se le agrega la `t` al final del descriptor de permisos. 189 | 190 | ```console 191 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~/test_command  chmod 1755 sticky.md 192 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~/test_command  la 193 | total 132K 194 | -rwxr-xr-t 1 sergio sergio 0 may 22 10:54 sticky.md 195 | ``` 196 | También se puede añadir este permiso de la siguiente forma; 197 | 198 | ```console 199 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~/test_command  chmod +t sticky.md 200 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~/test_command  la 201 | total 132K 202 | -rwxr-xr-t 1 sergio sergio 0 may 22 10:54 sticky.md 203 | ``` 204 | 205 | **SUID** - Special User ID 206 | El bit de SUID o setuid se activa sobre un fichero añadiéndole 4000 207 | 208 | El bit SUID activado sobre un fichero indica que todo aquél que ejecute el archivo va a tener durante la ejecución los mismos privilegios que quién lo creó. 209 | 210 | 211 | **SGID** - Special Group ID 212 | Cuando un directorio tenga activado el bit de SGID(2) todos los permisos que se creen en el perteneceran al grupo del propietario sin importar cual sea el grupo del usuario que cree el directorio. 213 | 214 | 215 | El uso que mas se utiliza es para que un fichero o dictorio pueda ser utilizado por todos pero solo el administrador pueda eliminarlo. En este caso se indica al sistema operativo que, aunque los permisos `normales' digan que cualquier usuario pueda crear y eliminar ficheros (por ejemplo, un 777 octal), sólo el propietario de cierto archivo y el administrador pueden borrar un archivo guardado en un directorio con estas características. Se utiliza principalmente en directorios del sistema de ficheros en los que interesa que todos puedan escribir pero que no todos puedan borrar los datos escritos, como /tmp/ o /var/tmp/ 216 | 217 | 218 | 219 | ## 104.6 Crear y cambiar enlaces duros y simbólicos (Hard link and symbolic link) 220 | 221 | La diferencia entre un enlace simbólico (soft) y uno hard, es que el hard no crea un nuevo inodo y el soft si. El hard es el mismo dato en el disco duro. 222 | 223 | Los hard links son especialmente importantes para ficheros 'permanentes' que por ejemplo un fichero que tiene que ser solamente accesible por el administrador lincado a un fichero que nunca debe ser modificado. 224 | 225 | 226 | Los enlaces simbólicos `ln -s` permiten cruzar sistemas de ficheros, sin embargo los hard links no. Esto ocurre porque un enlace simbólico consiste en crear un nuevo fichero que apunta a otro, sin embar un enlace duro lo que hace es crear un puntero, y el espacio ocupado en el disco es el mismo. 227 | 228 | Para localizar los hard symbolik links: 229 | 230 | 1. Buscamos el numero del inodo del fichero 231 | 2. Buscamos los ficheros que existen con ese numero de inodo 232 | 233 | 234 | ```console 235 | [cloud_user@ip-10-0-0-142 ~]$ ls -i docs/services 236 | 25165940 docs/services 237 | [cloud_user@ip-10-0-0-142 ~]$ find . -inum 25165940 238 | ./docs/services 239 | ./services 240 | [cloud_user@ip-10-0-0-142 ~]$ ls -i services 241 | 25165940 services 242 | ``` 243 | 244 | ## 104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente 245 | 246 | ![File System Hierarchy](img/FileSystemHierarchy.png) 247 | 248 | [Pathname](http://www.pathname.com/fhs/) 249 | 250 | `locate`: busca en la base de datos local ficheros y carpetas que concuerden con el criterio de búsqueda. 251 | 252 | `updatedb`: actualiza la base de datos del comando locate. 253 | 254 | ```console 255 | [sergio@hostingsoriano ~]$ locate updatedb 256 | /etc/updatedb.conf 257 | /usr/bin/updatedb 258 | /usr/share/man/man5/updatedb.conf.5.gz 259 | /usr/share/man/man8/updatedb.8.gz 260 | ``` 261 | 262 | `whereis`: este comando localiza los archivos binarios, código fuente y paginas del manual de un comando. 263 | 264 | ```console 265 | [sergio@hostingsoriano ~]$ whereis top 266 | top: /usr/bin/top /usr/share/man/man1/top.1.gz 267 | [sergio@hostingsoriano ~]$ whereis nginx 268 | nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz /usr/share/man/man3/nginx.3pm.gz 269 | [sergio@hostingsoriano ~]$ 270 | ``` 271 | 272 | 273 | -------------------------------------------------------------------------------- /docs/102-500/107:Tareas-administrativas.md: -------------------------------------------------------------------------------- 1 | # 107: Tareas Administrativas 2 | 3 | ## 107.1 Administrar cuentas de usuario y de grupo y los archivos de sistema relacionados con ellas 4 | 5 | ### Añadir y eliminar usuarios 6 | 7 | `useradd` 8 | 9 | ```console 10 | sudo useradd -m name 11 | ``` 12 | 13 | Usamos `-m` para crear el home del usuario. 14 | En algunas distribuciones no es necesario utilizar -m, ya que crean automáticamente la carpeta. 15 | 16 | Creamos un usuario que utilice una shell diferente. 17 | 18 | ```console 19 | sudo useradd -m -c "Juanjo Garcia" -s /bin/tcsh \ juanjo 20 | ``` 21 | 22 | Podemos comprobar la shell con `echo $SHELL` que nos devolverá el valor de la shell que el usuario esta utilizando. 23 | 24 | `passwd` - comando para asignar un password al usuario. 25 | 26 | Asignamos un password temporal con `-e` al usuario juanto 27 | 28 | ``` 29 | sudo passwd -e juanjo 30 | ``` 31 | 32 | `userdel` - comando para eliminar un usuario. 33 | 34 | Elimina el usuario y borra las carpetas de home. 35 | 36 | ``` 37 | userdel -r juanjo 38 | ``` 39 | 40 | --- 41 | 42 | ### Añadir y eliminar grupos 43 | 44 | `groups` - comando para conocer los grupos primarios y secundarios de los que forma parte el usuario. 45 | 46 | `groupadd` - añade un nuevo grupo. 47 | 48 | Creamos un grupo legal y creamos un usuario y lo añadimos a ese grupo. 49 | 50 | ```s 51 | sudo groupadd legal 52 | sudo useradd -G legal -m -c "Mario Gonzalez" \ mgonzalez 53 | ``` 54 | 55 | `groupdel` - comando para borrar un grupo. 56 | 57 | ### Usuarios y configuración de ficheros de grupo 58 | 59 | `/etc/passwd` - fichero que contiene las cuentas de usuario del sistema. 60 | 61 | Las columnas se separan por el carácter `:` y cada una de las columnas significa: 62 | 63 | 1. Nombre de usuario 64 | 2. X password encriptado 65 | 3. User id (las cuentas por encima de un id 1000 son cuentas de usuario "normales") 66 | 4. Primary Group id 67 | 5 .User id info 68 | 5. Directorio del home de usuario 69 | 6. bash que utiliza el usuario (si no ha iniciado sesion aparecera nologin) 70 | 71 | `/etc/shadow` - fichero que contiene las password encriptadas de los usuarios. Justo después del nombre de usuario aparece el tipo de cifrado que utiliza la contraseña. 72 | 73 | ``` 74 | $1$ = MD5 75 | $2a$,$2y$ = Blowfish 76 | $5$ = SHA-256 77 | $6$ = SHA-512 78 | ``` 79 | 80 | Las columnas que podemos encontrar en el fichero `/etc/shadow` son las siguientes: 81 | 82 | 1. Nombre usuario 83 | 2. Algoritmo de cifrado, y hash. 84 | 3. Tiempo desde 1 enero de 1970. 85 | 4. Los días que han pasado desde que el usuario a cambiado el password. 86 | 5. El tiempo de días que es valido el password. 87 | 6. Los días que sera avisado antes de que expire el password. 88 | 7. empty 89 | 8. empty. 90 | 91 | Si una cuenta tiene en la segunda columna los caracteres de `!!` significa que esta bloqueada. 92 | 93 | `/etc/group` - fichero que contiene información sobre los grupos de usuarios. 94 | 95 | 1. Nombre del grupo 96 | 2. Password del grupo. 97 | 3. ID del grupo. 98 | 4. los usuarios que forman parte del grupo. 99 | 100 | --- 101 | 102 | ### Modificaciones de usuarios y grupos 103 | 104 | `usermod` - este comando se utiliza para modificar configuraciones de usuarios ya existentes. 105 | 106 | `change` - este comando puede listar y modificar los parámetros de expiración de password y expiración de la cuenta de usuario. 107 | 108 | `groupmod` - modifica los atributos de un grupos, como el nombre o ID. 109 | 110 | `getent passwd sergio` - muestra información de las bases de datos del sistema. [Enlace](https://www.unixtutorial.org/commands/getent) 111 | 112 | --- 113 | 114 | #### Ejercicios 115 | 116 | Añadir un usuario a un grupo ya creado. 117 | 118 | `usermod -a -G nombregrupo nombreusuario` 119 | 120 | Bloquear una cuenta 121 | 122 | `usermod -L nombresusuario` 123 | 124 | Creamos una cuenta y la bloqueamos, podemos ver como al pricipio de la ultima linea, aparece un simbolo de exclamación al consultar el fichero shadow indicandonos que la cuenta ha sido bloqueada. 125 | 126 | ```console 127 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  sudo getent shadow test 128 | test:$6$HPi6/BE7$a22bOjrx8EbVgiEdl8IMHZwSeabQX568ydN88oD3pc301BkfFgqIDClkWPS2ihjVOdL8rm./pH5M4XkYXSLik.:18055:0:99999:7::: 129 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  usermod -L test 130 | usermod: Permission denied. 131 | usermod: cannot lock /etc/passwd; try again later. 132 | ✘ sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  sudo usermod -L test 133 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  sudo getent shadow test 134 | test:!$6$HPi6/BE7$a22bOjrx8EbVgiEdl8IMHZwSeabQX568ydN88oD3pc301BkfFgqIDClkWPS2ihjVOdL8rm./pH5M4XkYXSLik.:18055:0:99999:7::: 135 | ``` 136 | 137 | Para desbloquearla utilizamos. 138 | 139 | `usermod -U test` 140 | 141 | Creamos una cuenta del sistema y modificamos su shell y su carpeta de home. 142 | 143 | ``` 144 | useradd -r projectx 145 | usermod -s /sbin/nologin 146 | userdmod -d /opt/projectx projectx 147 | ``` 148 | 149 | En la ultima linea indicamos la nueva ruta del home y el usuario que queremos modificar. 150 | 151 | Por último, asignamos como propietario a la carpeta: 152 | 153 | ```console 154 | sudo chmod projext:projectx /opt/projectx 155 | ``` 156 | 157 | ## 107.2 Automatizar tareas administrativas del sistema mediante la programación de trabajos 158 | 159 | ### CRON 160 | 161 | Lo utilizamos para programar tareas que van a ser ejecutadas en periodos de tiempo que nosotros decidamos. 162 | 163 | `contrab -e` - para modificar el fichero de cron. 164 | 165 | `/etc/crontab` - fichero con los trabajos programados del sistemas 166 | 167 | `/etc/cron.d/` - directorio que contiene los trabajos progrmados del sistema. se crea un fichero por cada tarea añadida. 168 | 169 | 1. Minutos 170 | 2. Horas 171 | 3. Dia del mes (podemos usar \* para indicar que no importa el dia que sea) 172 | 4. Mes (\* si no nos importa el mes). 173 | 5. Dia de la semana(sat, para que se ejecute los sábados). 174 | 6. Username(el usuario que ejecuta la tarea). 175 | 7. La tarea que queremos que ejecute. 176 | 177 | [Ejemplos](http://researchhubs.com/post/computing/linux-cmd/awesome-crontab-job-examples.html) 178 | 179 | Los ficheros de las configuracion de cada uno de los usuarios son creados en: 180 | 181 | `sudo cat /var/spool/cron/crontabs/sergio` 182 | 183 | Podemos utilizar `crontab -l` para ver las tareas programadas del usuario. 184 | 185 | Para borrar el contenido el fichero de cron usamos el comando `crontab -r`. 186 | 187 | Si queremos borrar el de un usuario: 188 | 189 | `crontab -r -u sergio` 190 | 191 | Podemos bloquear a un usuario para que no pueda crear cron añadiendolo al fichero `/etc/cron.denny` 192 | 193 | ### At 194 | 195 | Se utiliza para ejecutar una tarea en un determinado momento, al contrario de cron que sirve para programar de una forma repetitiva. 196 | 197 | > Por defecto no suele venir instalada en las distribuciones Linux 198 | 199 | Programamos una tarea para que se ejecute dentro de 5 minutos para que cre un fichero llamado notes.txt con el contenido pasado con echo: 200 | 201 | `atq` - sirve para ver las tareas programadas. 202 | 203 | ``` 204 | at now + 5 minutes 205 | warning: commands will be executed using /bin/sh 206 | at> echo "Notas para luego:" > /home/sergio/notes.txt 207 | at> 208 | job 1 at Sat Jun 8 16:16:00 2019 209 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  atq 210 | 1 Sat Jun 8 16:16:00 2019 a sergio 211 | ``` 212 | 213 | `atrm` - sirve para eliminar una tarea programada, indicando el numero. 214 | 215 | Programar una tarea que ejecute un script en un determinado momento. 216 | 217 | ``` 218 | at -f /root/program.sh 10:15 PM Jul 8 219 | ``` 220 | 221 | Es posible configurar que usuarios pueden utilizar la herramienta `at`, añadiendolos al fichero `at.allow` o denegandolos en `at.deny`. 222 | 223 | ### Systemd Timer Unit Files 224 | 225 | Es un timer controlado por systemd, utilizado en los nuevos sistemas para controlar las tareas repetitivas. 226 | 227 | Cada fichero **.timer** tiene que tiener un fichero **.service**, por ejemplo si tienes un fichero foo.timer tienes que tener un fichero foo.service. 228 | 229 | Hay dos tipos de timer: 230 | 231 | - Monotonic - OnBootSex=, OnActiveSec= 232 | - Realtime - OnCalendar 233 | 234 | Se utiliza mas por que la sintaxis es mas sencilla. 235 | 236 | Timer unit file: 237 | 238 | - [Unit] 239 | - [Timer] 240 | - [Install] 241 | 242 | Manuales: 243 | 244 | - man 5 systemd.timer 245 | - man 7 systemd.timer 246 | 247 | Para ver los timers que tenemos configurado en el sistema y los servicios que tiene asociales: 248 | 249 | `systemctl list-timers --all` 250 | 251 | ```console 252 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  systemctl list-timers --all 253 | NEXT LEFT LAST PASSED UNIT ACTIVATES 254 | Sat 2019-06-08 17:01:21 CEST 13min left Sat 2019-06-08 16:02:27 CEST 45min ago anacron.timer anacron.service 255 | Sat 2019-06-08 17:09:00 CEST 21min left Sat 2019-06-08 16:39:09 CEST 8min ago phpsessionclean.timer phpsessionclean.service 256 | Sat 2019-06-08 20:29:41 CEST 3h 42min left Sat 2019-06-08 09:32:35 CEST 7h ago apt-daily.timer apt-daily.service 257 | Sun 2019-06-09 01:30:57 CEST 8h left Fri 2019-06-07 19:42:44 CEST 21h ago motd-news.timer motd-news.service 258 | Sun 2019-06-09 06:50:37 CEST 14h left Sat 2019-06-08 09:32:35 CEST 7h ago apt-daily-upgrade.timer apt-daily-upgrade.service 259 | Sun 2019-06-09 12:29:09 CEST 19h left Fri 2019-06-07 19:27:44 CEST 21h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service 260 | Mon 2019-06-10 00:00:00 CEST 1 day 7h left Mon 2019-06-03 00:27:52 CEST 5 days ago fstrim.timer fstrim.service 261 | n/a n/a n/a n/a snapd.snap-repair.timer snapd.snap-repair.service 262 | n/a n/a Fri 2019-06-07 19:13:37 CEST 21h ago ureadahead-stop.timer ureadahead-stop.service 263 | ``` 264 | 265 | `systemctl cat anacron.timer` 266 | 267 | Podemos ver la descripción, el momento de ejecución y el apartado install. 268 | 269 | ```console 270 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  systemctl cat anacron.timer 271 | # /lib/systemd/system/anacron.timer 272 | [Unit] 273 | Description=Trigger anacron every hour 274 | 275 | [Timer] 276 | OnCalendar=hourly 277 | RandomizedDelaySec=5m 278 | Persistent=true 279 | 280 | [Install] 281 | WantedBy=timers.target 282 | ``` 283 | 284 | `system-ctl cat anacron.service` 285 | 286 | También podemos crear un timer que no requere un fichero `.service` ejecutado: 287 | 288 | `systemd-run --on-active=1m /bin/touch /home/sergio/hello` 289 | 290 | ## 107.3 Localización e internacionalización 291 | 292 | ### Trabajando con la localizacion del sistema 293 | 294 | `locale` - comando para mostrar la información de configuracion del lenguaje del sistema. 295 | 296 | `localectl` - comando para configurar el idioma por defecto y el lenguaje del sistema. 297 | 298 | Podemos mostrar la lista de idiomas con: 299 | 300 | `localectl list-locales` 301 | 302 | `iconv` - utilidad usada para convertir ficheros de un tipo de codificación a otro. 303 | 304 | > UTF-8 es el sistema de caracetes codificados más utilizado. 305 | 306 | Para cambiar el idioma, podemos cambiar la variable entorno `LANG` 307 | 308 | `LANG=pl_PL.utf8` 309 | 310 | `LANG=C` 311 | 312 | ### Hora y fecha en los sitemas Linux 313 | 314 | `date` - muestra información sobre la fecha actual. Podemos utilizar valores para formatear la salida por pantalla en diferentes formatos. Es intereante conocer formatear la salida de la fecha a la hora de utilizar scripts. 315 | 316 | ```console 317 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  date +%m/%d/%Y 318 | 06/08/2019 319 | ``` 320 | 321 | `timedatectl` - muestra la hora actual del sistema y la del hardware (RTC clock). 322 | 323 | Mostramos la lista de horarios disponibles y cabiamos a "Antartica/davis". 324 | 325 | ``` 326 | timedatectl list-timezones 327 | timedatectl set-timezone "Antartica/Davis" 328 | ``` 329 | 330 | `tzselect` - comando para seleccionar por menu la zona horaria que queremos. 331 | 332 | `/etc/localtime` - fichero para distribuciones REDHAT. 333 | `/etc/timezone` - fichero para distribuciones DEBIAN. 334 | `/usr/share/zoneinfo` - directorio que contiene todas las zonas dispoibles que el equipo puede configurar. 335 | -------------------------------------------------------------------------------- /docs/101-500/102:Instalacion-de-Linux-y-gestion-de-paquetes.md: -------------------------------------------------------------------------------- 1 | 2 | - [Tema 102: Instalación de Linux y gestión de paquetes](#tema-102-instalaci%C3%B3n-de-linux-y-gesti%C3%B3n-de-paquetes) 3 | - [102.1 Diseño del esquema de particionado del disco](#1021-dise%C3%B1o-del-esquema-de-particionado-del-disco) 4 | - [LVM - Logical volumen manager](#lvm---logical-volumen-manager) 5 | - [102.2 Instalar un gestor de arranque](#1022-instalar-un-gestor-de-arranque) 6 | - [Como instalar grub](#como-instalar-grub) 7 | - [GRUB2](#grub2) 8 | - [Master Boot Record](#master-boot-record) 9 | - [Guid Partition Table](#guid-partition-table) 10 | - [102.3 Gestión de librerías compartidas](#1023-gesti%C3%B3n-de-librer%C3%ADas-compartidas) 11 | - [102.4 Gestión de paquetes Debian](#1024-gesti%C3%B3n-de-paquetes-debian) 12 | - [Usando debian package tool(dpkg)](#usando-debian-package-tooldpkg) 13 | - [102.5 Gestión de paquetes RPM y YUM](#1025-gesti%C3%B3n-de-paquetes-rpm-y-yum) 14 | - [YUM](#yum) 15 | - [RPM](#rpm) 16 | - [102.6 Linux como sistema virtualizado](#1026-linux-como-sistema-virtualizado) 17 | # Tema 102: Instalación de Linux y gestión de paquetes 18 | 19 | - [ ] 102.1 Diseño del esquema de particionado del disco duro duro 20 | - [ ] 102.2 Instalar un gestor de arranque 21 | - [ ] 102.3 Gestión de librerías compartidas 22 | - [ ] 102.4 Gestión de paquetes Debian 23 | - [ ] 102.5 Gestión de paquetes RPM y YUM 24 | - [ ] 102.6 Linux como sistema virtualizado 25 | 26 | ## 102.1 Diseño del esquema de particionado del disco 27 | 28 | ### LVM - Logical volumen manager 29 | 30 | Nos permite crear grupos de discos o particiones que pueden ser montadas en un o varios sistemas de ficheros(fylesystems). 31 | 32 | - Se puede utilizar para montar cualquier punto EXCEPTO /boot. 33 | - Nos ofrece la flexibilidad de redimensionar los volúmenes ya creados. 34 | - Podemos crear Snapshoots de los volúmenes lógicos. 35 | 36 | Ejemplo de las capas de un grupo LVM. 37 | 38 | ![LVM](img/lvm.png) 39 | 40 | `psv`: Lista los volumenes fisicos que existen en un gru po LVM. 41 | 42 | `vgs`: list los grupos de volumenes que hay un en grupo LVM. 43 | 44 | `lvs`: Lista los volumenes *logicos* que hay en un grupo LVM. 45 | 46 | 47 | ## 102.2 Instalar un gestor de arranque 48 | 49 | Legacy Grub 50 | 51 | GRUB es el antiguo gestor de arranque y significa **Grand Unified Boot Loader**, esta instalado sobre el MBR. 52 | 53 | En este tipo de gestor de arranque el funcionamiento es el siguiente: 54 | 55 | - Paso 1: La bios arranca y lee información de la `boot.img` (los primeros 512 bytes del MBR) 56 | - Paso 1.5: Se lee la información del fichero `core.img`. 57 | - Paso 2: El sistema lee el menu de GRUB del fichero `/boot/grub/grub.conf - menu.lst o device.map 58 | 59 | Ejemplo del fichero grub.conf 60 | 61 | ``` 62 | default=0 # indica que 63 | timeout=10 #los segundos que aparecera el menu de grub 64 | splashimage=(hd0,0)/grub/splash.xpm.gz # 65 | 66 | # section to load Linux 67 | title Red Hat Enterprise Linux (2.4.21-1.ent) #El kernel que va arrancar por defecto (default=0) 68 | root (hd0,0) #el disco que va ha utlizar como boot [title 0] 69 | kernel /vmlinuz-2.4.21-1 ro root=/dev/sda2 70 | initrd /initrd-2.4.21-1.img #la imagen del disco de RAM 71 | 72 | # section to load Windows 73 | title Windows #default = 1 en caso de querer arrancar por defecto este disco 74 | rootnoverify (hd0,0) 75 | chainloader +1 76 | ``` 77 | 78 | 79 | ### Como instalar grub 80 | 81 | Si queremos buscar en que dispositivo esta el fichero de arraque utilizamos `findmnt /boot` 82 | 83 | Para instalar grub en un disposito, por ejemplo un disco duro utiliamos el comando `grub-install [device]` 84 | 85 | Si estuviera en /dev/vda1 usamos `grub-install /dev/vda` 86 | 87 | >Normalmente este comando se ejecuta con un pendrive, nunca con el sistema arrancado. 88 | 89 | --- 90 | 91 | ## GRUB2 92 | 93 | Es la segunda generación para el arranque del sistema. 94 | 95 | Es importante entender la diferencia entre MBR y GPT. 96 | 97 | #### Master Boot Record 98 | 99 | - Soporta un máximo de 26 particiones (4 particiones, con una particion extendida hasta 23 particiones lógicas) 100 | - Las particiones solo soportan 2TB. 101 | 102 | #### Guid Partition Table 103 | 104 | - Soporta 128 particiones 105 | - Las particiones soporta hasta un ZB. 106 | - Necesita una BIOS con UEFI. 107 | - Previene que arranquen sistemas operativos no autorizados. 108 | - Requiere sistemas de 64bits. 109 | - Remplaza la tradicional BIOS aunque puede actuar en modo Legacy BIOS. 110 | 111 | **¿Cómo arranca un sistema con GRUP2 con GPT utilizando UEFI BIOS?** 112 | - Paso 1: Busca el MBT en los primeros 521 bytes usando la imagen `bios.img` 113 | - GTP header - Particion Entry Array. 114 | - Paso 1.5: Normalmente sectores vacios `boot.img` 115 | - `/boot/efi` con el sistema de ficheros **vfat** o **FAT32** 116 | - Paso 2: Lee el contenido de `/boot/grub2` grubenv y themes 117 | 118 | Ficheros que podemos encontrar en la caprta de arranque en un sistema ubuntu 119 | 120 | ``` 121 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  sudo ls /boot/efi/EFI/ubuntu 122 | BOOTX64.CSV fw fwupx64.efi grub.cfg grubx64.efi mmx64.efi shimx64.efi 123 | ``` 124 | 125 | >Distribuciones Red Hat = grub2-\ 126 | 127 | >Distribuciones debian = grub-\ 128 | 129 | 130 | `grub2-editenv list` - Muestra la entrada por defecnto del fichero de configuración. 131 | 132 | `grub2-mkconfig` - crea o actualiza el fichero de configuracion basado en la entrada de `/etc/default/grub`. 133 | 134 | `update-grub` - comando que puede ser utilizado para actualizar la configuracion de GRUB2 despues de hacer cambios en `/etc/default/grub` 135 | .(En sistemas Debian) 136 | 137 | Cambiamos el fichero de grub 138 | 139 | >nano /etc/default/grub 140 | 141 | Actualzamos el fichero de grub 142 | 143 | >sudo update-grub 144 | 145 | --- 146 | 147 | 148 | Interacting with the Boot Loader 149 | 150 | 151 | 152 | ## 102.3 Gestión de librerías compartidas 153 | 154 | 155 | 156 | ## 102.4 Gestión de paquetes Debian 157 | 158 | `apt` - instala aplicaciones y dependencias, desisntala y actualiza aplicaciones. 159 | 160 | Lee los repositorios del fichero `/etc/apt/source.list`. 161 | 162 | `sudo apt-get update` - Actualiza el cache de los paquetes que pueden ser actualizados(pero no los instala). 163 | 164 | `sudo apt-get upgrade` - Instala las actualizaciones de los paquetes disponibles que ha encontrado con el comando anterior. 165 | 166 | `sudo apt-get install` - Instala el paquete indicando el nombre. 167 | 168 | 169 | `sudo apt-get remove chromium-browser` - desinstala el paquete del sistema, pero no elimina los ficheros de configuración que pueda haber dejado. 170 | 171 | `sudo apt autoremove` - sirve para eliminar todas los paquetes que dependen del paquete que hemos desinstalado. 172 | 173 | `sudo apt-get purge chromium-browser` - elimina todos los paquetes del sistema y los ficheros asociados a su configuración. 174 | 175 | `sudo apt-get dist-upgrade` - actualiza **todos** los paquetes del sistema a la siguiente release de la distribución. Incluido la instalacion de nuevos paquetes.(a diferencia de apt-get upgrade que solo instala las actualizaciones). 176 | 177 | `apt-get download` - descarga el paquete pero no lo instala. 178 | 179 | `sudo apt-cache search apache` - busca en el cache local si existe el paquete nombrado. 180 | 181 | `sudo apt-cache show libapache2-mod-bw` - muestra toda la información del paquete nombrado. 182 | 183 | `sudo apt-cache showpkg libapache2-mod-bw` - muestra mas información sobre de donde viene el paquete. 184 | 185 | ---- 186 | 187 | ### Usando debian package tool(dpkg) 188 | 189 | Paquetes .deb que contienen: 190 | - La aplicación o utilidad. 191 | - Archivos de configuración por defecto 192 | - Cómo y donde instalar los ficheros que vienen en el paquete. 193 | - Lista de las dependecias que el paquete requiere. (las dependencias necesitan estar instaladas, dpkg no las instala.) 194 | 195 | `dpkg --info` - nos muestra información sobre el paquete nombrado. 196 | 197 | `dpkg --status nano` - muestra información pero menos detallada.(**de un paquete ya instalado**). lo podemos usar para comprobar un paquete instalado 198 | 199 | ``` 200 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~/Downloads  dpkg --info nginx_1.14.0-0ubuntu1.2_all.deb 201 | new Debian package, version 2.0. 202 | size 3596 bytes: control archive=764 bytes. 203 | 990 bytes, 17 lines control 204 | 64 bytes, 1 lines md5sums 205 | Package: nginx 206 | Version: 1.14.0-0ubuntu1.2 207 | Architecture: all 208 | Maintainer: Ubuntu Developers 209 | Installed-Size: 42 210 | Depends: nginx-core (<< 1.14.0-0ubuntu1.2.1~) | nginx-full (<< 1.14.0-0ubuntu1.2.1~) | nginx-light (<< 1.14.0-0ubuntu1.2.1~) | nginx-extras (<< 1.14.0-0ubuntu1.2.1~), nginx-core (>= 1.14.0-0ubuntu1.2) | nginx-full (>= 1.14.0-0ubuntu1.2) | nginx-light (>= 1.14.0-0ubuntu1.2) | nginx-extras (>= 1.14.0-0ubuntu1.2) 211 | Section: httpd 212 | Priority: optional 213 | Homepage: http://nginx.net 214 | Description: small, powerful, scalable web/proxy server 215 | Nginx ("engine X") is a high-performance web and reverse proxy server 216 | created by Igor Sysoev. It can be used both as a standalone web server 217 | and as a proxy to reduce the load on back-end HTTP or mail servers. 218 | . 219 | This is a dependency package to install either nginx-full (by default), 220 | nginx-light or nginx-extras. 221 | Original-Maintainer: Debian Nginx Maintainers 222 | ``` 223 | 224 | `dpkg -l vagrant` - muestra la información disponible del paquete instalado. 225 | 226 | ``` 227 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~/Downloads  dpkg -l vagrant 228 | Desired=Unknown/Install/Remove/Purge/Hold 229 | | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend 230 | |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) 231 | ||/ Name Version Architecture Description 232 | +++-==============-============-============-================================= 233 | ii vagrant 1:2.2.4 amd64 no description given 234 | ``` 235 | 236 | `sudo dpkg -i nginx_1.14.0-0ubuntu1.2_all.deb` - instala un paquete deb. 237 | 238 | `dpkg --contents nginx_1.14.0-0ubuntu1.2_all.deb` - Muestra el contenido de un paquete `deb` 239 | 240 | ``` 241 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~/Downloads  dpkg --contents nginx_1.14.0-0ubuntu1.2_all.deb 242 | drwxr-xr-x root/root 0 2018-11-06 19:54 ./ 243 | drwxr-xr-x root/root 0 2018-11-06 19:54 ./usr/ 244 | drwxr-xr-x root/root 0 2018-11-06 19:54 ./usr/share/ 245 | drwxr-xr-x root/root 0 2018-11-06 19:54 ./usr/share/doc/ 246 | drwxr-xr-x root/root 0 2018-11-06 19:54 ./usr/share/doc/nginx/ 247 | -rw-r--r-- root/root 8748 2018-04-06 07:31 ./usr/share/doc/nginx/copyright 248 | lrwxrwxrwx root/root 0 2018-11-06 19:54 ./usr/share/doc/nginx/changelog.Debian.gz -> ../nginx-core/changelog.Debian.gz 249 | ``` 250 | 251 | `dpkg -L vagrant` - nos muestra todos los ficheros que fueron instalados con el paquete. 252 | 253 | `sudo dpkg -r htop` - desinstala el paquete htop. (no elimina los ficheros de configuración). 254 | 255 | `sudo dpkg -P htop` - elimina el paquete y todos los ficheros de configuración. 256 | 257 | `dpkg -S nano` - busca en la base de datos de los paquetes y muestra cualquier mencion que incluya el nombre del paquete introducido. 258 | 259 | `sudo dpkg reconfigure` - sirve para re lanzar el proceso de configuración de una aplicación ya instalada, por ejemplo un servidor web o una base de datos. 260 | 261 | ``` 262 | sudo dpkg-reconfigure console-setup 263 | ``` 264 | 265 | ---- 266 | 267 | ## 102.5 Gestión de paquetes RPM y YUM 268 | 269 | ### YUM 270 | Por ejemplo, imaginemos que al instalar un paquete RPM, nos encontramos con el problema de que requiere de dependencias que no tenemos instaladas. 271 | 272 | Para saber la dependencia de un paquete. Por ejemplo: 273 | 274 | 275 | ``` 276 | console 277 | [cloud_user@ip-10-0-1-94 Downloads]$ yum provides libmozjs185* 278 | Loaded plugins: fastestmirror 279 | Loading mirror speeds from cached hostfile 280 | * base: mirrors.advancedhosters.com 281 | * extras: mirrors.advancedhosters.com 282 | * updates: mirrors.advancedhosters.com 283 | 1:js-1.8.5-20.el7.i686 : JavaScript interpreter and libraries 284 | Repo : base 285 | Matched from: 286 | Provides : libmozjs185.so.1.0 287 | 288 | 289 | 290 | 1:js-1.8.5-20.el7.x86_64 : JavaScript interpreter and libraries 291 | Repo : base 292 | Matched from: 293 | Provides : libmozjs185.so.1.0()(64bit) 294 | 295 | 296 | 297 | 1:js-1.8.5-20.el7.x86_64 : JavaScript interpreter and libraries 298 | Repo : @base 299 | Matched from: 300 | Provides : libmozjs185.so.1.0()(64bit) 301 | ``` 302 | 303 | identificamos que el paquete principal es Javascript. 304 | 305 | >1:js-1.8.5-20.el7.x86_64 : JavaScript interpreter and libraries 306 | 307 | ### RPM 308 | 309 | 310 | ## 102.6 Linux como sistema virtualizado 311 | -------------------------------------------------------------------------------- /docs/102-500/108:Servicios-esenciales-del-sistema.md: -------------------------------------------------------------------------------- 1 | # Tema 108: Servicios esenciales del sistema 2 | 3 | ## 108.1 Mantener la hora del sistema 4 | 5 | Tenemos que saber como configurar nuestro equipo para recibir la hora de un servidor de NTP. 6 | 7 | ### Trabajando con servidores remotos de tiempo(NTP) 8 | 9 | **NTP** - Network Time Protocol 10 | 11 | :Capas del protocolo 12 | Stratum 0 13 | Stratum 1 14 | Stratum 2 15 | 16 | `ntpd` - es el demonio(servicio) que comprueba contra el servidor de ntp para comprobar si la hora es correcta. 17 | 18 | `ntpdate` - comando para recibir la hora de un servidor de ntp especifico, es necesario que el servicio no este corriendo. 19 | 20 | `/etc/ntp.conf/` - fichero de configuracion para el demonio de ntpd. 21 | 22 | `ntpq` - comando para realizar una query al demonio **ntpd**. 23 | 24 | `timedatectl` - comando para comprobar la configuración del servidor ntp 25 | 26 | `chronyd` - es el demonio moderno que los equipos que utilizan **systemd**. 27 | 28 | `/etc/chrony/chrony.conf` - fichero de configuración al igual que el antiguo fichero `ntp.conf`. 29 | 30 | `chronyc` - comando para consultar la información del demonio **chronyd**. 31 | 32 | ## 108.2 Registros del sistema 33 | 34 | ## Sistemas de Logs antiguaos 35 | 36 | `/var/log/dmesg` - logs relacionadios con el hardware, consultar en caso de tener problemas con los dispositivos conectados. Se crea cada vez que el sistema arranca.(Linux kernel boot messages). 37 | 38 | `/var/log/messages` - log que recoje los problemas con los servicios. 39 | 40 | `/var/log/secure` - contiene información de los accesos de los usuarios. 41 | 42 | `/var/log/maillog` - contiene información del servidor de correo. 43 | 44 | Todos estos logs son gestionados por el antiguo demonio **rsyslog**. (En los sistemas que no utilizan **systemd**). 45 | 46 | **Niveles de prioridad de Logs** 47 | 48 | ![Log Priority](img/loggin_priority.png) 49 | 50 | **Niveles de logs Facilities** 51 | 52 | ![Loggin Facilities](img/log_facilities.png) 53 | 54 | Podemos ver esta información con el comando: 55 | 56 | `dmesg -x` 57 | 58 | `logger` - comando que puede ser utilizado para enviar informacion al fichero **/etc/log/messages**. 59 | 60 | ### Rsyslog 61 | 62 | Utilizado en distribuciones anteriores a Centos 7. 63 | 64 | `rsyslog` - la configuracion del demonio la podemos encontrar en **/etc/rsyslog.conf**. 65 | 66 | Los ficheros de ayuda esta escritos en html y necesitamos lynx: 67 | 68 | > yum -y install lynx 69 | 70 | Es posibble configurar rsyslog para enviar los log a un servidor remoto. 71 | 72 | `/etc/logrotate.conf` - es el fichero de configuración del demonio lograte, encargado de manejar el tamaño y la rotación de los ficheros de log. 73 | 74 | `/etc/logrotate.d/` - Configuración avanzanda para que otros demonios puedan 75 | 76 | `logrotate` - comando para rotar los ficheros de configuración. 77 | 78 | ### Introduccion al diario de systemd 79 | 80 | Recoge los log de : 81 | 82 | - Logs del Kernel 83 | - Logs del sistema 84 | - Servicios del sistem que envian salidas de (standar ouput y standard error) 85 | 86 | La ruta por defecto esta en `/run/log/journal` esta informacion se pierde despues de cada reinicio. 87 | 88 | Para hacerla permanente teemos que hacer: 89 | 90 | ```console 91 | mkdir -p /var/log/journal 92 | systemd-tmpfiles --create --prefix /var/log/journal 93 | ``` 94 | 95 | Podemos encontrar mas informacion sobre la condiguración en: 96 | 97 | > man 5 journald.conf 98 | 99 | El fichero de configuracion se encuentra en `/etc/systemd/journald.conf` 100 | 101 | ### journalctl 102 | 103 | Los sistemas que usan systemd utilizan el comando journalctl(Journal control) para obtener informacion del demonio de logs systemd journal(systemd-journald.service). 104 | 105 | `journalctl -n 20` - muestra las entradas mas recientes y limita la salida a 20. 106 | 107 | `journalctl -f -u httpd.service` - nos muestra los log de un servicio en particular. 108 | 109 | `journalctl -o verbose` - para mostrar todos los log de una forma ordenada. 110 | 111 | `journalctl -o json-pretty` - para ver los log en formato json, la salida puede ser tratada para mostrarla en una web por ejemplo. Muy util para analizar los datos. 112 | 113 | `systemd-cat` - para enviar una salida de texto al diario de logs. 114 | 115 | #### **Demo:** 116 | 117 | Tenemos un problema con el servidor web de apache. 118 | 119 | Nos logamos como root 120 | 121 | `sudo su -` 122 | 123 | Comprobamos el estado del servicio: 124 | 125 | `systemctl status httpd.service` 126 | 127 | Intentamos arrancar el servidor web 128 | 129 | `systemctl start httpd.service` 130 | 131 | Tras comprobar que no arranca, buscamos en el log. 132 | 133 | `journalctl -u httpd.service` 134 | 135 | Vemos que nos indica que no puede encontrar el fichero de configuración. 136 | 137 | ```console 138 | journalctl -u httpd.service 139 | -- Logs begin at Sun 2019-06-09 04:33:02 EDT, end at Sun 2019-06-09 04:46:20 EDT. -- 140 | Jun 09 04:45:18 ip-10-0-1-160.ec2.internal systemd[1]: Starting The Apache HTTP Server... 141 | Jun 09 04:45:18 ip-10-0-1-160.ec2.internal httpd[13571]: httpd: Could not open configuration file /etc/httpd/conf/httpd.conf: No such file 142 | Jun 09 04:45:18 ip-10-0-1-160.ec2.internal systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE 143 | Jun 09 04:45:18 ip-10-0-1-160.ec2.internal kill[13572]: kill: cannot find process "" 144 | Jun 09 04:45:18 ip-10-0-1-160.ec2.internal systemd[1]: httpd.service: control process exited, code=exited status=1 145 | Jun 09 04:45:18 ip-10-0-1-160.ec2.internal systemd[1]: Failed to start The Apache HTTP Server. 146 | Jun 09 04:45:18 ip-10-0-1-160.ec2.internal systemd[1]: Unit httpd.service entered failed state. 147 | Jun 09 04:45:18 ip-10-0-1-160.ec2.internal systemd[1]: httpd.service failed. 148 | ``` 149 | 150 | Comprobamos si el directorio de configuracion contiene el fichero. 151 | 152 | `ls /etc/httpd/conf` 153 | 154 | Restauramos el fichero de configuracion 155 | 156 | `mv /etc/httpd/conf/httpd.conf.bkup /etc/httpd/conf/httpd.conf` 157 | 158 | Reiniciamos el servicio 159 | 160 | `systemctl restart httpd.service` 161 | 162 | Comprobamos que el servicio esta corriendo correctamente 163 | 164 | `systemctl status httpd.service` 165 | 166 | utilizamos elinks para comprar que el sitio funciona correctamte 167 | 168 | `elinks http://localhost` 169 | 170 | #### Demo 2 171 | 172 | Queremos programar un backup de una pagina web. Tenemos escrito el scrip que realiza la tarea llamadao `web-backup.sh` y queremos que se ejecute diariamente. 173 | 174 | 1. Creamos es el scrip 175 | 2. Creamos el fichero web-backup.service (especifica que va hacer) 176 | 3. Creamos el fichero web-backup.timer (indica cuando se va a ejecutar y por quien) 177 | 178 | 4. Copiamos el contenido del script a `usr/local/sbin/` 179 | 180 | `cp web-backup.sh /usr/local/sbin/` 181 | 182 | Y damos permisos de ejecucion sobre el script 183 | 184 | `chmod +x /usr/local/sbin/web-backup.sh` 185 | 186 | 5. Copiamos los ficheros de servicio y timer a `/etc/systemd/system` 187 | 188 | `cp web-backup.{service,timer} /etc/systemd/system/ 189 | 190 | 6. Reiniciamos el demonio de systemd 191 | 192 | `systemctl daemon-reload` 193 | 194 | 7. Habilitamos el servicio para que se ejecute al arrancar el sistema. 195 | 196 | `systemctl enable web-backup.timer web-backup.service` 197 | 198 | > Esto creara los enlaces simbolicos necesarios. 199 | 200 | 8. Arrancamos los servicios. 201 | 202 | `systemctl start web-backup.timer web-backup.service` 203 | 204 | 9. Comprobamos los servicios 205 | 206 | ``` 207 | systemctl status web-backup.timer 208 | systemctl status web-backup.service 209 | ``` 210 | 211 | ## 108.3 Mail Transfer Agent (MTA) Fundamentos 212 | 213 | MTA -> MDA (Port 25 TCP) -> MUA 214 | 215 | - **MTA**: Mail Transfer Agent 216 | - **MDA**: Mail delivery Agent 217 | - **MUA**: Mail user agent 218 | 219 | Conocer el sistema de MTA es el importante para el examen. 220 | 221 | Sistemas de MTA más comunes: 222 | 223 | `Sendmail` - es el sistema de mta mas antiguo, es difil de configurar y suele venir instalado por defecto en la mayoria de distribuciones de linux. 224 | `Postfix` - es el MTA moderno encontrado en muchas de las distribuciones de linux, es fácil de configurar y tiene una buena segurida. 225 | `Exim` - es el sistema de MTA por defecto en las distribuciones Deabian, tiene una buena seguridad y es mas sencillo de configurar que Sendmail. 226 | 227 | `Send Emulation Layer` - los administradores pueden utilizar los comandos de 'sendmail' en otras MTA (Postfix, Exim,etc) como si estuvieran utilizando la instalacion de Sendmail. 228 | 229 | ### Renvio de Email y Alias 230 | 231 | Los alias se utilizan para que utilizando otro nombre se envie a la cuenta que queramos, por ejemplo si tenemos un buzon que se llama sergio@localhost podemos crear un alias para que los correos que se envien a **yo@localhost`** se reciban en el buzón de sergio@localhost 232 | 233 | `/etc/aliases` - es el fichero de configuracion que se utiliza para realizar el renvio de correos entre usuarios. 234 | 235 | `newaliases` - comando que es necesario lanzar despues de modificar el fichero anterior para que se enere el fichero `/etc/aliases.db` fichero que el MTA usa para entregar los correos. 236 | 237 | Para enviar un correo desde la terminal con postfix 238 | 239 | `mail -s "Este es un mensaje" sergio@localhost` 240 | 241 | Comprobamos la mandeja de entrada: 242 | 243 | `mail` - comando para enviar los correos o para ver los correos de un usuario. 244 | 245 | `mailq` - comando para ver los correos que estan encolados, esperando a ser enviados a su destino. En sendmail se usaba `sendmail -bp`. 246 | 247 | `~/.forward` - un fichero de configuracion que puede ser colocado en el home del usuario para reenviar correos que sean enviados a el y quieran ser enviados a otro usuario o email externo. (solo tenemos que especificar el usuario o el correo en este fichero). [Ejemplo](https://www.ccsf.edu/Pub/UNIXhelp/mail/file_forward.html) 248 | 249 | Log del email 250 | 251 | `/var/log/maillog/` 252 | 253 | #### DEMO: 254 | 255 | Configurar el servidor de correo para que reenvie todos los correos que llevan a root al usuario cloud_user. 256 | 257 | 1. Nos logamos con el usuario root 258 | 259 | `sudo su -` 260 | 261 | 2. Añadimos el alias en el fichero `/etc/aliases`. 262 | 263 | `echo "root: cloud_user" >> /etc/aliases` 264 | 265 | 3. Regeneramos la base de datos de los alias 266 | 267 | `newaliases` 268 | 269 | 4. Enviamos un mensaje de prueba 270 | 271 | `mail -s "Probando" -a "/etc/services" root@localhost < /dev/null` 272 | 273 | 5. Salimos de la sesion de root 274 | 275 | `exit` 276 | 277 | 6. Comprobaoms la badejande entrada 278 | 279 | `mail` 280 | 281 | ```console 282 | [cloud_user@ip-10-0-1-208 ~]$ mail 283 | Heirloom Mail version 12.5 7/5/10. Type ? for help. 284 | "/var/spool/mail/cloud_user": 6 messages 6 new 285 | >N 1 root Fri Jun 14 03:06 11204/671277 "Probando" 286 | N 2 Mail Delivery System Fri Jun 14 03:14 73/2622 "Undelivered Mail Returned to Sender" 287 | N 3 root Fri Jun 14 03:20 11204/671259 "Probando" 288 | N 4 root Fri Jun 14 03:22 11204/671259 "Probando" 289 | N 5 root Fri Jun 14 03:24 11204/671259 "Probando" 290 | N 6 root Fri Jun 14 03:25 11204/671259 "Probando" 291 | & 1 292 | Message 1: 293 | ``` 294 | 295 | ``` 296 | Jun 14 03:25:51 ip-10-0-1-208 postfix/local[4784]: 32C0D43D376: to=, orig_to=, relay=local, delay=0.05, delays=0.03/0/0/0.02, dsn=2.0.0, status=sent (delivered to mailbox) 297 | Jun 14 03:25:51 ip-10-0-1-208 postfix/qmgr[4144]: 32C0D43D376: removed 298 | ``` 299 | 300 | ## 108.4 Gestión de la impresión y de las impresoras 301 | 302 | ### The Common Unix Printing System (CUPS) 303 | 304 | Instalamos el CUPS driver y el servidor de impresion en ubuntu. Esto nos facilita el manejo mediante un frontal web para administrar las impresoras. 305 | 306 | `sudo apt-get install cups printer-driver-cups-pdf` 307 | 308 | 1. Eliminamos la impresora que viene por defecto(Imprime en PDF), haciendo click en Administración -> Manage Printer -> PDF , seleccionamos en el desplegable de Administration -> Delete. 309 | 310 | 2. Al terminar de configurarla tenemos que seleccionar que sea la impresora por defecto. 311 | 312 | `/etc/cups` - directorio que contiene los ficheros de configuracion del servidor de CUPS. 313 | 314 | `/etc/cups/printers.conf` - fichero de configuración de las impresoras, no se debe cambiar cuando el servidor CUPS esta arrancado. 315 | 316 | Cargamos la web de administracion de impresión: 317 | 318 | `http://localhost:631` 319 | 320 | ### The Line Print Daemon 321 | 322 | Es el domonio de impresión antiguo(legacy) 323 | 324 | > El puerto socket para las impresoras es el **9100** 325 | 326 | `lpd` - Line Print Daemon 327 | 328 | `lpstat` Muestra el estado del servidor de CUPS, las impresoras configuradas y las colas de impresión. 329 | 330 | `lpadmin` - herramienta para añadir, modificar y eliminar impresoras. 331 | 332 | `lpinfo` - este comando muestra las impresoras disponibles y los drivers que pueden usar. 333 | 334 | `lpc` - antiguo comando para mostrar informacion sobre las impresoras. 335 | 336 | `lpr` - este comando envia a imprimir el fichero que se indique a la impresora por defecto. 337 | 338 | Imprime el fichero de usuarios: 339 | 340 | ``` 341 | lpr /etc/passwd/ 342 | ``` 343 | 344 | `lpq` - este comando muestr las colas de impresion del servidor CUPS. Con la opción -a vemos todas las colas de impresion. 345 | 346 | `lprm` - sirve para eliminar un trabajo que exista en la cola de impresión indicando el PID: 347 | -------------------------------------------------------------------------------- /docs/102-500/110:Seguridad.md: -------------------------------------------------------------------------------- 1 | # 110: Seguridad 2 | 3 | ## 110.1 Tareas de administración de seguridad 4 | 5 | ### Determinar el estado actual de seguridad del sistema 6 | 7 | `who` - lista los usuarios que estan actualente logados en el sistema. 8 | 9 | `w` - igual que el anterior, pero además muestra el proceso que estan ejecutando. 10 | 11 | ```s 12 | 03:26:36 up 1 day, 9:21, 1 user, load average: 1,29, 1,31, 1,15 13 | USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT 14 | sergio :0 :0 dom18 ?xdm? 5:32 0.00s /usr/lib/gdm3/g 15 | ``` 16 | 17 | `last` - este comando muestra el historico de los usuarios logados en el sistema. 18 | 19 | Mostrar los usuarios que se han logado en el sistema pero que no estan actualmente logados, para conocer que usuarios ha realizado intentos fallos de acceso. 20 | 21 | ```s 22 | last -f /var/log/btmp 23 | ``` 24 | 25 | `lsof` - este comando se puede utilizar para encontrar que ficheros hay abiertos. Como los puertos de red también son considerados ficheros en Linux, podemos encontrar los puertos que estan abiertos. 26 | 27 | Nos muestra las siguientes columnas: 28 | 29 | - COMMAND 30 | - PID 31 | - TIP 32 | - USER 33 | - FD 34 | - TYPE 35 | - DEVICE 36 | - SIZE 37 | 38 | Buscar los ficheros que tienen activado el permiso especial SUID 39 | 40 | ```s 41 | find / -perm -u+s 42 | ``` 43 | 44 | `ulimit` - este comando sirve para poner límites a la cantidad de recursos del sistema que usuario puede utilizar. Si cabiamos la configuración se pierde después de reinciar el sistema. 45 | 46 | ```s 47 | ulimit -a 48 | -t: cpu time (seconds) unlimited 49 | -f: file size (blocks) unlimited 50 | -d: data seg size (kbytes) unlimited 51 | -s: stack size (kbytes) 8192 52 | -c: core file size (blocks) 0 53 | -m: resident set size (kbytes) unlimited 54 | -u: processes 30385 55 | -n: file descriptors 1024 56 | -l: locked-in-memory size (kbytes) 16384 57 | -v: address space (kbytes) unlimited 58 | -x: file locks unlimited 59 | -i: pending signals 30385 60 | -q: bytes in POSIX msg queues 819200 61 | -e: max nice 0 62 | -r: max rt priority 0 63 | -N 15: unlimited 64 | ``` 65 | 66 | Para que sea permanente tenemos que modificar el fichero **/etc/security/limits.conf**. El fichero esta documentado con ejemplos, 67 | 68 | Ejemplos [aquí](https://blog.carreralinux.com.ar/2016/07/uso-de-recursos-del-sistema-en-linux/) 69 | 70 | Limitar que un usuario solo pueda utilizar 2GB de RAM. 71 | 72 | ``` 73 | sergio hard memlock 2048 74 | ``` 75 | 76 | Limitar que un usuario no pueda consumir más CPU. 77 | 78 | ``` 79 | sergio soft cpu 150 80 | sergio hard cpu 200 81 | ``` 82 | 83 | `/etc/sudoers` - fichero de configuración donde se guardan los usuarios que tienen acceso de sudo. Se puede modificar con el comando `visudo`. 84 | 85 | El comando **sudo** se utiliza para prevenir que los usuario pueda cometer errores accidentales al ejecutar una orden. Permite a los usuarios ejecutar un comando con permisos de root. 86 | 87 | La barra (-) se utiliza 88 | 89 | `su` - substitute user, para logarnos con un usuario en concreto, por defecto si no especificamos usuario, utilizara root. 90 | 91 | ```s 92 | su - sergio 93 | ``` 94 | 95 | ### Comprobar la segurida de la red local 96 | 97 | `lsof -i` - utilizando el parámetro **-i** podemos ver los puertos que estan abierto, ya que estos ficheros estan siendo utilizados por el sistema. 98 | 99 | En el siguiente código podemos ver como dropbox tiene conexiones establecidad y en escucha. 100 | 101 | ```s 102 | COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 103 | dropbox 1048 sergio 76u IPv6 40146 0t0 TCP *:db-lsp (LISTEN) 104 | dropbox 1048 sergio 78u IPv4 40147 0t0 TCP *:db-lsp (LISTEN) 105 | dropbox 1048 sergio 79u IPv4 36159 0t0 UDP *:17500 106 | dropbox 1048 sergio 80u IPv4 37565 0t0 TCP lenovo-ideapad-710s-plus-13ikb.home:55316->162.125.68.3:https (CLOSE_WAIT) 107 | dropbox 1048 sergio 103u IPv4 38259 0t0 TCP localhost:17600 (LISTEN) 108 | dropbox 1048 sergio 107u IPv4 38262 0t0 TCP localhost:17603 (LISTEN) 109 | dropbox 1048 sergio 113u IPv4 492743 0t0 TCP lenovo-ideapad-710s-plus-13ikb.home:41000->162.125.18.133:https (ESTABLISHED) 110 | dropbox 1048 sergio 115u IPv4 497842 0t0 TCP lenovo-ideapad-710s-plus-13ikb.home:41222->162.125.18.133:https (ESTABLISHED) 111 | dropbox 1048 sergio 120u IPv4 40148 0t0 UDP *:17500 112 | dropbox 1048 sergio 121u IPv4 423558 0t0 TCP 192.168.1.78:48700->162.125.68.7:https (CLOSE_WAIT) 113 | dropbox 1048 sergio 145u IPv4 422843 0t0 TCP 192.168.1.78:52438->ec2-52-20-90-39.compute-1.amazonaws.com:https (CLOSE_WAIT) 114 | dropbox 1048 sergio 149u IPv4 509467 0t0 TCP lenovo-ideapad-710s-plus-13ikb.home:33326->162.125.68.3:https (CLOSE_WAIT) 115 | dropbox 1048 sergio 150u IPv4 508921 0t0 TCP lenovo-ideapad-710s-plus-13ikb.home:57450->162.125.33.7:https (CLOSE_WAIT) 116 | code 1318 sergio 43u IPv4 509251 0t0 TCP localhost:43350 (LISTEN) 117 | chrome 10736 sergio 88u IPv4 480503 0t0 UDP 224.0.0.251:mdns 118 | ``` 119 | 120 | Los estados de las conexiones puede ser: 121 | 122 | - Establish 123 | - Close_wait 124 | - Listen 125 | 126 | `fuser 22/tcp` - para conecer que PID estan utilizando un proceso concreto. 127 | 128 | `ss` - como vimos anteriormente para visualizar las conexines activa(TUNA): 129 | -t: conexiones tcp 130 | -u: conexiones udp 131 | -n: muestra la ip envez del hostname 132 | -a: muestra los puertos en estucha y los sockets que no estan en escucha. 133 | 134 | `nmap` - nos muestra los puertos que esta abierto de una direccion dada. Tiene muchas mas funcionalidades utilizadas en el mundo del hacking pero a nivel del LPCI solo es necesario conocer esta. 135 | 136 | ```s 137 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~/GITHUB/LPIC-1   master ●  nmap localhost 138 | 139 | Starting Nmap 7.60 ( https://nmap.org ) at 2019-06-26 14:45 CEST 140 | Nmap scan report for localhost (127.0.0.1) 141 | Host is up (0.00013s latency). 142 | Not shown: 994 closed ports 143 | PORT STATE SERVICE 144 | 80/tcp open http 145 | 111/tcp open rpcbind 146 | 631/tcp open ipp 147 | 3306/tcp open mysql 148 | 8001/tcp open vcom-tunnel 149 | 8080/tcp open http-proxy 150 | 151 | ``` 152 | 153 | **Ejercicio** 154 | 155 | Crear dos usuarios y añadir a uno de ellos al grupo wheel, despues permitir a ese grupo ejecutar como sudo. EL otro usuario debe de tener permisos para reiniciar el servicio web. 156 | 157 | ```s 158 | sudo useradd -m ssoriano 159 | sudo useradd -G wheel -m jlopez 160 | sudo visudo 161 | ``` 162 | 163 | Vemos en la última linea como al grupo wheel permititos todo (ALL) 164 | 165 | ```s 166 | ## Allow root to run any commands anywhere 167 | root ALL=(ALL) ALL 168 | 169 | ## Allows members of the 'sys' group to run networking, software, 170 | ## service management apps and more. 171 | # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS 172 | 173 | ## Allows people in group wheel to run all commands 174 | %wheel ALL=(ALL) ALL 175 | ``` 176 | 177 | Configurar los permisos del administrador de web. 178 | 179 | 1 Creamos un nuevo fichero de sudoers `/etc/sudoers.d`. Usamos `-f` para crear el fichero. 180 | 181 | ```s 182 | sudo visudo -f /etc/sudoers.d/web_admin 183 | ``` 184 | 185 | 2. Añaidmos la siguiente linea para crear un alias(aliasc command group) que permite ejecutar las ordenes necesarias para reiniciar el servicio de https. 186 | 187 | ```s 188 | Cmnd_Alias WEB = /bin/systemctl restart httpd.service, /bin/systemctl reload httpd.service 189 | ``` 190 | 191 | 3. Añadimos al fichero la linea `ssoriano ALL=WEB` para permitir que el usuario tenga permiso . 192 | 193 | ```s 194 | sudo vim /etc/sudoers.d/web_admin 195 | ``` 196 | 197 | Ahora el usuario podra ejecutar reiniciar el servidor web sin embargo no tendra permiso a eso ficheros. 198 | 199 | ```s 200 | sudo systemctl restart httpd.service 201 | ``` 202 | 203 | ## 110.2 Configuración de la seguridad del sistema 204 | 205 | ### Securizando intentos accesos locales 206 | 207 | Bloquear una cuenta de usuario 208 | 209 | ``` 210 | usermod -L test 211 | ``` 212 | 213 | Cambiamos la fecha de expiracion a 1 214 | 215 | ``` 216 | usermod -e 1 test 217 | ``` 218 | 219 | Comprobamos si esta bloqueada. Al aparecer la exclamación nos indica que la cuenta esta bloqueada. 220 | 221 | ``` 222 | getent shadow test 223 | test:!$6$0cQCrrSa$PdNPFMJB/TtbRVjKErFUpEXBznJMmRXcG9gmON/u1DzmXiVEz5ti1tIn4NopDYbEjat0KcIAfRZoUSAgl6fgx0:18055:0:99999:7::: 224 | ``` 225 | 226 | Comprobamos si tiene acceso a al bash 227 | 228 | ``` 229 | getent passwd test 230 | test:x:1001:1001::/home/test:/bin/sh 231 | ``` 232 | 233 | Modificamos el acceso 234 | 235 | ``` 236 | usermod -s /sbin/nologin test 237 | ``` 238 | 239 | Deshabilitamos la cuenta 240 | 241 | ``` 242 | usermod -U -e "" test 243 | ``` 244 | 245 | Modificamos el fichero de nologin para que cuando un usuario intente entrar se muestre un mensaje 246 | 247 | ``` 248 | vim /etc/nologin 249 | ``` 250 | 251 | ### Securizando servicios de red 252 | 253 | Vemos los servicios de red que tenemos en escucha 254 | 255 | ``` 256 | losf -i 257 | ``` 258 | 259 | ```s 260 | COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 261 | dropbox 1066 sergio 74u IPv4 48147 0t0 TCP *:db-lsp (LISTEN) 262 | dropbox 1066 sergio 75u IPv4 31910 0t0 UDP *:17500 263 | ``` 264 | 265 | **COMMAND** - no indica el nombre del servicio 266 | **NAME** - aquí podemos ver desde donde va a permitir las conexiones el puerto que esa en modo escucha, en caso de tener un `*` nos indica que puede recibir conexiones desdes cualquier dirección. 267 | 268 | ``` 269 | service dropbox stop 270 | ``` 271 | 272 | Super-server: 273 | `xinetd` (eXtended InterNET Daemon) ahora conocido como `systemd.socket` , controlan el acceso a los servicios de red. 274 | 275 | `TCP Wrappers` - esta funcionalidad utiliza los ficheros **hosts.allow** y/o **hosts.deny** para configurar el acceso a los servicios de red. 276 | 277 | `systemd.socket` - es utilizado para activar servicios de red bajo demanda. En vez de utilizar el servicio(por ejemplo ssh.server) utilizara sshd.socket. De esta manera el servicio solo se arranca bajo demanda, en vez de estar a la escucha en todo momento. Las unidades de Socket solo permiten el acceso al servicios de red cuando una conexion entrante la solicita. 278 | 279 | ### Ejercicio 280 | 281 | Para que el servicio de ssh no este siempre a la escucha, deshabilita el servicio y activa el socket. 282 | 283 | Comprobamos el estado del servicio 284 | 285 | ```s 286 | systemctl status sshd.service 287 | ``` 288 | 289 | Activamos en el arranque el socket y deshabilitamos el servicio. 290 | 291 | ```s 292 | sudo systemctl enable sshd.socket 293 | sudo systemctl disable sshd.service 294 | ``` 295 | 296 | ## 110.3 Protección de datos mediante cifrado 297 | 298 | ### GPG 299 | 300 | GPG (GNU Privacity Guard) - Herramienta de cifrado y firmas digitales desarrollada por Werner Koch bajo la licencia GPL. Es el reemplazo de PGP(Pretty Good Privacity) 301 | 302 | GPG utiliza el estándar del IETF denominado [OpenPGP](https://www.openpgp.org/about/standard/) 303 | 304 | [Firma digital](https://www.gnupg.org/gph/es/manual/x154.html) 305 | 306 | `~/.gnupg` - directorio donde podemos encontrar las claves de anillo y la configuracion de las claves gpg de cada usuario. 307 | 308 | `gpg --gen-key` - para generar la calve 309 | 310 | Exportamos la clave pública: 311 | 312 | Nos tenemos que ubicar en el directorio donde están guardadas las claves. 313 | 314 | ```s 315 | cd ~/.gnupg 316 | gpg -o demopublic --export C7D4EF00D70FBCC7D25170BA7950F49D0650C39D 317 | ``` 318 | 319 | Es importante generar la clave de revocación para cancelar el certificado en caso de que nuestra clave se vea comprometida. 320 | 321 | Para publicar publicar la clave publica en los servidores de pgp 322 | 323 | ```s 324 | gpg --keyserver pgp.mit.edu --send-keys C7D4EF00D70FBCC7D25170BA7950F49D0650C39D 325 | ``` 326 | 327 |
328 | Cosas a tener en cuenta: 329 | 330 | - Si queremos enviar un mensaje encriptado a otra persona, necesitamos su clave pública, se _encriptan_ con la clave pública del destinatario para que solo el lo pueda _desencriptar_ con su clave privada. 331 | - Si queremos firmar un documento o archivo para demostrar que es nuestro, lo debemos firmamos con nuestra clave privada. Cualquier persona puede comprobar que ha sido firmado por mi utilizando mi clave pública y demostrar que no ha sido modificado. 332 | 333 | ## SSH 334 | 335 | Podemos ver los ficheros de configuración en `/etc/ssh`. 336 | 337 | `sshd_config` - fichero de configuración para las conexiones ssh. 338 | 339 | `sh-keygen` - comando para generar un par de claves asimetricas. 340 | 341 | Todos los usuarios tienen un fichero de configuración individual en ~/.ssh. 342 | 343 | Cuando nos conectamos por primera vez a un servidor se crea un fichero llamado `known_hosts` que contiene la claves públicas de los servidores conocidos. 344 | 345 | Podemos crear un par de claves asimetricas para conectarnos sin contraseña. De esta forma solo podra conectarse los propietarios de estas claves. 346 | 347 | 1. Creamos el par de claves 348 | 349 | ```s 350 | ssh-keygen 351 | ``` 352 | 353 | Nos creará 2 claves 1 pública y una privada. Tenemos que copiar la clave publica en el equipo **remoto**. Con el comando `ssh-cooy-id` copiaremos la clave publica en el equipo remoto.Mas info [aquí](https://www.ssh.com/ssh/copy-id#sec-Copy-the-key-to-a-server). 354 | 355 | Este comando copiará la clave pública en el fichero `~/.ssh/authorized_keys` que contrendrá las claves publicas que puede aceptar para que un usuario remote se conecte al servidor. 356 | 357 | ```s 358 | ssh-copy-id -i miclave sergio@107.174.218.90 359 | ``` 360 | 361 | `ssh-agent bash` - un agente que sirve para automatizar el acceso sin necesidad de introducir la passphrase. 362 | 363 | `ssh-add claveprivada` para añadir la passphrase de nuestra clave privada. 364 | 365 | `ssh -x` - Deshabilitar las conexiones por ssh para entornos X11 366 | 367 | `ssh -X` - Habilitar las conexiones por ssh para entornos X11 368 | 369 | Para conectarnos con la opción de mostrar las ventanas remotas en nuestro equipo. 370 | 371 | ```s 372 | ssh -Y sergio@192.168.0.202 373 | ``` 374 | -------------------------------------------------------------------------------- /docs/101-500/101:Arquitectura-del-Sistema.md: -------------------------------------------------------------------------------- 1 | # Tema 101: Arquitectura del Sistema 2 | 3 | - [Tema 101: Arquitectura del Sistema](#tema-101-arquitectura-del-sistema) 4 | - [101.1 Determinar y configurar los ajustes de hardware](#1011-determinar-y-configurar-los-ajustes-de-hardware) 5 | - [BIOS y UEFI](#bios-y-uefi) 6 | - [Sys y proc](#sys-y-proc) 7 | - [/dev y el comando **lsdev**](#dev-y-el-comando-lsdev) 8 | - [Módulos del Kernel](#m%c3%b3dulos-del-kernel) 9 | - [modprobe](#modprobe) 10 | - [lsmod](#lsmod) 11 | - [lspci y lsusb](#lspci-y-lsusb) 12 | - [101.2 Arranque del sistema](#1012-arranque-del-sistema) 13 | - [Secuencia de arranque](#secuencia-de-arranque) 14 | - [Cargadores de arranque (boot loader)](#cargadores-de-arranque-boot-loader) 15 | - [Tipos de arranque](#tipos-de-arranque) 16 | - [101.3 Cambiar los niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema](#1013-cambiar-los-niveles-de-ejecuci%c3%b3n--objetivos-de-arranque-y-apagar-o-reiniciar-el-sistema) 17 | 18 | ## 101.1 Determinar y configurar los ajustes de hardware 19 | 20 | Importancia: 2 21 | Descripción: Los candidatos deberán ser capaces de determinar y configurar el hardware fundamental del sistema. 22 | 23 | **Áreas de conocimiento clave**: 24 | 25 | - Activar y desactivar los periféricos integrados. 26 | - Diferenciar entre los distintos tipos de dispositivos de almacenamiento masivo. 27 | - Determinar los recursos de hardware para los dispositivos. 28 | - Herramientas y utilidades para listar información de hardware (por ejemplo, lsusb, lspci, etc.). 29 | - Herramientas y utilidades para manipular dispositivos USB. 30 | - Conocimientos conceptuales de sysfs, udev y dbus. 31 | 32 | Lista parcial de los archivos, términos y utilidades utilizados: 33 | 34 | ```bash 35 | /sys/ 36 | /proc/ 37 | /dev/ 38 | modprobe 39 | lsmod 40 | lspci 41 | lsusb 42 | ``` 43 | 44 | ------ 45 | 46 | Página de guia -> [https://developer.ibm.com/tutorials/l-lpic1-101-1/] 47 | 48 | ### BIOS y UEFI 49 | 50 | (BIOS): basic input/output system. 51 | (UEFI): Unified Extensible Firmware Interface. 52 | 53 | El **Firmware** de un dispositivo es el *software* de solo lectura que sirve para comunicar los diferentes componentes de harware que componen los equipos informáticos entre si. 54 | 55 | ### Sys y proc 56 | 57 | **sysfs** y **procfs** son sistemas de ficheros virtuales que se montan sobre /sys y /proc y que son usados por el kernel del sistema Linux. Procfs es el antiguo y sysfs es el moderno, aunque se siguen estando presente ambos en el sistema. Sysfs fue añadido en el *Kernel 2.6*. 58 | 59 | **Sysfs** o /sys es un sistema de ficheros simple con ficheros que representan atributos de objetos, estos los objetos también son representados como directorios(carpetas) y son utilizados para obtener información sobre el sistema. 60 | 61 | 62 | 63 | Las carpetas que podemos encontrar dentro de /sys son: 64 | 65 | ```bash 66 | sergio@ubuntu:~$ ls /sys 67 | block bus class dev devices firmware fs hypervisor kernel module power 68 | ``` 69 | 70 | - **block**: encontramos enlaces simbólicos a dispositivos bloqueados 71 | - **bus**: Contiene un diseño de directorio plano de los diferentes tipos de 72 | kernel(núcleo). 73 | - **dev**: contiene enlaces simbólicos para cada dispositivo descubierto en el sistema que apuntan al directorio del dispositivo bajo root /. 74 | - **devices**: contiene un directorio por cada driver. 75 | 76 | ```bash 77 | sergio@ubuntu:~$ ls -l /sys/block/ 78 | total 0 79 | lrwxrwxrwx 1 root root 0 abr 3 14:19 loop0 -> ../devices/virtual/block/loop0 80 | lrwxrwxrwx 1 root root 0 abr 3 14:19 loop1 -> ../devices/virtual/block/loop1 81 | lrwxrwxrwx 1 root root 0 abr 3 14:19 loop2 -> ../devices/virtual/block/loop2 82 | lrwxrwxrwx 1 root root 0 abr 3 14:19 loop3 -> ../devices/virtual/block/loop3 83 | lrwxrwxrwx 1 root root 0 abr 3 14:19 loop4 -> ../devices/virtual/block/loop4 84 | lrwxrwxrwx 1 root root 0 abr 3 14:19 loop5 -> ../devices/virtual/block/loop5 85 | lrwxrwxrwx 1 root root 0 abr 3 14:19 loop6 -> ../devices/virtual/block/loop6 86 | lrwxrwxrwx 1 root root 0 abr 3 14:19 loop7 -> ../devices/virtual/block/loop7 87 | lrwxrwxrwx 1 root root 0 abr 3 14:19 sr0 -> ../devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0/block/sr0 88 | lrwxrwxrwx 1 root root 0 abr 3 13:59 vda -> ../devices/pci0000:00/0000:00:06.0/virtio2/block/vda 89 | ``` 90 | 91 | **procfs** y /proc 92 | Contienen información sobre el sistema, como información de la memoria, cpu etc. Algunas configuracionenes es posible cambiarlas 'on the fly' de forma que cuenta con el cambio despues de un reinicio. 93 | 94 | También contiene información sobre las peticiones de interrupción los Accesos Directos a Memoria (DMA) y los puertos de entradas y salidas los interfaces usados por el sistema (I/O port interface) 95 | 96 | Podemos ver la información del sistema operativo con: 97 | 98 | ```bash 99 | cat /proc/version 100 | Linux version 4.4.0-143-generic (buildd@lgw01-amd64-037) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #169-Ubuntu SMP Thu Feb 7 07:56:51 UTC 2019 101 | ``` 102 | 103 | También se puede mostrar la información de las variables del con el comando `sysctl -a`. 104 | 105 | Por ejemplo podemos mostrar las entradas del proceso activo. `$$` es el PID del la consola que esta activa. 106 | 107 | ```bash 108 | sergio@ubuntu:~$ ls -l /proc/$$/ | head -n 15 109 | total 0 110 | dr-xr-xr-x 2 sergio sergio 0 abr 3 15:13 attr 111 | -rw-r--r-- 1 sergio sergio 0 abr 3 15:13 autogroup 112 | -r-------- 1 sergio sergio 0 abr 3 15:13 auxv 113 | -r--r--r-- 1 sergio sergio 0 abr 3 15:13 cgroup 114 | --w------- 1 sergio sergio 0 abr 3 15:13 clear_refs 115 | -r--r--r-- 1 sergio sergio 0 abr 3 15:13 cmdline 116 | -rw-r--r-- 1 sergio sergio 0 abr 3 15:13 comm 117 | -rw-r--r-- 1 sergio sergio 0 abr 3 15:13 coredump_filter 118 | -r--r--r-- 1 sergio sergio 0 abr 3 15:13 cpuset 119 | lrwxrwxrwx 1 sergio sergio 0 abr 3 15:13 cwd -> /home/sergio 120 | -r-------- 1 sergio sergio 0 abr 3 15:13 environ 121 | lrwxrwxrwx 1 sergio sergio 0 abr 3 15:13 exe -> /bin/bash 122 | dr-x------ 2 sergio sergio 0 abr 3 12:29 fd 123 | dr-x------ 2 sergio sergio 0 abr 3 15:13 fdinfo 124 | ``` 125 | 126 | ### /dev y el comando **lsdev** 127 | 128 | El directorio [**/dev**][4] contiene los archivos especiales de dispositivos. 129 | 130 | `lsdev` nos muestra la información de `/proc` presentándolo de una forma ordenada. Las columnas que podemos ver son: 131 | 132 | - Device 133 | - DMA 134 | - IRQ 135 | - I/O Port 136 | 137 | >Es necesario tener instalado el paquete [procinfo][1] 138 | 139 | ### Módulos del Kernel 140 | 141 | En GNU/Linux, el hardware lo administran los drivers del kernel, algunos de los cuales se encuentran integrados (compilados) en el kernel, y otros, en su mayor parte, son módulos independientes. Estos módulos son ficheros que suelen almacenarse en el árbol de directorios `/lib/modules`, y se pueden cargar o descargar para proporcionar acceso al hardware. Normalmente, GNU/Linux carga los módulos que necesita cuando se inicia, pero puede que en ocasiones se necesite cargar módulos manualmente. 142 | 143 | ### modprobe 144 | 145 | El comando **modprobe** sirve para añadir o eliminar modulos del kernel de linux. 146 | 147 | Para eliminar manualmente un drive podemos utilizar `modprobe -r` y para mostrar la información podemos utilizar `modprobe -c`. Con la opcion -v podemos ver lo que se ejecutado y con -n las opciones completadas con exito. 148 | 149 | Añadir un modulo: 150 | 151 | ### lsmod 152 | 153 | Con el comando **lsmod** podemos ver los módulos que hay actualmente cargados en el Kernel. 154 | 155 | >Nos muestra la información formateada del archivo `/proc/modules`. 156 | 157 | Con el comando `modinfo` podemos ver la información de un modulo. Podemos localizar los ficheros de modulos en la ruta `cd /lib/modules/$(uname -r)` 158 | 159 | >`$(uname)- r` nos devuelve la version del kernel de nuestro sistema 160 | 161 | ```bash 162 | sergio@ubuntu:~$ modinfo xor 163 | filename: /lib/modules/4.4.0-143-generic/kernel/crypto/xor.ko 164 | license: GPL 165 | srcversion: C02DF7938B1596D55158340 166 | depends: 167 | retpoline: Y 168 | intree: Y 169 | vermagic: 4.4.0-143-generic SMP mod_unload modversions 686 retpoline 170 | 171 | ``` 172 | 173 | ### lspci y lsusb 174 | 175 | Son herramientas para obtener información sobre los dispositivos pci y usb. 176 | 177 | El comando lspci busca información en el fichero `/usr/share/misc/pci.ids`, que contiene la lista de los IDs conocidos (vendors, devices, classes, and subclasses) [info][3] 178 | 179 | ```bash 180 | sergio@ubuntu:~$ lspci 181 | 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 182 | 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 183 | 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] 184 | 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03) 185 | 00:02.0 VGA compatible controller: Device 1234:1111 186 | 00:03.0 Ethernet controller: Red Hat, Inc. Virtio network device 187 | 00:04.0 USB controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 03) 188 | 00:05.0 Unclassified device [00ff]: Red Hat, Inc. Virtio memory balloon 189 | 00:06.0 SCSI storage controller: Red Hat, Inc. Virtio block device 190 | ``` 191 | 192 | ```bash 193 | sergio@ubuntu:~$ lsusb 194 | Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub 195 | Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd 196 | Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 197 | ``` 198 | 199 | ## 101.2 Arranque del sistema 200 | 201 | Importancia: 3 202 | Descripción: Los candidatos deberán ser capaces de guiar el sistema a lo largo del proceso de arranque. 203 | 204 | **Áreas de conocimiento clave:** 205 | 206 | - Proporcionar comandos comunes al gestor de arranque y opciones al kernel en el momento del arranque. 207 | - Demostrar conocimiento de la secuencia de arranque desde BIOS/UEFI hasta la finalización del arranque. 208 | - Comprensión de SysVinit y systemd. 209 | - Conocimiento de Upstart. 210 | - Comprobar los eventos de arranque en los archivos de registro. 211 | - Lista parcial de los archivos, términos y utilidades utilizados: 212 | 213 | ```bash 214 | dmesg 215 | journalctl 216 | BIOS 217 | UEFI 218 | bootloader 219 | kernel 220 | initramfs 221 | init 222 | SysVinit 223 | systemd 224 | ``` 225 | 226 | ----- 227 | 228 | ### Secuencia de arranque 229 | 230 | La secuencia de arranque (Boot loader) es la que se encarga de realizar los procesos iniciales cuando el sistema es arrancado o reiniciado. 231 | 232 | El programa de arranque reside en la partición del sistema y es invocado antes de iniciar el SO. 233 | 234 | #### Cargadores de arranque (boot loader) 235 | 236 | [GRUB2][6] (GRand Unified Bootloader, Cargador de arranque unificado 237 | 238 | Son particiones que contienen ficheros de configuración para indicar donde se arranca el sistema. 239 | 240 | Cuando GRUB2 lee el archivo de configuración, muestra un menu para seleccionar el sistema que se quiere arrancar. 241 | 242 | `DMESG`: Se utiliza para mostrar o controlar el buffer del anillo del kernel.(es el antiguo comando, ahora se utiliza journalctl) 243 | 244 | `journalctl`: utilidad para mostrar el buffer del anillo del kernel, podemos ver todos los elementos que han sido cargados en la memoria. Con `journalctl -k` mostramos toda la información 245 | 246 | 247 | ### Tipos de arranque 248 | 249 | `init`: es el sistema de inicialización. 250 | 251 | kernel -> /sbin/init -> /etc/inittab 252 | 253 | /etc/inittab 254 | ::: 255 | 256 | `sysVinit`: 257 | 258 | 259 | El fichero `/etc/inittab` era el el antiguo fichero utilizado por el demonio System V init(8). 260 | El demonio Upstart init(8) no usa este fichero, sin embargo lee la configuracion de los ficheros alojados el el directorio /etc/init. 261 | 262 | `śystemd`: es el gestor de systema y de servicios, es el primer proceso en arrancar y tiene el PID (1) 263 | 264 | 265 | Ejemplo del proceso del sistema de arranque: 266 | 267 | 1. La partición de arranque es encontrada. 268 | 2. Kernel y RAM incial son cargadas. 269 | 3. El kernel carga los drivers iniciales y configura las herramientas desde la RAM. 270 | 4. El kernel toma el control del sistema a través de `/sbin/init`. 271 | 5. init realiza alguna tareas de mantenimiento desde `/etc/rc.d/rc.sysinit` 272 | 6. initi lee la linea por defecto de inidefault en /etc/inittab y entra en el runlevel 3 273 | 274 | Estos ficheros se encuentran en diferentes localizaciones dependiendo de la distribución 275 | 276 | - Distribuciones basdas en Red Hat: /etc/rc.d/ 277 | - Distribuciones basadas en debian: /etc/init.d/ 278 | 279 | **rc** = run commands, cada una de las carpetas equivale a los diferentes niveles de arranque. 280 | 281 | Mostramos los elmentos de arranque del nivel de arranque 3(todos son enlaces simbolicos a los ficheros) Se cargaran en el orden que aparecen. 282 | 283 | ```console 284 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~/test_command  ls /etc/rc3.d 285 | S01acpid S01cups-browsed S01rsyslog 286 | S01anacron S01dbus S01saned 287 | S01apport S01docker S01speech-dispatcher 288 | S01avahi-daemon S01gdm3 S01spice-vdagent 289 | S01binfmt-support S01grub-common S01unattended-upgrades 290 | S01bluetooth S01irqbalance S01uuidd 291 | S01console-setup.sh S01kerneloops S01whoopsie 292 | S01cron S01plymouth 293 | S01cups S01rsync 294 | ``` 295 | 296 | `upstart`: es el demononio de arranque de ubunto desarrollado en 2006 y mas adelante utilizado en distribuciones Red Hat, debian y fedora. 297 | 298 | Ha diferencia de init, **upstart** ofrece arranques de servicios asincronos, reduciendo el tiempo de arranque. 299 | 300 | init vs upstart 301 | 302 | 303 | 304 | ## 101.3 Cambiar los niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema 305 | 306 | **Runlevel**: son los diferentes estados que el sistema puede ejecutar 307 | 308 | 309 | | Runleve | Proposito | 310 | | ------- | ------------------------------------------ | 311 | | 0 | halt | 312 | | 1 | Single user mode | 313 | | 2 | multi-user mode (sin red) | 314 | | 3 | multi-user mode( con red) | 315 | | 4 | no utilizado(para entornos personalizados) | 316 | | 5 | multi-user, con red y entorno gráfico | 317 | | 6 | reboot | 318 | 319 | 320 | `systemd`: 321 | 322 | `systemctl`: 323 | 324 | `telinit`: comando para cambiar el modo de arranque 325 | 326 | 327 | cat /etc/inittab 328 | 329 | [1]: https://linux.die.net/man/8/procinfo 330 | [2]: https://www.maketecheasier.com/differences-between-uefi-and-bios/ 331 | [3]: http://manpages.ubuntu.com/manpages/xenial/man8/lspci.8.html 332 | [4]: https://linux.die.net/sag/dev-fs.html 333 | [5]: https://www.kernel.org/doc/html/latest/filesystems/index.html?highlight=filesystem 334 | [6]:https://help.ubuntu.com/community/Grub2#File_Structure -------------------------------------------------------------------------------- /objetivos_101.md: -------------------------------------------------------------------------------- 1 | # Tabla de contenido :+1: 2 | 3 | ## Objetivos del examen 101 4 | 5 | - [ ] [Tema 101: Arquitectura del Sistema](docs/101-500/Tema_101.md) 6 | - [ ] [Tema 102: Instalación de Linux y gestión de paquetes](docs/101-500/Tema_102.md) 7 | - [ ] [Tema 103: Comandos GNU y Unix](docs/101-500/Tema_103.md) 8 | - [ ] [Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos](docs/101-500/Tema_104.md) 9 | 10 | 11 | 12 | 13 | 14 | Tema 101: Arquitectura del Sistema 15 | 101.1 Determinar y configurar los ajustes de hardware 16 | Importancia 17 | 18 | 2 19 | Descripción 20 | 21 | Los candidatos deberán ser capaces de determinar y configurar el hardware fundamental del sistema. 22 | 23 | Áreas de conocimiento clave: 24 | 25 | Activar y desactivar los periféricos integrados. 26 | Diferenciar entre los distintos tipos de dispositivos de almacenamiento masivo. 27 | Determinar los recursos de hardware para los dispositivos. 28 | Herramientas y utilidades para listar información de hardware (por ejemplo, lsusb, lspci, etc.). 29 | Herramientas y utilidades para manipular dispositivos USB. 30 | Conocimientos conceptuales de sysfs, udev y dbus. 31 | 32 | Lista parcial de los archivos, términos y utilidades utilizados: 33 | 34 | /sys/ 35 | /proc/ 36 | /dev/ 37 | modprobe 38 | lsmod 39 | lspci 40 | lsusb 41 | 42 | 101.2 Arranque del sistema 43 | Importancia 44 | 45 | 3 46 | Descripción 47 | 48 | Los candidatos deberán ser capaces de guiar el sistema a lo largo del proceso de arranque. 49 | 50 | Áreas de conocimiento clave: 51 | 52 | Proporcionar comandos comunes al gestor de arranque y opciones al kernel en el momento del arranque. 53 | Demostrar conocimiento de la secuencia de arranque desde BIOS/UEFI hasta la finalización del arranque. 54 | Comprensión de SysVinit y systemd. 55 | Conocimiento de Upstart. 56 | Comprobar los eventos de arranque en los archivos de registro. 57 | Lista parcial de los archivos, términos y utilidades utilizados: 58 | 59 | dmesg 60 | journalctl 61 | BIOS 62 | UEFI 63 | bootloader 64 | kernel 65 | initramfs 66 | init 67 | SysVinit 68 | systemd 69 | 70 | 71 | 101.3 Cambiar los niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema 72 | Importancia 73 | 74 | 3 75 | Descripción 76 | 77 | Los candidatos deberán ser capaces de gestionar el nivel de ejecución de SysVinit o el objetivo de arranque systemd del sistema. Este objetivo incluye cambiar al modo de usuario único, apagar o reiniciar el sistema. Los candidatos deberán ser capaces de alertar a los usuarios antes de cambiar de nivel de ejecución / objetivo de arranque y terminar adecuadamente los procesos. Este objetivo también incluye establecer el nivel de ejecución predeterminado de SysVinit o el objetivo de arranque systemd. También incluye el conocimiento de Upstart como una alternativa a SysVinit o systemd. 78 | 79 | 80 | Áreas de conocimiento clave: 81 | 82 | Establecer el nivel de ejecución o el objetivo de arranque predeterminado. 83 | Cambiar entre niveles de ejecución / objetivos de arranque, incluido el modo monousuario. 84 | Apagar y reiniciar desde la línea de comandos. 85 | Alertar a los usuarios antes de cambiar de nivel de ejecución/objetivo de arranque u otros eventos importantes del sistema. 86 | Terminar procesos de forma adecuada. 87 | Conocimiento de acpid. 88 | 89 | Lista parcial de los archivos, términos y utilidades utilizados: 90 | 91 | /etc/inittab 92 | shutdown 93 | init 94 | /etc/init.d/ 95 | telinit 96 | systemd 97 | systemctl 98 | /etc/systemd/ 99 | /usr/lib/systemd/ 100 | wall 101 | 102 | Tema 102: Instalación de Linux y gestión de paquetes 103 | 102.1 Diseño del esquema de particionado del disco duro duro 104 | Importancia 105 | 106 | 2 107 | Descripción 108 | 109 | Los candidatos deberán ser capaces de diseñar un esquema de particionado de disco para un sistema Linux. 110 | 111 | Áreas de conocimiento clave: 112 | 113 | Asignar sistemas de archivos y espacio de intercambio a particiones o discos separados. 114 | Adaptar el diseño al uso previsto del sistema. 115 | Asegurar de que la partición /boot cumple los requisitos de la arquitectura de hardware para el arranque. 116 | Conocimiento de las características básicas de LVM. 117 | Lista parcial de archivos, términos y utilidades: 118 | 119 | Sistema de archivos / (raíz) 120 | Sistema de archivos /var 121 | Sistema de archivos /home 122 | Sistema de archivos /boot 123 | Partición del sistema EFI (ESP) 124 | Espacio de intercambio (swap) 125 | Puntos de montaje 126 | Particiones 127 | 128 | 102.2 Instalar un gestor de arranque 129 | Importancia 130 | 131 | 2 132 | Descripción 133 | 134 | El candidato debe ser capaz de seleccionar, instalar y configurar un gestor de arranque. 135 | 136 | Áreas de conocimiento clave: 137 | 138 | Proporcionar ubicaciones alternativas para el gestor de arranque así como opciones de arranque de respaldo. 139 | Instalar y configurar un gestor de arranque como GRUB Legacy. 140 | Realizar cambios básicos de configuración para GRUB 2. 141 | Interactuar con el gestor de arranque. 142 | 143 | Lista parcial de archivos, términos y utilidades: 144 | 145 | menu.lst, grub.cfg and grub.conf 146 | grub-install 147 | grub-mkconfig 148 | MBR 149 | 150 | 102.3 Gestión de librerías compartidas 151 | Importancia 152 | 153 | 1 154 | Descripción 155 | 156 | El candidato debe ser capaz de determinar de qué librerías compartidas dependen los programas ejecutables e instalarlas cuando sea necesario. 157 | 158 | Áreas de conocimiento clave: 159 | 160 | Identificar librerías compartidas. 161 | Identificar las ubicaciones típicas de las librerías del sistema. 162 | Cargar librerías compartidas. 163 | Lista parcial de archivos, términos y utilidades: 164 | 165 | ldd 166 | ldconfig 167 | /etc/ld.so.conf 168 | LD_LIBRARY_PATH 169 | 170 | 102.4 Gestión de paquetes Debian 171 | Importancia 172 | 173 | 3 174 | Descripción 175 | 176 | El candidato debe ser capaz de llevar a cabo la gestión de paquetes usando las herramientas de Debian. 177 | 178 | Áreas de conocimiento clave: 179 | 180 | Instalar, actualizar y desinstalar paquetes binarios de Debian. 181 | Encontrar paquetes que contengan archivos o librerías específicos (estén o no instalados). 182 | Obtener información del paquete como la versión, contenido, dependencias, integridad del paquete y estado de la instalación (tanto si el paquete está instalado como si no lo está). 183 | Conocimientos de apt. 184 | Lista parcial de archivos, términos y utilidades: 185 | 186 | /etc/apt/sources.list 187 | dpkg 188 | dpkg-reconfigure 189 | apt-get 190 | apt-cache 191 | 192 | 102.5 Gestión de paquetes RPM y YUM 193 | Importancia 194 | 195 | 3 196 | Descripción 197 | 198 | El candidato debe ser capaz de llevar a cabo la gestión de paquetes usando las herramientas RPM, YUM y Zypper. 199 | 200 | Áreas de conocimiento clave: 201 | 202 | Instalar, reinstalar, actualizar y desinstalar paquetes usando RPM, YUM y Zypper. 203 | Obtener información de paquetes RPM como la versión, estado, dependencias, integridad y firmas. 204 | Determinar qué archivos proporciona un paquete así como encontrar de qué paquete proviene un determinado archivo. 205 | Conocimientos de dnf. 206 | Lista parcial de archivos, términos y utilidades: 207 | 208 | rpm 209 | rpm2cpio 210 | /etc/yum.conf 211 | /etc/yum.repos.d/ 212 | yum 213 | zypper 214 | 215 | 102.6 Linux como sistema virtualizado 216 | Importancia 217 | 218 | 1 219 | Descripción 220 | 221 | El candidato debe entender las implicaciones que conlleva la virtualización y la computación en la nube en un sistema Linux virtualizado. 222 | 223 | Áreas de conocimiento clave: 224 | 225 | Entender el concepto general de máquina virtual y contenedor 226 | Entender elementos comunes de una máquina virtual en un entorno de nube de tipo IaaS, tales como instancia de computación, almacenamiento de bloques y redes 227 | Entender las propiedades únicas de un sistema Linux que tienen que cambiar cuando el sistema se clona o se usa como plantilla 228 | Entender cómo se usan las imágenes de sistema para desplegar máquinas virtuales, instancias de nube y contenedores 229 | Entender las extensiones de Linux que permiten la integración con un producto de virtualización 230 | Conocimientos de cloud-init 231 | Lista parcial de archivos, términos y utilidades: 232 | 233 | Máquina virtual 234 | Contenedor Linux 235 | Contenedor de aplicaciones 236 | Controladores de la máquina huésped 237 | Llaves de host SSH 238 | ID de D-Bus 239 | 240 | Tema 103: Comandos GNU y Unix 241 | 103.1 Trabajar desde la línea de comandos 242 | Importancia 243 | 244 | 4 245 | Descripción 246 | 247 | El candidato debe saber cómo usar la línea de comandos para interactuar con la shell y sus comandos. Se asume el conocimiento de la shell Bash por parte del candidato. 248 | 249 | Áreas de conocimiento clave: 250 | 251 | Usar comandos de shell individuales y secuencias de comandos de una línea para realizar tareas básicas en la línea de comandos. 252 | Usar y modificar el entorno de shell, lo que incluye definir, referenciar y exportar variables de entorno. 253 | Usar y editar el historial de comandos. 254 | Invocar comandos dentro y fuera de la ruta definida. 255 | Lista parcial de archivos, términos y utilidades: 256 | 257 | bash 258 | echo 259 | env 260 | export 261 | pwd 262 | set 263 | unset 264 | type 265 | which 266 | man 267 | uname 268 | history 269 | .bash_history 270 | Uso de comillas 271 | 272 | 103.2 Procesar secuencias de texto usando filtros 273 | Importancia 274 | 275 | 2 276 | Descripción 277 | 278 | El candidato debe saber aplicar filtros a secuencias de texto. 279 | 280 | Áreas de conocimiento clave: 281 | 282 | Enviar archivos de texto y flujos de salida a través de filtros de utilidades de texto para modificar la salida usando comandos UNIX estándar incluidos en el paquete GNU textutils. 283 | Lista parcial de archivos, términos y utilidades: 284 | 285 | bzcat 286 | cat 287 | cut 288 | head 289 | less 290 | md5sum 291 | nl 292 | od 293 | paste 294 | sed 295 | sha256sum 296 | sha512sum 297 | sort 298 | split 299 | tail 300 | tr 301 | uniq 302 | wc 303 | xzcat 304 | zcat 305 | 306 | 103.3 Administración básica de archivos 307 | Importancia 308 | 309 | 4 310 | Descripción 311 | 312 | El candidato debe ser capaz de usar comandos básicos de Linux para la administración de archivos y directorios. 313 | 314 | Áreas de conocimiento clave: 315 | 316 | Copiar, mover y eliminar archivos y directorios de forma individual. 317 | Copiar múltiples archivos y directorios de forma recursiva. 318 | Eliminar archivos y directorios de forma recursiva. 319 | Utilizar especificaciones de comodines simples y avanzadas en los comandos. 320 | Usar find para localizar archivos y actuar sobre ellos en base a su tipo, tamaño o marcas de tiempo. 321 | Uso de tar, cpio y dd. 322 | Lista parcial de archivos, términos y utilidades: 323 | 324 | cp 325 | find 326 | mkdir 327 | mv 328 | ls 329 | rm 330 | rmdir 331 | touch 332 | tar 333 | cpio 334 | dd 335 | file 336 | gzip 337 | gunzip 338 | bzip2 339 | bunzip2 340 | xz 341 | unxz 342 | Uso de comodines (file globbing) 343 | 344 | 103.4 Uso de secuencias de texto, tuberías y redireccionamientos 345 | Importancia 346 | 347 | 4 348 | Descripción 349 | 350 | El candidato debe ser capaz de redireccionar secuencias de texto y conectarlas para procesar la información de forma eficiente. Estas tareas incluyen: la redirección de la entrada estándar, la salida estándar y el error estándar; el uso de tuberías para enviar la salida de un comando a la entrada de otro; el uso de la salida de un comando como argumento para otro comando, así como el envío de la salida de un comando simultáneamente a la salida estándar y a un archivo. 351 | 352 | 353 | Áreas de conocimiento clave: 354 | 355 | Redireccionar la entrada estándar (stdin), la salida estándar (stdout) y el error estándar (stderr). 356 | Utilizar tuberías para enviar la salida de un comando a la entrada de otro. 357 | Usar la salida de un comando como argumento de otro comando. 358 | Enviar la salida de un comando a stdouty a un archivo simultáneamente. 359 | 360 | Lista parcial de archivos, términos y utilidades: 361 | 362 | tee 363 | xargs 364 | 365 | 103.5 Crear, supervisar y matar procesos 366 | Importancia 367 | 368 | 4 369 | Descripción 370 | 371 | El candidato debe ser capaz de realizar una gestión básica de los procesos. 372 | 373 | Áreas de conocimiento clave: 374 | 375 | Ejecutar trabajos en primer y segundo plano. 376 | Enviar señales a los programas para que continúen ejecutándose después del cierre de sesión. 377 | Supervisar procesos activos. 378 | Seleccionar y ordenar procesos para su visualización. 379 | Enviar señales a los procesos. 380 | Lista parcial de archivos, términos y utilidades: 381 | 382 | & 383 | bg 384 | fg 385 | jobs 386 | kill 387 | nohup 388 | ps 389 | top 390 | free 391 | uptime 392 | pgrep 393 | pkill 394 | killall 395 | watch 396 | screen 397 | tmux 398 | 399 | 103.6 Modificar la prioridad de ejecución de los procesos 400 | Importancia 401 | 402 | 2 403 | Descripción 404 | 405 | El candidato debe ser capaz de gestionar las prioridades de ejecución de los procesos. 406 | 407 | Áreas de conocimiento clave: 408 | 409 | Conocer la prioridad predeterminada con la que se crea un proceso. 410 | Ejecutar un programa con una prioridad mayor o menor de la que tiene de forma predeterminada. 411 | Cambiar la prioridad de un proceso en ejecución. 412 | Lista parcial de archivos, términos y utilidades utilizadas: 413 | 414 | nice 415 | ps 416 | renice 417 | top 418 | 419 | 103.7 Realizar búsquedas en archivos de texto usando expresiones regulares 420 | Importancia 421 | 422 | 3 423 | Descripción 424 | 425 | El candidato debe ser capaz de manipular archivos y cadenas de texto usando expresiones regulares. El objetivo incluye la creación de expresiones re\ gulares sencillas que contengan varios elementos de notación así como el uso de herramientas para realizar búsquedas con expresiones regulares dentr\ o de un sistema de archivos o del contenido de un archivo. 426 | 427 | Áreas de conocimiento clave: 428 | 429 | Crear expresiones regulares sencillas que contengan varios elementos de notación. 430 | Saber diferenciar las expresiones regulares básicas de las extendidas. 431 | Entender los conceptos de caracteres especiales, clases de caracteres, cuantificadores y anclas. 432 | Usar herramientas para realizar búsquedas con expresiones regulares dentro de un sistema de archivos o del contenido de un archivo. 433 | Usar las expresiones regulares para borrar, modificar o reemplazar texto. 434 | Lista parcial de archivos, términos y utilidades: 435 | 436 | grep 437 | egrep 438 | fgrep 439 | sed 440 | regex(7) 441 | 442 | 103.8 Edición básica de archivos 443 | Importancia 444 | 445 | 3 446 | Descripción 447 | 448 | El candidato debe ser capaz de editar archivos de texto usando vi. El objetivo incluye la navegación en vi, los modos básicos de vi, así como insertar, editar, borrar, copiar y encontrar texto utilizando vi. También se incluye el conocimiento de otros editores de texto populares y saber establecer el editor predeterminado. 449 | 450 | Áreas de conocimiento clave: 451 | 452 | Navegar por un documento usando vi. 453 | Entender y usar los modos de vi. 454 | Insertar, editar, borrar, copiar y encontrar texto usando vi. 455 | Conocimientos de Emacs, nano y vim. 456 | Configurar el editor estándar. 457 | Lista parcial de archivos, términos y utilidades: 458 | 459 | vi 460 | /, ? 461 | h,j,k,l 462 | i, o, a 463 | d, p, y, dd, yy 464 | ZZ, :w!, :q! 465 | EDITOR 466 | 467 | Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos 468 | 104.1 Creación de particiones y sistemas de archivos 469 | Importancia 470 | 471 | 2 472 | Descripción 473 | 474 | El candidato debe ser capaz de configurar particiones de disco para después crear sistemas de archivos en medios tales como discos duros. Se incluye el manejo de las particiones swap. 475 | 476 | Áreas de conocimiento clave: 477 | 478 | Administrar tablas de particiones MBR y GPT 479 | Usar diversos comandos mkfs para crear distintos sistemas de archivos tales como: 480 | ext2/ext3/ext4 481 | XFS 482 | VFAT 483 | exFAT 484 | Conocimientos básicos del sistema de archivos Btrfs, incluyendo los sistemas de archivos multidispositivo, la compresión y los subvolúmenes. 485 | Lista parcial de archivos, términos y utilidades: 486 | 487 | fdisk 488 | gdisk 489 | parted 490 | mkfs 491 | mkswap 492 | 493 | 104.2 Mantener la integridad de los sistemas de archivos 494 | Importancia 495 | 496 | 2 497 | Descripción 498 | 499 | El candidato debe ser capaz de mantener un sistema de archivos estándar así como los datos adicionales asociados a un sistema de archivos con registro de diario (journaling). 500 | 501 | Áreas de conocimiento clave: 502 | 503 | Verificar la integridad de los sistemas de archivos. 504 | Supervisar el espacio libre y los inodos. 505 | Solucionar problemas simples relacionados con los sistemas de archivos. 506 | Lista parcial de archivos, términos y utilidades: 507 | 508 | du 509 | df 510 | fsck 511 | e2fsck 512 | mke2fs 513 | tune2fs 514 | xfs_repair 515 | xfs_fsr 516 | xfs_db 517 | 518 | 104.3 Controlar el montaje y desmontaje de los sistemas de archivos 519 | Importancia 520 | 521 | 3 522 | Descripción 523 | 524 | El candidato debe ser capaz de configurar el montaje de un sistema de archivos. 525 | 526 | Áreas de conocimiento clave: 527 | 528 | Montar y desmontar sistemas de archivos de forma manual. 529 | Configurar el montaje del sistema de archivos en el arranque. 530 | Configurar sistemas de archivos extraibles y montables por el usuario. 531 | Uso de etiquetas e identificadores únicos universales (UUIDs) para la identificación y el montaje de sistemas de archivos. 532 | Conocimientos de las unidades de montaje de systemd. 533 | Lista parcial de archivos, términos y utilidades: 534 | 535 | /etc/fstab 536 | /media/ 537 | mount 538 | umount 539 | blkid 540 | lsblk 541 | 542 | 104.4 Eliminado 543 | 544 | 104.5 Administración de los permisos y los propietarios de los archivos 545 | Importancia 546 | 547 | 3 548 | Descripción 549 | 550 | El candidato debe ser capaz de controlar el acceso a los archivos mediante el uso apropiado de sus permisos y propietarios. 551 | 552 | Áreas de conocimiento clave: 553 | 554 | Administrar los permisos de acceso a archivos regulares y especiales así como a directorios. 555 | Usar modos de acceso tales como el suid, el sgid y el sticky bit para mantener la seguridad. 556 | Saber cambiar la máscara de creación de archivos. 557 | Usar el campo grupo para otorgar acceso a archivos a miembros de un grupo. 558 | Lista parcial de archivos, términos y utilidades: 559 | 560 | chmod 561 | umask 562 | chown 563 | chgrp 564 | 565 | 104.6 Crear y cambiar enlaces duros y simbólicos 566 | Importancia 567 | 568 | 2 569 | Descripción 570 | 571 | El candidato debe ser capaz de crear y administrar los enlaces duros y simbólicos de un archivo. 572 | 573 | Áreas de conocimiento clave: 574 | 575 | Crear enlaces. 576 | Identificar enlaces duros y/o simbólicos. 577 | Copiar versus enlazar archivos. 578 | Usar enlaces para facilitar las tareas de administración del sistema. 579 | Lista parcial de archivos, términos y utilidades: 580 | 581 | ln 582 | ls 583 | 584 | 104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente 585 | Importancia 586 | 587 | 2 588 | Descripción 589 | 590 | El candidato debe estar completamente familiarizado con el Estándar de Jerarquía del Sistema de Archivos (Filesystem Hierarchy Standard, FHS), incluyendo las ubicaciones típicas de archivos y la clasificación de directorios. 591 | 592 | Áreas de conocimiento clave: 593 | 594 | Entender las ubicaciones correctas de los archivos bajo el criterio del FHS. 595 | Encontrar archivos y comandos en un sistema Linux. 596 | Conocer la ubicación y finalidad de archivos y directorios importantes tal como se definen por el FHS. 597 | Lista parcial de archivos, términos y utilidades: 598 | 599 | find 600 | locate 601 | updatedb 602 | whereis 603 | which 604 | type 605 | /etc/updatedb.conf 606 | -------------------------------------------------------------------------------- /docs/101-500/103:Comandos-GNU-y-Unix.md: -------------------------------------------------------------------------------- 1 | - [Tema 103: Comandos GNU y Unix](#tema-103-comandos-gnu-y-unix) 2 | - [103.1 Trabajar desde la linea de comandos](#1031-trabajar-desde-la-linea-de-comandos) 3 | - [ls](#ls) 4 | - [cp](#cp) 5 | - [rm](#rm) 6 | - [file](#file) 7 | - [Trabajando con directorios](#trabajando-con-directorios) 8 | - [mkdir](#mkdir) 9 | - [\$PATH](#path) 10 | - [103.2 Procesar secuencias de texto usando filtros](#1032-procesar-secuencias-de-texto-usando-filtros) 11 | - [103.3 Administración básica de archivos](#1033-administraci%c3%b3n-b%c3%a1sica-de-archivos) 12 | - [find](#find) 13 | - [which](#which) 14 | - [File Globing](#file-globing) 15 | - [dd](#dd) 16 | - [103.4 Uso de secuencias de texto, tuberías y redireccionamientos](#1034-uso-de-secuencias-de-texto-tuber%c3%adas-y-redireccionamientos) 17 | - [103.5 Crear, supervisar y matar procesos](#1035-crear-supervisar-y-matar-procesos) 18 | - [Revisar el estado del sistema](#revisar-el-estado-del-sistema) 19 | - [Monitorizar procesos](#monitorizar-procesos) 20 | - [Mantener un proceso corriendo](#mantener-un-proceso-corriendo) 21 | - [103.6 Modificar la prioridad de ejecución de los procesos](#1036-modificar-la-prioridad-de-ejecuci%c3%b3n-de-los-procesos) 22 | - [103.7 Realizar búsquedas en archivos de texto usando expresiones regulares](#1037-realizar-b%c3%basquedas-en-archivos-de-texto-usando-expresiones-regulares) 23 | - [103.8 Edición básica de archivos](#1038-edici%c3%b3n-b%c3%a1sica-de-archivos) 24 | 25 | # Tema 103: Comandos GNU y Unix 26 | 27 | ## 103.1 Trabajar desde la linea de comandos 28 | 29 | Comandos básicos para trabajar con ficheros. 30 | 31 | - `ls` - se utiliza para listar los archivos y directorios. 32 | - `touch` - es utilizado para modificar el sello de tiempo de un fichero, pero es mas comunmente utilizado para crear nuevos archivos. 33 | - `cp` - comando para copiar ficheros 34 | - `rm` - comando para borrar ficheros o carpetas. 35 | - `mv` - comando usado para mover. 36 | - `file` - se utiliza para para probar y determinar el tipo de un fichero. 37 | 38 | ### ls 39 | 40 | `ls -la` - **l** para listar y **a** para mostrar todos los archivo incluidos los ocultos 41 | `ls -lR` /etc/ - Lista recursivamente todas las capetas que hay en **/etc/** 42 | 43 | ### cp 44 | 45 | Copiar un directorio 46 | 47 | ```console 48 | cp -vR /etc etc_bak 49 | ``` 50 | 51 | Con el parametro -i nos pide confirmació. 52 | 53 | ### rm 54 | 55 | Eliminamos un directorio utilizando `-rf` 56 | 57 | ```console 58 | sergio@ubuntu:~$ rm -rf etc_bak/ 59 | ``` 60 | 61 | ### file 62 | 63 | ```console 64 | sergio@ubuntu:~$ file .gitconfig 65 | .gitconfig: ASCII text 66 | ``` 67 | 68 | ## Trabajando con directorios 69 | 70 | `cd` - comando para cambiar de directorio 71 | `mkdir` - para crear un directorio 72 | `rmdir` - eliminar un directorio 73 | `$PATH` - variable de entorno que describe el directorio donde los usuarios pueden ejecutar una aplicacion sin especificar la ruta completa. 74 | 75 | `cd -` volvemos al ultimo directorio en el que hemos estado. 76 | echo \$OLDPWD - nos devuleve el utimo directorio 77 | 78 | ```console 79 | sergio@ubuntu:~$ cd NAS/ 80 | sergio@ubuntu:~/NAS$ cd - 81 | /home/sergio 82 | sergio@ubuntu:~$ echo $OLDPWD 83 | /home/sergio/NAS 84 | ``` 85 | 86 | Para volver dos directorios atrás 87 | 88 | ``` 89 | sergio@ubuntu:/etc/systemd/system$ cd ../.. 90 | sergio@ubuntu:/etc$ 91 | ``` 92 | 93 | ### mkdir 94 | 95 | Para crear un directorio anidado dentro de otro utilizamos el parámetro `-p` 96 | 97 | ```bash 98 | mkdir -p Documents/notes 99 | ``` 100 | 101 | ### \$PATH 102 | 103 | Todos los comandos que estén en la variable \$PATH, podrán ser ejecutados desde cualquier ruta del sistema. 104 | 105 | ```console 106 | sergio@ubuntu:~$ echo $PATH 107 | /home/sergio/gems/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin 108 | ``` 109 | 110 | ## 103.2 Procesar secuencias de texto usando filtros 111 | 112 | `less` - sirve para mostrar el texto de un fichero linea por linea 113 | 114 | `uniq` - omite las lineas repetidas 115 | 116 | ## 103.3 Administración básica de archivos 117 | 118 | Archivos y compresión de carpetas 119 | 120 | `dd` - copia y convierte archivos. Se utiliza para crear fichero de un determinado tamaño y realizar copias de seguridad de unidades de disco. 121 | 122 | `tar` - combina ficheros y directorios en un archivo. Este comando no proporciona compresión. 123 | 124 | `gzip` - comprime ficheros en formato gz. 125 | 126 | `gunzip` - descomprime ficheros en formato gz 127 | 128 | `bzip2` - comprime ficheros en formato bz2. 129 | 130 | `bunzip2` - descomprime ficheros en bz2. 131 | 132 | `xz` - comprime ficheros en formato xz. 133 | 134 | `unxz` - descomprime ficheros formato xz. 135 | 136 | Los diferentes tipos de ficheros que podemos encontrar en linux son: 137 | 138 | - **Archivos regulares**(-) 139 | 140 | - **Directory files(d)** 141 | 142 | - **Archivos especiales**: 143 | - Archivo bloqueado(b) 144 | - Carácter de archivo de dispositivo(c) 145 | - Named pipe file or just a pipe file(p) 146 | - Archivo de enlace simbólico(l) 147 | - Archivo de Socket (s) 148 | 149 | Buscar ficheros 150 | 151 | ### find 152 | 153 | `find` 154 | 155 | _-name_: para buscar por nombre de fichero. 156 | 157 | _-ctime_: encuentra ficheros basados en el momento que fueron modificados. 158 | 159 | _-atime_: encuentra ficheros basados en el momento que se accedió a ellos. 160 | 161 | _-empty_: -exec[command]{}\; ejecutamos un comando después de realizar una búsqueda, útil por ejemplo para eliminar todos los ficheros que encontremos vacios 162 | 163 | > El comando find busca recursivamente en la carpetas que esten jerarquicamente por debajo. 164 | 165 | ```console 166 | sergio@ubuntu:~$ sudo find / -name passwd 167 | /usr/bin/passwd 168 | /usr/share/lintian/overrides/passwd 169 | /usr/share/doc/passwd 170 | /usr/share/bash-completion/completions/passwd 171 | /etc/cron.daily/passwd 172 | /etc/passwd 173 | /etc/pam.d/passwd 174 | ``` 175 | 176 | Buscar los ficheros del directorio home modificados en el ultimo día 177 | 178 | ```console 179 | sergio@ubuntu:~$ find . -ctime -1 180 | . 181 | ./a_file 182 | ./.bash_history 183 | ./Projects 184 | ./Documents 185 | ./Documents/notes 186 | ``` 187 | 188 | Ficheros modificados en los últimos dos días 189 | 190 | ```console 191 | sergio@ubuntu:~$ find . -atime -2 192 | ``` 193 | 194 | Buscar los ficheros vacíos (con `-f` buscamos los ficheros con `-d` los directorios) 195 | 196 | ```console 197 | sergio@ubuntu:~$find . -empty -type -f 198 | ``` 199 | 200 | Borrar todos los ficheros vacios 201 | 202 | ```console 203 | find . -empty -type f -exec rm -fv {} \; 204 | ``` 205 | 206 | Buscar en el home del usuario todos los archivos comprimidos y copiarlos a la carpeta test 207 | 208 | ```console 209 | find ~ -name "*.tar.*" -exec cp -v {} /home/sergio/test \; 210 | ``` 211 | 212 | ### which 213 | 214 | `which` sirve para localizar donde esta instalado un paquete. 215 | 216 | ```console 217 | [sergio@hostingsoriano ~]$ which nginx 218 | /usr/sbin/nginx 219 | ``` 220 | 221 | ### File Globing 222 | 223 | `*`: localiza cero o mas caracteres 224 | 225 | `?`: localiza cualquier caracter exacto. 226 | 227 | `[abc]`: localiza cualquier de los caracteres de la lista, es sensible a mayusculas. 228 | 229 | `[^abc]`: localiza cualquier caracter menos los de la lista. 230 | 231 | `[0-9]`: licaliza un rango de numeros. 232 | 233 | muestra los ficheros que empiezan por B o b y tienen extension js. 234 | 235 | ```console 236 | sergio@ubuntu:~/blockchain/curso-bitcoin-blockchain-piloto$ ls [Bb]*.js 237 | BasicCoin.js BasicPoWCoin.js 238 | ``` 239 | 240 | Creamos varios directorios en una misma orden 241 | 242 | ```console 243 | sergio@ubuntu:~$ mkdir -p Projects/{A,B,C,D} 244 | sergio@ubuntu:~$ ls Projects/ 245 | A B C D 246 | sergio@ubuntu:~$ 247 | ``` 248 | 249 | Ver el contenido de un archivo comprimido 250 | 251 | ```console 252 | catxz archivo.xz 253 | ``` 254 | 255 | mostrar la columna 6 del archivo de usuarios passwd 256 | 257 | ```console 258 | sergio@ubuntu:~/$ cut -f 6 -d ':' /etc/passwd 259 | ``` 260 | 261 | Combinar el contenido de dos ficheros 262 | 263 | ```console 264 | sergio@ubuntu:~$ paste file1 file2 265 | ``` 266 | 267 | ### dd 268 | 269 | Nos sirve para crear una copia exacta de un dispositivo de almacenamiento, copiar una imagen a un pendrive, o cualquier tarea que requiere copiar o clonar información de un medio a otro. 270 | 271 | Podemos crear por ejemplo crear una copiar de seguridad del sistema de arranque: 272 | 273 | ```console 274 | sergio@ubuntu:~$ sudo dd if=/dev/vda of=/tmp/mbr.img bs=512 count=1 275 | 1+0 registros leídos 276 | 1+0 registros escritos 277 | 512 bytes copied, 0,0012344 s, 415 kB/s 278 | sergio@ubuntu:~$ ls /tmp/ 279 | ``` 280 | 281 | Es necesario un **origen**(if) y un **destino** (of) 282 | 283 | la opcion `bs=512` sirve para indicar que tanto en la lectura como en la escritura se hagan bloques de 512 BYTES 284 | 285 | Para copiar el MBR: 286 | 287 | ```console 288 | sudo dd if=/dev/hda |pv|dd of=mbr count=1 bs=512 289 | ``` 290 | 291 | ## 103.4 Uso de secuencias de texto, tuberías y redireccionamientos 292 | 293 | Redirigiendo las salidas con los caracteres >,>> 294 | 295 | input y output 296 | 297 | input <, | 298 | abreviatura 'stdin' 299 | 300 | ```console 301 | wc test.sh (input proviene del teclado) 302 | wc < test.sh (input proviene de un arhivo) 303 | cat /etc/passwod | less (input proviene de stdout del comando cat) 304 | ``` 305 | 306 | standar error -> 'stdeer' 307 | 308 | `tee`: concatenado con el comando find nos devuelve la salida de find en un fichero. 309 | 310 | ```console 311 | find / -iname "*.sh" | tee result.txt 312 | ``` 313 | 314 | `xargs` : toma la entrada (el resultado de otro comando) normalmente `find` y lo pasa a otro comando 315 | 316 | Listar todas las carpetas de librerías disponibles, pasar a un fichero y ordenar en otro fichero 317 | 318 | ```console 319 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~  ls -d /usr/share/doc/lib[Xx]* | tee lib.docs.txt | sort -r | tee lib-docs-rev.txt 320 | ``` 321 | 322 | Buscar todos los fichero con la extension sh e imprimir los resultados con el comando ls en un fichero. 323 | 324 | ```console 325 | find / -name "*.sh" | xargs ls -al > myresult.txt 326 | ``` 327 | 328 | Buscar todos lo ficheros dentro de carpeta test que tengan la palabra junk y moverlos a la carpeta bak. el parámetro -l obtendrá el nombre del fichero. 329 | 330 | ```console 331 | grep -l "junk" test/file_* | xargs -I {} mv {} test/bak/ 332 | ``` 333 | 334 | Eliminar todos los ficheros que encontremos con locate 335 | 336 | ``` 337 | sudo locate whatever | xargs rm -f 338 | ``` 339 | 340 | ## 103.5 Crear, supervisar y matar procesos 341 | 342 | En este tema aprenderemos a ejecutar trabajos en primer y segundo plano, enviar señales a los programas para que se ejecuten despues de cerrar una sesión, supervisar procesos activos, ordenar los procesos para visualizarlos y enviar señales a los procesos. 343 | 344 | `man proc` - manual del del pseudo directorio del sistema de ficheros. 345 | 346 | `man 7 signal` - manual del los diferentes estados de las señales de procesos. 347 | 348 | ### Revisar el estado del sistema 349 | 350 | **Procesos**: son set de intrucciones que estan cargados en la memoria. 351 | 352 | `PID`: es el identificador del proceso 353 | 354 | `ps`: nos muestra los procesos 355 | 356 | > ps -a muestra todos los procesos. 357 | 358 | > ps -eH | less - muestra todos los procesos ordenados por jerarquia. 359 | 360 | > ps -u username - muestro los procesos de un usuario 361 | 362 | > ps -e --forest - muestra todos los procesos en arbol 363 | 364 | `top`: sirve para ver los proceso que hay activos 365 | 366 | Si pulsamos la tecla `k` y escribimos el PID del procesos lo matamos. 367 | 368 | ### Monitorizar procesos 369 | 370 | `uptime` para conocer el tiempo que lleva arrancado el sistem. 371 | 372 | ```console 373 | [sergio@hostingsoriano ~]$ uptime 374 | 21:48:41 up 2:06, 1 user, load average: 0,00, 0,01, 0,05 375 | ``` 376 | 377 | `free`: sirve para conocer la memoria ram y de la partición de swap. 378 | 379 | ```console 380 | sergio@Lenovo:~/GITHUB/LPIC-1$ free -h 381 | total used free shared buff/cache available 382 | Mem: 7,5G 4,8G 609M 542M 2,1G 2,1G 383 | Swap: 2,0G 111M 1,9G 384 | 385 | ``` 386 | 387 | `pgrep`: nos devuelve el PID del proceso basado en el nombre. 388 | 389 | > Con pgrep -a nginx nos muestra el proceso con la ruta completa. 390 | 391 | ```console 392 | [root@hostingsoriano sergio]# pgrep nginx 393 | 14686 394 | 14711 395 | [root@hostingsoriano sergio]# pgrep -a nginx 396 | 14686 nginx: master process nginx -g daemon off; 397 | 14711 nginx: worker process 398 | [root@hostingsoriano sergio]# pgrep -u sergio 399 | 13666 400 | 13667 401 | ``` 402 | 403 | `kill`: mata el proceso con PID introducido, en caso de que el proceso tenga otros elementos depentiendes de el tambien matarar los procesos hijos. Envia una señal (normalmente SIGTERM) a un proceso basado en su PID 404 | 405 | `pstree` - nos muestra un arbol de los procesos. 406 | 407 | `pkill` - envía una señal (normalmente SIGTERM) a un proceso basado en su nombre(mata el proceso indicando el nombre). 408 | 409 | La diferencia entre SIGTERM y SIGKILL, es que el kill mata todos los procesos hijos, y SIGTERM solo el proceso en cuestión. 410 | 411 | > Se recomienda utilizar SIGTERM(15) antes de utilizar SIGKILL(9). 412 | 413 | --- 414 | 415 | ### Mantener un proceso corriendo 416 | 417 | Las tareas son procesos que son gestionados por con consola(shell). A cada tarea se asigna un ID se forma secuencial. Y puesto que cada tarea es un proceso tambien lleva asociado un PID. 418 | 419 | Tenemos que entender la diferencia que existe entre tareas que se ejecuta en primer plano(_foreground_) y en segundo plano(_background_). 420 | 421 | **Foreground**: una teare se ejecuta en primer plano cuando esta ha sido lanzada desde una terminal, la terminal se queda ocupada hasta que no ha temirnado de ejecutar la tarea. 422 | 423 | **Background**: cuando escribes una ampersand `&` al final de la ejecución que pasas por la linea de comandos. De esta manera el proceso se ejecuta en segundo plano. 424 | 425 | Una tarea o trabajo que ejecutemos puede tener diferentes estados: 426 | 427 | - **Runnung**: cuando se ejecuta en consola o segundo plano. 428 | - **Suspended**: pasa a suspendida cuando una vez lanzada pulsamos `control + z` 429 | - **Stopped**: la tarea se para cuando si es lanzada por consola presionamos `control + c` 430 | 431 | `killall` - mata todos los procesos basados en el nombre 432 | 433 | sudo killall nginx 434 | 435 | `watch` - ejecuta un comando en intervalos, por ejemplo df cada 5 segundos para saber si el disco se esta llenando. 436 | 437 | ``` 438 | watch -n 5 df 439 | ``` 440 | 441 | `screen` - permite ejecutar una consola en una nueva sesión, por ejemplo si nos conectamos a un servidor y queremos que se nos mantenga la consola abierta en caso de que perdamos la conexón. 442 | 443 | > Ejecutamos screen -r para volver a la sesion que habiamos dejado abierta 444 | 445 | > Para dejar en segundo plano tenemos que pulsar Control+a y Control+d 446 | 447 | `tmux` - es como screen pero con mas funciones. 448 | 449 | Ejemplos [aquí](http://www.sromero.org/wiki/linux/aplicaciones/tmux) 450 | 451 | Por ejemplo para conectarnos a un servidor 452 | 453 | 1. tmux - nos abre una nueva terminal bajo tmux. 454 | 2. Nos conectamos a un servidor remote (SSH). 455 | 3. Presionamos `Control+b+d` para volver a nuestro equipo(dejando la sesion abierta). 456 | 457 | `tmux ls` - para ver las sesioes abiertas. 458 | 459 | Para volver a una sesion abierta. 460 | 461 | ``` 462 | tmux attach-session -t 0 463 | ``` 464 | 465 | `nohup` - un comando que lanzemos escribiendo previeamente nohup, se seguira ejecutando hasta que no se cierre la sesion con la que nos hemos logado. Nos crea un fichero **nohup.out** que podemos consultar con tail. 466 | 467 | ```console 468 | sergio@Lenovo-ideapad-710S-Plus-13IKB  ~/GITHUB/LPIC-1   master ●✚  nohup ping www.sergiosoriano.es & 469 | [1] 21518 470 | nohup: ignoring input and appending output to 'nohup.out' 471 | ⚙ sergio@Lenovo-ideapad-710S-Plus-13IKB  ~/GITHUB/LPIC-1   master ●✚  jobs 472 | [1] + running nohup ping www.sergiosoriano.es 473 | ``` 474 | 475 | `tail -f nohup.out` 476 | 477 | Para conocer el PID del proceso ejecutamos. 478 | 479 | ```console 480 | ⚙ sergio@Lenovo-ideapad-710S-Plus-13IKB  ~/GITHUB/LPIC-1   master ●✚  jobs -l 481 | [1] + 21518 running nohup ping www.sergiosoriano.es 482 | ``` 483 | 484 | `fg` - sirve para traer un tareas de segundo plano al primer plano. `fg %1` donde `%1` es el número de la tarea que podemos ver con la orden `jobs`. 485 | 486 | `bg` - sirve para ejecutar tareas suspendias en segundo plano. Si hemos lanzado una tarea y la hemos dejado en estado suspendido, podemos relanzarla en segundo plano ejecutando `bg %1`. 487 | 488 | [Ejemplos](https://www.thegeekdiary.com/understanding-the-job-control-commands-in-linux-bg-fg-and-ctrlz/) 489 | 490 | ## 103.6 Modificar la prioridad de ejecución de los procesos 491 | 492 | Manejar la prioridad de los procesos y ejeutar trabajos con diferentes prioridades. 493 | 494 | `nice` - sirve para asignar la prioridad de un proceso. 495 | 496 | `ps` - muestra los procesos activos. Con `ps -a` vemos todos los procesos. 497 | 498 | `renice` - para cambiar la prioridad de un proceso 499 | 500 | `top` - nos muestra los procesos activos. 501 | 502 | ## 103.7 Realizar búsquedas en archivos de texto usando expresiones regulares 503 | 504 | Buscar una cadena de texto en un fichero 505 | 506 | `grep -i 'texto' fichero` 507 | 508 | Con el parametro `-i` ignora si el texto esta en mayúsculas o minúsculas. 509 | 510 | `grep` - Podemos utilizarlo para buscar cadenas de texto en ficheros, directorios y salidas de otros comandos. 511 | 512 | `egrep` - Igual que el comando grep pero sin necesidad de añadir el parametro `-E` que nos permite extender el comando para utilizar expresiones regulares. 513 | 514 | `fgrep` - Igual que el comando grep opero sin necesidad de añadir el parametro `-F` que nos permite buscar cadenas de texto en **más de un** fichero que le indiquemos como parámetro. 515 | 516 | `sed` - Este comando nos permite modificar el contenido de fichetos de texto. 517 | 518 | `regex(7)` - Expresiones regulares. Mas información [aquí](http://man7.org/linux/man-pages/man7/regex.7.html) 519 | 520 |

Ejemplos

521 | 522 | 1. Buscar el texto 'apache' recursivamente en el home del usuario 523 | 524 | ```s 525 | grep -Ril apache ~/ 526 | ``` 527 | 528 | 2.Buscar los usuarios que existen en el fichero de passwd que empiecen por ope y ademas tengan una 529 | 'n' o 'r' en la siguiente letra. 530 | 531 | ```s 532 | egrep '^ope(n|r)' /etc/passwd 533 | ``` 534 | 535 | 3. Mostrar todas las cuentas que no tienen habilitado el login 536 | 537 | ``` 538 | grep "nologin" /etc/passwd 539 | ``` 540 | 541 | [Generador de expresiones regulares](https://regexr.com/) 542 | 543 | 4. Cambia la palabra web por web site del ficher myfile 544 | 545 | ```s 546 | sed 's/web/website/' ./myfile 547 | ``` 548 | 549 | 5. Buscar el shell de bash y reemplazarlo con el shell csh en el archivo /etc./passwd utilizando sed 550 | 551 | ```s 552 | sed 's!/bin/bash!/bin/csh!' /etc/passwd 553 | ``` 554 | 555 | Más ejemplos [aquí](http://www.sromero.org/wiki/linux/aplicaciones/uso_de_sed) 556 | 557 | ## 103.8 Edición básica de archivos 558 | 559 | Uso de VI 560 | 561 | - [] Navegar por un documento usando vi. 562 | - [] Entender y usar los modos de vi. 563 | - [] Insertar, editar, borrar, copiar y encontrar texto usando vi. 564 | - [] Conocimientos de Emacs, nano y vim. 565 | - [] Configurar el editor estándar. 566 | 567 | `/, ?` - buscar una cadena de texto 568 | 569 | `h,j,k,l` - la misma funcion que las flechas de movimiento, arriba, abajo, izquierda y derecha entre carćteres y lineas. 570 | 571 | `i, o, a` - para insertar caracteres, con `i` a la izquierda, `o` añade una nueva linea y con `a` a la derecha del cursor. 572 | 573 | `d, p, y, dd, yy` - `d` para eliminar , `p` para pegar y `y` para copiar. 574 | 575 | `dd` - elimna la linea completa sobre la que estas situado 576 | 577 | `yy` - copia la linea. 578 | 579 | `p` - pega el texto copiado. 580 | 581 | `ZZ, :w!, :q!` 582 | 583 | `:w!` - guardar. 584 | 585 | `:q!` - salir sin guardar. 586 | 587 | `ZZ` - guarda el documento y salir. 588 | 589 | https://vim.fandom.com/wiki/Vim_Tips_Wiki 590 | 591 | Mas información [aquí](https://www.thegeekdiary.com/basic-vi-commands-cheat-sheet/) 592 | --------------------------------------------------------------------------------