B2-T2_LINUX Flashcards

(194 cards)

1
Q

¿Cómo se llama al proceso con PID=1 que arranca los servicios al inicio del sistema?

A

init

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Para qué hacemos “export” sobre una variable?

A

Para que sea visible en los distintos niveles de shell o entornos de los procesos hijos (algo asi como hacerla global)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué representa un volumen físico dentro de LVM?

A

Un disco duro o partición que podremos añadir a un determinado VG (grupo de volúmenes).

Ej /dev/hda o /dev/sdb1

Ejemplo: amplíar el volumen lógico LVprueba sumándole 2 GB adicionales dentro del grupo de volúmenes saco_vg:

lvextend -L +2G /dev/saco_vg/LVprueba

✅ Detalles importantes:
- -L → especifica el tamaño absoluto del LV.
- +2G → el signo + indica que quieres aumentar el tamaño actual en 2 gigabytes.
- Si no pusieras el +, estarías fijando el tamaño total del LV a 2G, no sumando.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué representa el dispositivo /dev/sda1?

A

Dentro del disco SCSI/SATA sda, la primera partición.
NOTA: los valores 1-4 son para particiones primarias

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Cuál es la herramienta clásica para instalar software en las distro de la familia Debain usando el catálogo de paquetes que hay en internet?

A

APT (Advanced Package Tool = Herramienta Avanzada de Empaquetado), aunque también existen: APTITUDE y SYNAPTIC.
Las URLs con los catálogos de todos los paquetes están en: /etc/apt/SOURCES.LIST

NOTA: Si nos bajamos el fichero .deb entonces se instala con dpkg => MODO OFFLINE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Cuál es la herramienta clásica para instalar software en las distribuciones de la familia Red Hat utilizando los catálogos de paquetes disponibles en Internet?

A

YUM (Yellowdog Updater, Modified) es la herramienta clásica para instalar software en sistemas de la familia Red Hat usando repositorios remotos.

  • Los ficheros que definen los repositorios están en:
    /etc/yum.repos.d/
  • DNF (Dandified Yum) se introdujo en Fedora 18 y pasó a ser el gestor por defecto sustituyendo a YUM en Fedora 22.
    En RHEL y CentOS modernos también reemplaza a YUM, aunque existe un wrapper llamado yum que realmente ejecuta dnf.
  • Si descargas un paquete .rpm manualmente, se instala con:
    rpm -i paquete.rpm
    (aunque hoy en día se recomienda usar dnf install paquete.rpm para resolver dependencias).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Sabemos que los GESTORES DE PAQUETES más populares en Windows son Winget (el oficial de Microsoft), Chocolatey (choco) y Scoop, que permiten instalar, actualizar y administrar software fácilmente desde la línea de comandos.
Nombra otros gestores de paquetes de diferentes sistemas:

A

-Npm Y Yarn => JS
-Composer => PHP
-Nuget => .NET
-Homebrew => MAC (Brew)
-Maven => Java
-Apt => Debian
-Yum (DNF) => Red Hat

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Qué es WSL?

A

(Subsistema de Windows para LINUX)
Máquina virtual de Windows para usar LINUX (a partir de Windows 10).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Cuál es la estructura del kernel de Linux?

A

Monolítica (todo en un sólo software): todas las funcionalidades importantes estan dentro del kernel (kernel space), a diferencia de en Windows.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Referente a LINUX, ¿qué es SCI?

A

(System Call Interface = Interfaz de la llamada del sistema) => comunica las dos partes de LINUX (User Space y Kernel Space).

Es una interfaz que usa el “Espacio de Usuario” cuando hace una llamada al “Kernel” (ej: FORK, a través de la interrupción: int 80h, ahora syscall), porque una aplicación necesite de algún recurso de este, que con las “libc” no le sea suficiente.

*libc: son las librerías (lenguaje c), que usan las aplicaciones que se ejecutan en el ESPACIO DE USUARIO.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué son los módulos del Kernel LKM?

A

(Módulos de Kernel cargables/Loable).

Permite cargar nuevos módulos (pluggins) en el kernel dinámicamente en tiempo de ejecución, es decir, puedes partir de un kernel básico e ir luego cargando los modulos que vayamos necesitando.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Cuál es el fichero ejecutable o binario que contiene el Kernel de LINUX?

A

/boot/vmlinuz-x.x.x-x

NOTA: es el fichero que se indica al Gestor de Arranque (bootloader) para que cargue el SO cuando el equipo arranca.

  • Suele estar comprimido (de ahí vmlinuz: Virtual Memory LINUx gZip).
  • El número de versión (x.x.x-x) corresponde a la versión exacta del kernel instalado.
  • El bootloader (GRUB, LILO, etc.) apunta a este fichero en su configuración.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Qué es el “shceduler”?

A

El planificador (scheduler) es la parte del SO que decide a qué proceso preparado se le da paso a CPU

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Comenta el sistema de ficheros (FS) “VFS”:

A

(Virtual File System) Es una capa a nivel de E/S para poder tratar de manera homogénea el almacenamiento.
Ya que en LINUX tenemos un única árbol de directorios con toda la información, aunque sean de diferentes fuentes, pues VFS oculta toda esa complejidad mostrando un almacenamiento homogéneo.

NOTA: en Windows esta capa se llama HAL (Hardware Abstraction Layer). A partir de Windows NT.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Nombra algunos SO de tipo UNIX?

A

-BSD (Distribución de Software Berkeley)
-HP-UX (Hewlett-Packard UNIX)
-SOLARIS (Sun Microsystem)
-SCO (Santa Cruz Operaction)
-AIX (Advanced Interactive eXecution) de IBM

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Nombra algunas distribuciones de LINUX:

A

-Debian -> Ubuntu -> Mint
-Suse: alemana.
-ARCH LINUX: Pacman es su herramienta de paquetería.
-Slackware: se hace principalmente con archivos .tar.
-Gentoo: ebuilds es su herramienta de paquetería.
-Puppy LINUX: Pet es su herramienta de paquetería.
-Red Hat:
a) Fedora: en Fedora 18 se introdujo DNF (Dandified Yum), y fue propuesto para reemplazar a yum en Fedora 22.
b) Centos: ahora se llama Rocky LINUX.
c) Mandriva -> Mangeia.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

En qué formato se distribuyen los paquetes en la distribución Linux Slackware?

A

Slackware utiliza paquetes en formato .tgz y .txz, que son archivos tar comprimidos con una estructura interna específica para su sistema de gestión de paquetes.

OTRAS Distros de LINUX:
1. AlmaLinux
Sustituto comunitario de CentOS; compatible con RHEL y muy usado en servidores.

  1. openSUSE Leap
    Es la versión comunitaria y gratuita, mantenida por la comunidad y SUSE (versión empresarial (SLE).
  2. Fedora
    Patrocinada por Red Hat; muy actualizada y orientada a tecnología moderna.
  3. Arch Linux
    Minimalista y rolling release; control total para usuarios avanzados.
  4. Kali Linux
    Distro especializada en seguridad, auditorías y pentesting (Práctica de probar la seguridad de un sistema simulando ataques).
  5. Parrot OS
    Distro orientada a seguridad, desarrollo y privacidad; alternativa a Kali.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

¿Qué es el KERNEL?

A

El Kernel (o núcleo) es el corazón y la parte central de un sistema operativo, actuando como el puente fundamental entre el hardware (CPU, memoria, discos) y el software (aplicaciones), gestionando recursos, procesos y la comunicación para que todo funcione de manera coordinada y segura.

Es decir, el Kernel es un software, ubicado en el disco duro, que se carga en la RAM cuando arrancamos el SO Linux, y hace de puente entre el HW y el resto de funciones del SO.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

¿Cuáles son las funciones del KERNEL de Linux?

A

-Gestión de ALMACENAMIENTO: controla cuanta memoria se utiliza y donde.
-Gestión de PROCESOS: determina que procesos puede utilizar la CPU, cuando y durante cuanto tiempo.
-Controlador de DISPOSITIVOS: comunica el HW con los procesos.
-LLAMADAS al sistema y SEGURIDAD: recibe peticiones de servicios de los procesos.

NOTA: es decir, el.kernel de Linux es:

  • Monolítico modular: casi todas las funciones del sistema están dentro del kernel.
  • Puede ampliarse con LKM sin reiniciar.
  • LKM: módulos .ko que se cargan dinámicamente para extender el kernel sin reiniciar.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

¿Cuáles son los 3 niveles de abstracción del SO?

A

USUARIO - KERNEL - HARDWARE

En la capa USUARIO se ejecutan las aplicaciones.
En la capa HW se sitúa aquello referente a 0s y 1s.
Y el kernel, entre otras cosas, hace de puente entre las otras dos capas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Expón algunas funciones del gestor de paquetería de Debian “APT”:

A

*apt update: actualiza el catálogo de paquetes, cuyas URLs estan en “sources.list”.
*apt search mc: busca la utilidad “Mindnight Commander”
-apt install: para instalar. antes => apt-get install

->APT trabaja con los repositorios de internet =» ONLINE

Dpkg -i … => OFFLINE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

¿Cuál es la utilidad de Debian para descargar paquetería OFFLINE?

A

Si ya tienes el paquete .deb descargado, puedes instalarlo OFFLINE con:

dpkg -i paquete.deb

Nota: dpkg instala el paquete, pero no resuelve dependencias (no instala los paquetes que ese programa necesita para funcionar, solo el archivo .deb).
Para instalaciones completamente offline suele usarse apt-offline o descargar previamente todas las dependencias desde otro equipo.

ACLARACION:
- dpkg → instala un .deb sin más; si faltan dependencias, te lo dice y punto.
- apt → puede instalar offline solo si ya tienes todas las dependencias; si no, necesita Internet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

¿Cuál es la utilidad de Red Hat para descargar paquetería OFFLINE?

A

Pues si tuviera el fichero del paquete en cuestión descargado .rpm, se puede instalar de manera OFFLINE con la utilidad: rpm -Uvh fichero.rpm

NOTA: online: YUM -> DNF

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

¿Con qué dos comandos podemos dar permisos de lectura a un usuario sobre un archivo?

A
  1. chmod (con limitaciones, porque ese usuario tendría que ser el OWNER o pertenecer al GRUPO OWNER u OTHERS=> ugo)
  2. para otros usuarios específicos con las Listas de Control de Acceso (ACL’s), permitiendo una granularidad más allá de los permisos UGO (Usuario, Grupo, Otros) básicos de chmod. Son ideales cuando necesitas dar acceso a un usuario específico o un grupo extra sin cambiar la propiedad del archivo o la configuración UGO principal, usando comandos como setfacl y getfacl:

setfacl -m u:usuario:r fichero => conceder permiso.
setfacl -x u:usuario:r fichero => borrar ACL.
setfacl -m u:Manuel:rw => da permiso de lectura y escritura a Manuel y MANUEL SERÁ CONSIDERADO COMO OTHERS (sus permisos se establece entre los que hemos puesto y los de la máscara de others).

NOTA: también: getfacl file => que crea una copia de los permisos.
PRIMERO: getfacl -R /home/usuarios/sistemas>/home/usuarios/copia.bak

SEGUNDO: setfacl –restore=copia.bak

IMPORTANTE: cuando en un fichero o directorio hemos configurado una acl, a la derecha del todo (al final de los permisos) aparecerá un signo “+”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Cuando vemos con la orden ls -li que dos ficheros están asociados al mismo i-nodo, ¿qué quiere decir?
Que se crearon mediante HARD-LINKS.
26
¿Cómo podemos acceder al contenido de una memoria usb dentro de nuestro linux?
Con mount
27
¿Cómo localizamos ficheros de más de 100 megas en todo el árbol de directorios?
find / -type f -size +100M
28
¿Con qué orden(es) podemos limitar los recursos que utiliza un determinado proceso?
ULIMIT y CGROUPS.
29
¿Qué es SELinux?
Un módulo del kernel que implementa/gestiona una serie de políticas de seguridad muy estrictas.
30
¿De qué manera un programa de usuario puede invocar a servicios del kernel?
Mediante system calls (int 80h, ahora **syscall**).
31
¿Para qué sirve el comando ldd?
Para poder visualizar de un programa (binario) que librerías utiliza. Ej: ldd /usr/sbin/apache2 NOTA: El comando whereis en Linux sirve para localizar rápidamente la ruta de: - El ejecutable de un programa - Sus páginas de manual (man) - Sus archivos de configuración o código fuente (si existen): NO localizan cualquier archivo, sólo de bianarios (comandos). Es una forma rápida de saber dónde está instalado un comando en tu sistema. whereis ls whereis adduser Así podrás localizar y entrar dentro del archivo. Kalicanto@W11DGCDBAPROV01:~$ whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz Kalicanto@W11DGCDBAPROV01:~$ whereis adduser adduser: /usr/sbin/adduser /usr/share/man/man8/adduser.8.gz Kalicanto@W11DGCDBAPROV01:~$ whereis cat cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz
32
Si queremos planificar una tarea solo para un instante determinado, ¿qué comando usaremos?
at
33
¿Cómo obtenemos la dirección IP que nos han asignado?
ip / ifconfig (obsoleto)
34
Si una vez arrancado el sistema quiero analizar los mensajes que aparecieron al inicio (errores de dispositivos, detección de hardware, etc.), ¿con qué comando puedo ver esos mensajes?
**dmesg** → Muestra el kernel ring buffer, donde se registran los mensajes del kernel, incluidos los generados durante el arranque (detección de hardware, drivers, errores). Es útil para diagnosticar problemas después de iniciar el sistema.
35
¿Qué contiene la variable $# dentro de un script?
El número de parámetros pasado al script por linea de comando.
36
¿Qué dos protocolos se manejan en Linux para temas de impresión?
*LDP (Line_Printer_Daemon_protocol)/LPR: 515 -> TCP. *IPP (Internet_Printing_Protocol): 613 -> HTTP.
37
¿Con qué comando podemos impedir conexiones al puerto 22 de nuestro equipo?
iptables NOTA: se encarga de filtrar los paquetes de red, es decir, es la parte que se encarga de determinar qué paquetes de datos queremos que lleguen hasta el servidor y cuáles no. Al igual que ocurre con otros sistemas de cortafuegos, iptables funciona a través de reglas.
38
Si instalamos el servidor openssh-server, ¿qué funcionalidades nos ofrece y por qué puerto?
Nos ofrece por el puerto 22 dos servicios “seguros” 1. Control Remoto (similar al telnet) 2. Transferencia de ficheros (similar al ftp)
39
Nombre dos gestores de arranque:
*LILO *GRUB - LILO: gestor de arranque antiguo, simple, pensado para Linux. Funciona con MBR/BIOS. - GRUB: más moderno y flexible, soporta varios sistemas y sistemas de archivos. Funciona tanto con MBR/BIOS como con GPT/UEFI. NOTA: BIOS (Sistema Básico de Entrada/Salida) y UEFI (Interfaz de Firmware Extensible Unificado) son programas fundamentales que se ejecutan al encender un PC para inicializar el hardware y cargar el sistema operativo
40
¿Qué es un "shell" y nombra algunos?
Te permiten programar para hacer "scripting", es decir, ficheros de script, que son ficheros con lenguaje interpretado por el SHELL. Algunos SHELLs: BASH, BSH, TCSH, CSH, KSH, ZSH, ...
41
Menciona ficheros para configuración de usuarios:
*umask (022 x defecto) *.profile *.bashrc NOTA: el "." indica archivo oculto=>ls -a
42
¿Qué utilidad tiene la creación de un "alias"?
Se crea para simplificar una sintaxis. Ej: alias ll=ls -l => ahora cuando escribamos "ll" nos hace: ls -l
43
Qué son las “variables de entorno” y cómo se mostrarían?
Son valores dinámicos que el sistema operativo mantiene en memoria y que influyen en el comportamiento de procesos, shells y aplicaciones. Pueden crearse, modificarse, heredarse y eliminarse. Para verlas, el comando más habitual es: - env — muestra las variables de entorno del proceso actual. - printenv — imprime variables individuales o todas. - set — muestra variables de entorno + variables de shell (según la shell). PROCESO: 1. Asignar valor (solo en el shell actual): TEST=valor 2. Listar valor: echo $TEST 3. Exportar para que esté disponible en procesos hijos: export TEST=valor 4. Eliminar variable: unset TEST
44
¿En que se diferencian los comandos: "whoami" e "id'?
-whoami: Muestra únicamente el nombre de usuario de la sesión actual (quién eres). -id: Proporciona información detallada, incluyendo el nombre de usuario, el ID de usuario (UID), el ID de grupo (GID) y los grupos a los que pertenece el usuario.
45
¿Que conseguiríamos con la sintaxis: exec comando?
Ejecuta el comando y te saca del SHELL (exit). No se crea un proceso hijo, sino que el shell desaparece y en su lugar queda el programa ejecutado.
46
Comando "touch":
*touch nombre_fichero*: crea un fichero vacío si no le dices nada o no existe, pero su función principal es la de modificar ciertos metadatos del "i-nodo" de un fichero: *con -a*: modifica el "atime" (fecha de acceso) *con -m*: modifica el "mtime" (fecha de modificación) *con -c*: NO crea el fichero si no existe
47
¿Qué permisos se activan en el caso de que el comando "touch" crease un fichero vacío?
Si a touch no le ponemos ningún parámetro o el fichero en cuestión no existiese, CREARÍA UN FICHERO VACÍO con los siguientes permisos por defecto: *Según la formula: Base AND not (umask=022). ------> 666 and Not 022=>permiso por defecto (NOTA: permiso base de fichero: 666 y de directorio 777) **touch** sirve principalmente para crear archivos vacíos y para actualizar las marcas de tiempo (acceso y modificación) de archivos y directorios existentes, sin alterar su contenido; si el archivo no existe, lo crea con la hora actual, y si existe, solo cambia su "fecha" a la de hoy. Es muy útil para crear marcadores de tiempo, preparar archivos para scripts o simplemente "tocar" un archivo para indicar que fue usado recientemente.
48
Comando "tree":
*tree: muestra el árbol de DIRECTORIOS-SUBDIRECTORIOS-ARCHIVOS NOTA: se instala con "apt install tree" desde el super usuario.
49
Menciona algunos comandos para trabajar con ficheros:
*ls -a: muestra los ocultos *ls -l: lista detallada *ls -r: listado recursivo, es decir, orden inverso *ls -t: ordena empezando por el + reciente *cp -u: copia si el origen esta + actualizado que el destino *rm -i: pregunta antes de borrar los directorios y ficheros. *rmdir: SÓLO borra directorios vacíos. A diferencia de rmdir, que se detiene si encuentra un solo archivo, rm -r (recursivo) entra en la carpeta, borra todo lo que hay dentro (archivos y subcarpetas) y finalmente borra la carpeta principal. **rm -rf** nombre_carpeta => La f (force) evita que el sistema te pregunte "¿está seguro?" por cada archivo protegido o si el archivo no existe, haciendo el proceso mucho más rápido.
50
Comandos "rsync" (cliente) y "rsyncd" (servidor):
Sincronización y backup remotos. Copiar y sincronizar nuestros datos de forma local y remota. *Muy útil para realizar copias de seguridad o migraciones de datos rápidas entre dos máquinas Linux. - rsync es el comando **cliente** que se usa para sincronizar y transferir archivos entre directorios locales o remotos. - rsyncd es el demonio/**servidor** que escucha conexiones y permite que otros clientes rsync se conecten para realizar sincronizaciones. Conclusión - Usas rsync cuando quieres sincronizar archivos directamente, ya sea local o remoto. - Usas rsyncd cuando quieres montar un servidor de sincronización dedicado, al que varios clientes puedan conectarse sin necesidad de SSH.
51
Comando "tar":
1.El comando TAR crea un archivo comprimido que sirve para empaquetar varios archivos en un único archivo, reduciendo el tamaño de los archivos comprimidos. 2.TAR puede archivar y recuperar archivos a partir de un solo archivo llamado “tarfile”. 3.También puede ser usado para transferir un gran número de archivos o carpetas entre diferentes servidores, hacer copia de seguridad de datos, sitios webs, entre otros, así como cargar y descargar carpetas utilizando menos espacio del dispositivo. EJEMPLOS: z=>gzip / t=muestra el contenido tar cvfz /tmp/logs.tgz ./log => crear un archivo tar xvfz logs.tgz => para extraer el fichero tar tzvf logs.tgz => mostrar el contenido del archivo, sin que este tenga que ser comprimido. NOTA: el comandp “cpio” sirve para copiar una lista de archivos en un solo archivo de salida más grande, aunque se usa más “tar”. Reglar de ORO en la sintaxis de tar: tar [opciones] archivo_destino.tar.gz archivos_a_incluir
52
Comando "dd":
Copia entre dispositivos => le das un fichero de entrada (que puede representar a un dispositivo) y uno de salida en el que vuelca el contenido. *dd if=/dev/zero of=empty.img bs=1024 count=720 => genera un fichero de 720 kb a "os" para pruebas *dd if=/dev/cdrom of=/media/imagenCD.iso => vuelca el contenido del CD en el fichero .iso del disco duro. *dd if=/dev/hda of=/media/mbr bs=512 count=1 => guarda los primeros 512 bytes (primer sector) del disco primario en el fichero "mbr": ES UNA ESPECIE DE BACKUP NOTA: mbr (Master Boot Record=registro maestro de arranque) o tabla de particiones. Este registro ocupa los primeros 512 bytes del primer disco dura y es lo primero que carga la BIOS para un programa capaz de iniciar el sistema. MBR (Registro de Arranque Maestro) está limitado a discos de 2 TB y 4 particiones primarias (o 3 primarias + 1 extendida), mientras que GPT (Tabla de Particiones GUID) soporta discos de hasta 18 exabytes y 128 particiones, siendo esencial para unidades mayores a 2 TB y sistemas modernos UEFI.
53
¿Qué efecto tiene el permiso "ejecutar" (x) en directorios y ficheros?
*Ficheros: permiso para ejecutar. *Directorios: si NO tiene activo el permiso de ejecución No puedes entrar en él.
54
Comandos "mkdir" y "rmdir" de directorios:
*mkdir con el parámetro -p: crea todos los subdirectorios necesarios: mkdir -p /dir1/dir2/... *rmdir con el parámetro -p: borra recursivamente una estructura de directorios vacíos: rmdir -p temporal/dir1/dirA => rmdir: fallo al borrar el directorio 'temporal': El directorio no está vacío NOTA: dió error porque temporal NO esta vacío y sólo borra vacíos
55
¿Qué significa el primer parámetro que precede a los permisos de un fichero?
archivo ordinario => - d directorio l link simbólico p named pipe o FIFO (una tubería con nombre es un archivo especial similar a una tubería pero con un nombre en el sistema de archivos. El nombre funciona solo como un punto de referencia para los **p**rocesos que necesitan usar un nombre en el sistema de archivos) s socket (son canales de comunicación que permiten que procesos no relacionados intercambien datos localmente y entre redes. Un único socket es un punto final de un canal de comunicación bidireccional) b (representa a un dispositivo de BLOQUE /dev) c (representa a un dispositivo de CARACTER /dev)
56
¿Cómo se identifican los bits para permisos de ejecución: Set UID, Set GID y Sticky bit?
*Set UID: aparecería una "s" (Mayus. o minus.) en la "x" (ejecutable) de la parte de USER => cuando esta activo, el usuario normal ejecutará el archivo como si fuera el propietario y se usan los permisos del user owner. chmod u+s directorio *Set GID: igual, pero en la parte de GROUP => = que el anterior, pero con los permisos del propietario del grupo. chmod g+s directorio *Sticky bit: aparecería, también en la "x" una "t" (Mayus. o Minus.), pero en OTHERS => sólo el root u owner podrán borrarlo o renombrarlo. chmod +t directorio
57
Explica el funcionamiento de los "bits para permisos de ejecución":
*S (mayúscula): indica que NO hay una "x" dertás, es decir, no tendría permisos de ejecución. *s (minúscula): SI habría una "x" detrás, por lo cuál, si tiene permisos de ejecución. PESOS: set uid: 4 set gid: 2 sticky bit: 1 *chmod 6777 fichero => activa set uid y set giu (4+2=6) *chmod 2777 fichero => sólo activas set gid
58
Comando "chmod":
Para cambiar los permisos sobre un directorio o fichero. *chmod g=rx => aplica lectura y ejecución al grupo. *chmod g+w => acumula o suma escritura a los permisos que tuviera el grupo. *chmod 755 fichero => usuario con todos los permisos, y tanto grupo como others con lectura y ejecución.
59
Diferencia entre los comandos "chown" y "chgrp":
CHOWN cambia el propietario del fichero; CHGRP cambia el grupo. Ejemplos: • chown juan:ventas fichero • chgrp ventas fichero **Solo root puede cambiar propietario.** IMPORTANTE: con **-g** crearíamos el grupo PRINCIPAL (aunque lo normal es que se cree solo al crear el usuario con el mismo nombre que este) y **-G** se usa para crear grupos SECUNDARIOS. Ejemplo: CREAMOS GRUPO: groupadd ADMIN SABIENDO QUE PEPE SOLO TIENE SU GRUPO PRINICIPAL "PEPE": usermod -a -G ADMIN pepe -a: añadir (append) Poniendo ahora: cat /etc/group, veriamos que en el grupo ADMIN esta pepe. También lo podemos ver con **id** estando con el usuario "pepe".
60
¿Qué consiguen la combinación de los comandos "find" y "exec"?
Con "find" encontramos ficheros en el sistema, en base a los criterios que le indiquemos. Y, con "-exec", podemos añadir un comando que queramos que se ejecute sobre la búsqueda de "find". SINTAXIS: -> find LUGAR -type -name -CRITERIO -exec COMANDO <- *lugar de búsqueda: / => empieza buscando desde el directorio raiz *por tipo: -type d => tipo de directorio *en base a su nombre => -name nombre CRITERIOS DE BÚSQUEDA: *en base a sus permisos => -perm 0777 *a un usuario =>> -user UID *o en base al tamaño (size) o la fecha de acceso (atime) *Por último se añadiría el "-exec". Ejemplos: ... -exec chmod 644 => aplica esos permisos a lo buscado con "find" ... -exec deleted => borraría lo encontrado con "find" EJEMPLO CON AMBOS: find / -type d -name nombre -user Oliver -exec mkdir PRUEBA
61
Comando "mv":
Mueve y renombra, es decir, si no lo mueves lo renombras. El archivo original lo borra. Es el único sistema para renombrar, ya que RENAME no existe. *con el parámetro -i pregunta antes de sobreescribir.
62
¿Que 2 tipos de enlaces tenemos en LINUX?
1. HARD-LINK: ENLACES ENTRE i-nodos (sólo contra ficheros) todos los enlaces apuntan al mismo i-nodo => comparten TODO, si se modifica uno se modifican todos, pero si se elimina uno no se elimina todo. Al ser el enalace entre i-nodos si eliminas un enlace nose pierde el i-nodo, aunque si el campo "número de i-nodo" del i-node se pone a "0", querrá decir que se han eliminado todos los enlaces que apuntan a dicho i-nodo y, por tanto, también se eliminaría. *ln fichero_origen nombre_enlace 2. SOURCE-LINK o LINK SIMBÓLICO: ENLACES ENTRE RUTAS. Es como un acceso directo en Windows, es decir, si tengo un link sobre un fichero y este se elimina o la ruta del mismo, el enlace queda inservible (con Hard-Link NO pasa esto) *ln -s fichero *ln -d directorio
63
Peculiaridades del "i-node":
El i-node es una estructura de datos o manera de gobernar los archivos en LINUX => sistema INDEXADO, que tienen unos punteros que apuntan a bloques de datos. *En el i-node NO existe el NOMBRE del fichero => se encuentra en la "estructura de **directorios**" => cada directorio del enlace (/log, /home,...) tienen un campo (f1) que apunta al "i-node" de cuyo nombre contienen. Ej: si los diretorios /log y /home tiene el nombre del i-node: 1444 => quiere decir que ambos apuntan o son enlaces duros de dicho i-nodo. *CAMPOS DEL i-node: -Número de i-node -Size -UID y GID => con "chown" o "chgrp" puedes cambiar los propietarios -(amc) time => se modifican con "touch" -Tipo de fichero: -, d, l, b, s, ... -Permisos: rwx -Número de Hard-LinkS: número de estructuras que apuntan al i-nodo => cuando este campo llegue a "0" se elimina el i-nodo
64
Sabemos que los "HARD-LINK" sólo sirven para ficheros, pero, explica la sintaxis del :
Ej: si hago 3 enlaces Hard_Link de un fichero => cada uno contiene el contenido del original, por lo que si modificas uno afecta al resto y mientras quede uno sin eliminar tendremos la información => guardada en el campo "número de Hard-Link" en la tabla **i-node**) *ln TARGET LINK_NAME TARGET: Nombre del archivo existente al que le crearemos el enlace duro. LINK_NAME: Nombre del enlace duro. EJEMPLO: ln test.txt enlace-duro-a-test.txt Si listamos ambos archivos con el comando ls -li, observamos que ambos comparten el mismo inodo: $ ls -li 786433 -rw-r--r-- 2 mortadelo mortadelo 0 jun 21 21:27 enlace-duro-a-test.txt 786433 -rw-r--r-- 2 mortadelo mortadelo 0 jun 21 21:27 test.txt Se observa en la primera columna que ambos, archivo y enlace, comparten el mismo número de inodo (786433). La tercera columna indica cuantos enlaces duros tiene el fichero, en este caso 2, el archivo original más el enlace.
65
Diferencias entre "ENLACES SIMBÓLICOS" y "HARD-LINK":
*Los "SORCE-LINK" usan rutas, por eso si borras o mueves los destinos rompes el enlace / los "HARD-LINK" no dependen de rutas, apuntan al i-nodo, que son más estables que una simple ruta. *El "HARD-LINK" se tiene que hacer en UN MISMO FS, porque trata con i-nodos, así que sólo se usa con archivos. Lo que importa es el número de los i-nodos / NO sirve para directorios.
66
¿Para qué sirven los comandos "head" y "tail"?
Son para ver las PRIMERAS o ÚLTIMAS n lineas. Ej: tail -f fichero.log => con el parámetro -f (follow) mantiene el fichero abierto para monitorizar las lineas que se van añadiendo. tail -50f fichero.log => verás continuamente las últimas 50 líneas.
67
Comando "wc":
(Word Count=contar palabras) SINTAXIS: wc -? fichero *wc -l => cuenta lineas *wc -w => cuenta palabras *wc -m => CUENTA CARACTERES *wc -c => CUENTA BYTES Ej: wc -l fichero => muestra cuantas lineas tiene el fichero: 42
68
El comando **sed** se usa principalmente en sistemas operativos tipo Unix, es decir: - Linux (todas las distribuciones) - macOS - BSD (FreeBSD, OpenBSD, etc.) Para que se usa?
Es un editor de flujo (stream editor). Permite buscar y sustituir cadenas de texto dentro de un fichero, procesándolo línea a línea sin abrirlo en un editor. Ejemplo: sed 's/2012/2013/g' cal-2012.txt > cal-2013.txt Sustituye 2012 por 2013 en todo el archivo y guarda el resultado en cal-2013.txt.
69
Comando "tr":
Pasa de MAYÚSCULAS a MINÚSCULAS: tr ABC... abc < fichero.txt Lo que ocurre es que tr sustituye cada carácter de la primera lista por el correspondiente en la segunda lista. - La primera lista (ABC...) son los caracteres que quieres transformar. - La segunda lista (abc...) son los caracteres de reemplazo. - El operador < fichero.txt redirige el contenido del archivo como entrada estándar para tr. Es decir: - Sirve para manipular texto de forma sencilla y rápida. - Se usa mucho en combinación con tuberías (|) para procesar datos en línea. - Ejemplo clave: convertir mayúsculas a minúsculas con tr '[:upper:]' '[:lower:]' => son para un rango específico. Ejemplo, convertir a minúsculas: tr '[:upper:]' '[:lower:]' Ej: cat texto.txt | tr '[:upper:]' '[:lower:]'
70
Comando "grep":
Busca cadenas por patrones dentro de un fichero. *egrep: soporta expresiones regulares extendidas. *fgrep: NO permite expresiones regulares (la "f" es de fixed => caracteres fijos). *zgrep: busca dentro de archivos comprimidos .gz EJEMPLOS: -grep -c "palabra" fichero.txt => CUENTA cuantas veces aparece la palabra dentro del fichero. -grep -i "palabra" fichero => busca palabras sin importar si esta en MAYUS, o MINÚSCULA. -grep -w "palabra" fichero.txt => busca la palabra EXACTA.
71
¿Que función tiene la expresión: grep relevantes fichero.txt | grep -v irrelevantes?
Encontrar palabras "relevantes" y excluir palabras "irrelvantes" dentro del fichero.txt.
72
¿Que función tiene la expresión: grep 'palabra1 | palabra2' fichero.txt?
"egrep" es una expresión de "grep" y permite usar más expresiones regulares, por ejemplo podemos buscar 2 palabras en la misma búsqueda.
73
Comenta algunas "Expresiones Regulares" usadas por el comando "grep":
Las usa para concretar que queremos buscar o testear si cierta cadena esta dentro de uno u otro text/fichero. + => 1 o más ocurrencias. Ej: ab+c concuerda con abc, abbc, pero no con ac. *=> 0 o más apariciones del carácter. ? => 0 o 1 ocurrencia. Ej: ab?c concuerda con ac, abc, pero no con abbc. . => sólo un carácter. \ => suprime el significado del próximo COMANDO y se interpreta como un carácter normal. Ej: \ .com => interpreta el "." como un carácter normal. ^ => inicio de linea, que empiece por ... $ => el final de una linea de texto.
74
Comenta algunas "Expresiones Regulares" usadas por el comando "grep":
[a - z] => busca cadenas de concordancias que este en cierto rango: [a-z], [0-9], ... Ej: d[a-z] => de, da, di, ... {N} => número de ocurrencias u ocurrencias fijas. Ej: a{3} => 3 letras "a" seguidas {M,} => M o más ocurrencias. Ej: [0-9]{1,3} => de 1 a 3 dígitos entre el 0 y el 9 => 192, 100,... [^...] => cualquier carácter que NO esté en el rango. Ej: d[^afu] => busca cadenas que empiecen por "d" más cualquier caracter que NO esté en el rango: de->si / da->NO ( ) => agrupaciones. Ej: (female | male)
75
¿Qué uso tienen las comillas en grep?
-"Las comillas **dobles**" se utilizan para delimitar el texto que desee que sea interpretado como una palabra. Ej: para que grep busque todos los ficheros que contengan la frase: "Viva España" => grep "Viva España" * -'Las comillas **simples**' son para agrupar palabras independientemente o para que un carácter sea interpretado como tal y NO como comando. Ej: grep '\$' list => sólo verá las lineas que contenga el carácter $ de la línea.
76
¿Cuáles son los 3 flujos o canales de E/S de datos de LINUX cuando se ejecuta un programa?
1: de entrada: stdin => por teclado. 2: salidas: a) stdout: salida estandar (1) b) stderr: error (2) *Podemos redirigirlos para que salgan por pantalla o un fichero cada uno: >, <, >> y <<. O que salgan ambos por el mismo sitio: &> 2> salida de error / 1> salida estandar 2>> en lugar de borrar el contenido del fichero destino, se acumula. COMANDO > fichero 2>&1 => saldrían las dos salidas del comando (stdout y stderr) por el mismo fichero. NOTA: con "tee" se hace algo parecido.
77
Comando "tee":
Lee una entrada estándar (stdin) y y redirige su salida hacia la salida estándar (stdout) y a uno fichero o más ficheros => es una especie de T invertida (una entrada y dos salidas => Tee). wc -l fichero1.txt | tee fichero2.txt => muestra por salida salida estándar el número de lineas de fichero1 y lo guarda en fichero2. ls | tee -a fichero.txt => con -a NO sobrescribimos el fichero.txt con la salida de ls. ls | tee fichero1.txt fichero2.txt fichero3.txt => guardamos la salida de un comando (ls) en varios ficheros.
78
Menciona algunos sistema de ficheros (FS) o estructura de datos para gobernar los ficheros de LINUX y Windows:
*FS - TÁMAÑO MÁXIMO DE FICHERO - TAMAÑO MÁXIMO DE PARTICIÓN: *ext 2 - 2 TB/fichero - 4 TB/partición (única NO Jourline, es decir, NO es transaccional, por lo que no se pueden recuperar o deshacer operaciones) *ext 3 - 2 TB/fichero - 32 TB/partición *ext 4 - 16 TB/fichero - 1 EB/parti. *FAT (MS-DOS y Windows), VFAT, FAT16, FAT32, ...
79
Menciona algunos sistema de ficheros (FS) o estructura de datos para gobernar los ficheros de otras distros y dispositivos extraibles:
*reiserFS => Suse (distro Alemana de LINUX) *xfs => Red Hat 7 *iso9660 => CD *udf => DVD
80
Menciona algunos sistema de ficheros (FS) o estructura de datos para gobernar los ficheros en RED:
*LINUX: nfs => network files system (sistema de dicheros en RED a diferencia de XFS). *WINDOWS: cifs => common internet file system (Desarrollado por Microsoft®, CIFS es una variación pública o abierta del protocolo SMB). *En sistemas mixtos, se suele usar Samba para que Linux pueda hablar “CIFS/SMB” con Windows. NOTA: - XFS = almacenamiento local, rápido y robusto. - NFS = almacenamiento compartido en red, flexible y colaborativo. - No compiten, sino que se complementan: Red Hat recomienda usar XFS como base local y NFS para compartirlo entre nodos.
81
¿Qué es btrfs (B-tree FS)?
Sistema de ficheros COPY-ON-WRITE (COW) anunciado por Oracle para GNU/LINUX. Su objetivo es sustituir al actual FS ext4. Eliminando muchas de sus limitaciones y adoptando nuevas tecnologías. *Centrado en la tolerancia a fallos, reparación y fácil administración. NOTA: Un sistema de ficheros Copy‑On‑Write (COW) es una forma moderna de gestionar datos en disco donde **nunca se sobrescribe directamente la información existente**. En lugar de modificar un bloque ya escrito, el sistema crea una copia nueva del bloque, aplica los cambios allí y luego actualiza las referencias. Esto aporta integridad, seguridad ante fallos y permite funciones avanzadas como snapshots casi instantáneos. Un snapshot es una copia del estado completo de un sistema de ficheros en un instante exacto, útil para volver atrás si algo falla. Se usa mucho en Linux (LVM, Btrfs, ZFS) para copias de seguridad rápidas y restauraciones seguras.
82
¿Para qué sirve el comando MOUNT?
1. Monta las nuevas unidades o directorios para que formen parte del mismo árbol de directorios. mount -t ext3 origen destino => el destino es un directorio del árbol y origen: /dev/cdrom, /dev/floopy, ... El parámetro **-t** en el comando mount sirve para indicar explícitamente el **t**ipo de sistema de archivos que se va a montar. *Si quieres que el montaje sea permanente habría que destinarlo a /etc/mtab o /etc/fstab. 2. O acceder al contenido de un dispositivo (USB, CD, ...): mount /dev/USB destino NOTA: si quieres que sean permanentes habría que registrar los montajes en fstab/mtab.
83
¿En qué se diferencian los ficheros: mtab y fstab?
*/etc/mtab: registra los montajes actuales. Por ejemplo para registrar el montaje de un USB que acabamos de introducir, un cd, dvd, ... se mountaria con: mount /etc/USB destino y ya aparecería el USB en el fichero mtab. */etc/fstab: registra los montajes permanentes o iniciales. Habrá una línea con cada montaje que queramos que se monte cuando arranque LINUX, ya sea una partición o un dispositivo. Es decir, si montas un USB y aparece en /etc/mtab, sí estará montado en ese momento, pero no se mantendrá tras reiniciar. - Al reiniciar, el sistema limpia los montajes y /etc/mtab se vuelve a generar con lo que se monte en el arranque. Para que un dispositivo se monte automáticamente al arrancar: - Edita el archivo /etc/fstab (ese sí es el de configuración permanente). - Añade una línea con el dispositivo y el punto de montaje, por ejemplo: /dev/sdb1 /media/usb vfat defaults 0 0
84
¿Qué es resolv.conf?
Es donde estan nuestros servidores DNS para resolver nuestras peticiones: *cat resolv.conf domain localdomain search localdomain nameserver 192.168.160.2
85
¿Que contiene el fichero /etc/hosts?
Es un fichero de texto plano que puede ser abierto con cualquier editor de texto para ser modificado. Contiene una línea para cada dominio que este asociado a una dirección IP. *cat hosts 127.0.0.1 localhost 127.0.1.1 TAINUX NOTA: solo el superusuario (root) o un usuario con privilegios sudo puede modificarlo, aunque cualquier usuario puede leerlo para ver las asignaciones IP-nombre, ya que sus permisos por defecto son de lectura para todos.
86
¿Qué utilidad tienen los comandos: fdisk y mkfs?
*fdisk: para administrar, particionar o añadir particiones a un disco. fdisk -l => ver todas las particiones fdisk -l /dev/sdb => ver un disco especifico fdisk -n /dev/sdb => crear una partición nueva fdisk -v => analiza la tabla de particiones *mkfs: Después de crear la partición, no podemos olvidar darle formato, ya que por defecto no es aplicado. mkfs.ext4 /dev/sdb5 => se da formato ext4 a la particion mkfs.ext4 -F /dev/sdb5 => con -F se fuerza el formateo
87
Comando fsck de LINUX:
(File System Check) Comprueba y repara interactivamente los sistemas de archivos incoherentes. Es recomendable desmontar primero la partición antes de usar fsck. *ScanDisk* es su equivalente en Windows. Aunque, con la llegada de Windows NT/2000/XP, Scandisk fue sustituido por **chkdsk**.
88
¿Qué es Virtual File System?
VFS Layer => es una capa de poliformismo para que todo parezca un mismo sistema. Usa tablas con punteros a funciones para que cuando los procesos quieran utilizar los ficheros NO se percaten de si estan en un dispositivo diferente => POLIFORMISMO. Cada función esta implementada para cada sistema de archivos (fat, EXT4, ISO9660, ...) Así se relaciona automáticamente cada función con su FS.
89
¿Cómo puedo acceder a una carpeta de Windows desde LINUX?
Habría que hacer un montaje del volumen "cifs": 1. INSTALAR EL PAQUETE DE CIFS: sudo apt install cifs-utils 2. CREAR EL DIRECTORIO COMPARTIDO Y MOUNTARLO: sudo mkdir /mnt/win_share sudo mount -t cifs -o nombre_usuario= //win_share_IP/ => ruta del usuario compartido
90
Cita protocolos usados para conectarnos a recursos compartidos y transferir archivos en red:
- SMB (Server Message Block) Protocolo de red para compartir archivos e impresoras en sistemas Windows. - CIFS (Common Internet File System) Versión moderna de SMB, multiplataforma (Windows, Linux, macOS). Funciona en la capa de aplicación. - Samba Implementación libre de SMB/CIFS para Linux. Permite que un sistema Linux comparta archivos e impresoras con Windows, macOS y otros Linux. En resumen: SMB, CIFS y Samba permiten acceder y compartir archivos en red. Se recomienda usar las versiones más modernas por seguridad
91
¿Qué es CIFS?
Es prácticamente el cambio de nombre de SMB, pero con algunos añadidos: -Mayor tamaño de archivo -Soporta enlaces simbólicos y duros. -ES MULTIPLATAFORMAS: Windows, LINUX y MAC, a difernecia de smb, que sólo es para Windows. FUNCIONA DE FORMA UNIVERSAL => Windows suele usar NTfS y macOS hfs, pues CIFS permite que esos archivos puedan ser reconocidos por ambos => pudiendo compartir archivos e impresoras entre diferentes plataformas.
92
¿Qué tipo de librerías son las que terminan en .so (Shared Object)?
Tanto las **.so** (UNIX) como las **.dll** (Windows), son librerías **compartidas** *(entre aplicaciones)* y **dinámicas** *(se cargan automáticamente en memoria en tiempo de ejecución, quedando disponibles en todo momento)*. NOTA: con "ldd" podemos ver las librerías compartidas (shared) de las que depende un determinado programa: *ldd apache2*
93
Cita algunos comandos internos del SHELL, que NO generen procesos:
cd, pwd, exec, kill, umask, set, alias, echo, history, ... => se ejecutan en el ámbito del SHELL x lo cual NO generan procesos.
94
Cita algunos comandos relacionados con los procesos:
**ps**: muestra los procesos con la memoria que ocupan, los usuarios que lo están utilizando, ... *ps -forest* => Muestra el listado procesos en un formato tipo árbol que permite ver como los procesos interactúan entre si, similar al comando pstree. NOTA: podemos ver los procesos padres e hijos creados con FORK. *ps -aux* => muestran todos los procesos para todos los usuarios (a= all, u=user, x=cualquiera). *ps -e* => Listar información sobre todos los procesos en ejecución. **top**: MUESTRA dinámicamente la información de los procesos. **htop**: ADMINISTRA interactivamente los procesos del sistema **nice** (renice: para los procesos ya lanzados): el kernel da una prioridad por defecto a cada proceso, "nice" es un número que le podemos sumar o restar a dicha prioridad y así establecemos la prioridad de los procesos manualmente (PR=20-ni). Cuanto más bajo es el número es mejor la prioridad. Por defecto el valor de nice es **0**. Sólo el **root** puede usar valores negativos. nice -n valor-de-nice NOTA: valor de nice toma valores entre -20 y +19. **COMANDO &** => para ejecutar un comando en segundo plano (background), es decir, cuando tengamos que ejecutar un proceso pero no queramos estar viendo todos sus procesos, pondríamos **&** al final y se ejecutaría en segunda plano, aunque podríamos ver como va con ps o top, x ejemplo.
95
Explica las funcionalidades del comando "kill":
Se usa para enviar señales a los procesos: *kill -l* => lista todas las señales de "kill". *kill -9 PID* => esta señal se llama SIGKILL y finaliza el proceso de manera inmediata. *kill PID1 PID2 PID3* => esta señal se llama TERM y finaliza varios procesos. *killall -9 httpd* => fuerza que todos los procesos de httpd terminen. *kill -19 ó kill -STOP PID* => señal STOP (19): SIGSTOP. Ambas para suspender un proceso. *kill -18 PID* => señal CONT (18): SIGCONT. Para reactivar un proceso.
96
¿Qué utilidad tiene la señal HUP(1): SIGHUP del comando "kill"?
Esta señal **para** y **reinicia** un proceso, que también se puede hacer con el nombre del proceso además de con el PID. *kill -HUP PID ó kill -HUP script.sh* *killall -HUP httpf* => reinicia todos los procesos de httpd. NOTA: a diferencia de HUP, con **NOHUP** el proceso en segundo plano (background) sobreviviría a un logout (salida del terminal).
97
¿Cuál es la llamada con la que un proceso crea a otro?
fork =>con esta llamada un proceso padre crearía a un proceso hijo.
98
¿Cuáles son los 2 sistemas para planificar procesos?
1. at => sólo sirve para una vez, un momento concreto. 2. a) cron => para hacer una planificación más a largo plazo o más reiterativa. Este demonio lee el fichero /etc/crontab donde planificamos nuestro proceso con "crontab -e (que nos abre un editor de procesos). O el fichero /etc/cron.daily, para procesos diarios. b) anacron: para ejecutar comandos periódicamente con una frecuencia especificada en días. Su principal ventaja sobre "cron" es que se puede utilizar en un máquina que no se ejecuta de forma continua. *DEMONIO: (daemon) son los procesos que se estan ejecutando constatemente.
99
¿Qué son MBR y GPT?
MBR (Master Boot Recordes) es la tabla de particiones tradicional que soporta los sistemas operativos más antiguos (BIOS), mientras que GPT (Tabla de Particiones Global) es un nuevo sustituto que no tiene límites en cuanto al tamaño del disco y el número de particiones que se pueden crear (UEFI).
100
Explica a groso modo el proceso de arranque:
Hay 2 sistemas: BIOS (antiguo) y UEFI (nuevo), que acceden al primer sector del disco duro principal (Boot Sector) donde están, tanto las tablas de particiones (BIOS->MBR y UEFI->GPT), cómo los gestores de arranque (BIOS->LILO y UEFI->GRUB), que son los que arrancan la partición adecuada de dichas tablas y ya empiezan a ejecutarse los procesos, empezando por "init" (PID1). En resumen: BIOS->MBR+LILO UEFI->GPT+GRUB *Aunque Grub tb puede usarse con el sistema antiguo.
101
Una vez arrancada la partición del Boot Sector, ¿qué procesos se ejecutarían?
1º init (por eso tiene el PID1), que lee un fichero llamado /etc/inittab, en el que hay una línea con un número (runlevel): id:2:initdefault 2º Busca que directorio coincide con dicho número o runlevel. Que coincide con: /etc/rc2.d y dentro estan los SCRIPT que queremos que arranquen con la máquina: S10 MySQL S20 Apache S30 JBoss S: iniciar El número: indica la prioridad k: para parar de forma ordenada NOTA: según el número de "runlevel", LINUX se inicia de una manera u otra (multi-usuario, monousuario, ... x ejemplo: init6 es para reiniciar)
102
Según el número de "runlevel", LINUX inicia de una manera, ¿Qué "runlevels" conoces?
init1 => monousuario init2 => apagar y desconectar sistema init3 => multi-usuario con red init5 => multi-usuario con red y GUI. init6 => reiniciar equipo. NOTA: con "chkconfig -l" podemos listar todos los servicios indicando sus runlevels.
103
¿Cuáles son los comandos para gobernar los servicios ejecutados del directorio "rc"?
Hay 2 sistemas: 1. SysVinit o System V (obsoleto) con el comando "service": **service** nombre_servicio START/STOP/RELOAD 2. Systemd (actual) con el comando "systemctl": **systemctl** START/STOP/RELOAD nombre_servicio *Con systemd los runlevels se llaman "TARGET". *Ambos llevan a la inversa el nombre del servicio y la función (START/RESTART/STATUS/...)
104
Con qué comandos podemos listar todos los servicios indicando sus runlevels (System V) o sus targets (systemd)?
System V (SysVinit): **chkconfig --list** Systemd: **systemctl list-unit-files --type=service** NOTA: - Runlevel (System V): Es el estado de arranque del sistema, definido por un número (0–6). Cada runlevel activa o desactiva ciertos servicios. Ejemplos: - 3 → modo multiusuario sin entorno gráfico - 5 → modo gráfico - 6 → reinicio -Target (systemd): Es la versión moderna de los runlevels. En lugar de números, usa nombres más descriptivos (como multi-user.target o graphical.target). Cumplen la misma función: indicar qué servicios deben estar activos según el estado del sistema.
105
¿Cómo habilitar/deshabilitar un servicio al inicio del sistema?
*Con "SysVinit" (obsoleto): chkconfig nombre_servicio ON/OFF *Con "Systemd" (actual): systemctl Enable/Disable nombre_servicio NOTA: SysVinit usa "chkconfig" en lugar de "service" en este caso.
106
¿Qué podemos configurar en el fichero /etc/resolv.conf?
Para configurar cual es tú servidor DNS, al que le haremos la petición de resolución de DNS con el comando "nslookup" y localizar la IP del dominio en cuestión. Ejemplo para descubrir el correo del Inap: nslookup -type=mx inap.es Kalicanto@W11DGCDBAPROV01:~$ nslookup -type=mx inap.es Server: 10.255.255.254 Address: 10.255.255.254#53 Non-authoritative answer: inap.es mail exchanger = 10 mail2.correo.gob.es. inap.es mail exchanger = 10 mail1.correo.gob.es. Authoritative answers can be found from ->Son las 2 maquinas (servidores) de correos de Inap que reciben nuestros correos. ó **dig** MX inap.es ó **host** -t mx inap.es ó **drill** MX inap.es NOTA: - drill es más moderno porque es más nuevo, más limpio y diseñado para DNS actual. - dig es el más usado porque está en todas partes, es un estándar histórico y tiene una comunidad enorme. IMPORTANTE: los servidores de nombres que aparecen en /etc/**resolv.conf** son los que nos hacen esas resoluciones que acabamos de hacer, es nuestro "resolver".
107
¿En qué fichero están configuradas las tarjetas o interfaces de red?
/etc/network/interfaces iface eth0 inet dhcp *iface = interfaz *eth0 = nombre dela 1ª tarjeta de red *inet = al levantar la pila de protocolos TCP/IP *dhcp = para que coja IP de un servidor DHCP externo.
108
Enumera algunos protocolos referentes al *routing*:
Protocolos de enrutamiento (routing): - **RIP** (Routing Information Protocol) → **Distancia vectorial**, sencillo, métrica por saltos. 520 - **OSPF** (Open Shortest Path First) → **Estado de enlace**, rápido, muy usado en redes medianas/grandes. 89 - **EIGRP** (Enhanced Interior Gateway Routing Protocol) → Propietario de Cisco, híbrido, eficiente. 88 - **BGP** (Border Gateway Protocol) → Protocolo de enrutamiento entre sistemas autónomos; base de Internet. 179 - **IS-IS** (Intermediate System to Intermediate System) → Estado de enlace, usado en grandes operadores. NO USA PUERTOS NOTA: herramientas de diagnóstico: - route → Muestra o modifica la tabla de enrutamiento local. - traceroute / tracert → Muestra la ruta que siguen los paquetes. - netstat / ss → Información sobre puertos, conexiones y sockets.
109
¿Qué diferencia hay entre "batch" y "script"?
Son archivos de procesamiento en los que programamos una serie de tareas para que se ejecuten de manera repetitiva. Batch (lote) es de Windows y los "scripts"son de LINUX. NOTA: los script comienzan por: #!/bin/sh y el lenguaje con el que programamos dichos ficheros.sh (shell) se llama: "scripting", y se ejecuta poniendo delante "./".
110
¿Qué utilidad tiene la estructura de control "if" en la programación SHELL o lenguaje de scripting?
La estructura de control **if** en Shell scripting sirve para tomar decisiones dentro de un script, evaluando condiciones y ejecutando comandos diferentes según el resultado (verdadero o falso). Es la base de la programación condicional en Bash y otros intérpretes de Linux. Ejemplo práctico `bash !/bin/bash if [ -f "/etc/passwd" ]; then echo "El archivo existe" else echo "El archivo no existe" fi ` - Aquí el script comprueba si existe el archivo /etc/passwd y muestra un mensaje según el resultado.
111
¿Qué diferencia hay entre [ ] y "test" en programación SHELL o lenguaje de scripting?
NINGUNA: Es lo mismo usar uno que otro. En Shell scripting (Bash), tanto **[ ]** como el comando **test** se usan para evaluar expresiones lógicas (condiciones) dentro de scripts. if [-s /temp/temp1] es igual a: if test -s /temp/temp1 NOTA: esta expresión esta evaluando que el fichero (temp1) tengo un tamaño mayor que "0", por el parámetro -s (indica: size>0).
112
Expón algunas variables predefinidas que más suelen aparecer dentro de los "script":
$0 => es el NOMBRE del comando $1 => numeración de parámetros: $2, $3, $4, ... Pero si quieres recoger TODOS los parámetros pasados por línea de comandos: $* ó $@ $# => para saber el número de parámetros TOTALES $$ => es el ID del proceso (contiene el PID que nos asigna el SO para ejecutar el "script")
113
Cuál es la diferencia entre un Entorno de Escritorio (DE) y un Gestor de Ventanas (WM)?
-Entorno de Escritorio (DE): Es un paquete completo de programas que incluye todo lo que ves: iconos, paneles, menús, explorador de archivos y configuración del sistema. Ejemplos: GNOME, KDE Plasma, XFCE. -Gestor de Ventanas (WM): Es una pieza específica dentro del escritorio que se encarga exclusivamente de cómo se ven, se mueven y se redimensionan las ventanas. Ejemplos: Mutter, KWin, Xfwm. Nota clave: No confundas el Gestor (quien mueve la ventana) con la Librería (el código con el que se dibujan los botones, como GTK o Qt). Entorno de Escritorio - Gestor de Ventanas - Librería (Toolkit) GNOME - Mutter - GTK KDE Plasma - KWin - Qt XFCE - Xfwm - GTK
114
¿Cuál es la diferencia entre los comandos "date" y "time"?
DATE => fecha y hora. TIME => da tiempos de ejecución, NO muestra ni fecha ni hora.
115
¿Para qué son los comandos de configuración: locale e iconv?
LOCALE => configuración de idioma, teclado, ... locale Lang="es_ES UTF-8" ICONV => convierte texto de una codificación a otra. iconv -f iso-8859-1 -t UTF-8 fichero.txt > fichero_utf8.txt
116
Qué dos protocolos de impresión usa CUPS (Common Unix Printing System) y sobre qué protocolo funcionan?
CUPS utiliza dos protocolos de impresión: 1. LPD (Line Printer Daemon) Protocolo de impresión que funciona sobre TCP (capa de Transporte), puerto 515. 2. IPP (Internet Printing Protocol) Protocolo de impresión que funciona sobre HTTP (capa de Aplicación), puerto 631. HTTP, a su vez, usa TCP por debajo. Comandos útiles: - lpr → enviar trabajos a imprimir - lpq → ver la cola de impresión
117
¿Qué 3 ficheros almacenan la información relativa a las cuentas de usuario?
/etc/passwd => Información de configuración sobre las cuentas de usuario del sistema. /etc/shadow => Contraseñas de las cuentas de usuario /etc/group => Información sobre los grupos del sistema. NOTA: Las contraseñas cifradas no se almacenan en el archivo /etc/passwd. Se almacena en el archivo /etc/shadow al que SÓLO puede acceder el "root". IMPORTANTE: con **-g** crearíamos el grupo PRINCIPAL (aunque lo normal es que se cree solo al crear el usuario con el mismo nombre que este) y **-G** se usa para crear grupos SECUNDARIOS. Ejemplo: CREAMOS GRUPO: groupadd ADMIN SABIENDO QUE PEPE SOLO TIENE SU GRUPO PRINICIPAL "PEPE": usermod -a -G ADMIN pepe -a: añadir (append) Poniendo ahora: cat /etc/group, veriamos que en el grupo ADMIN esta pepe. También lo podemos ver con **id** estando con el usuario "pepe".
118
¿Qué contiene el ficher /etc/passwd?
1. Nombre de usuario→ Este se utiliza cuando el usuario inicia sesión (entre 1 y 32 ) 2. Contraseña→ El carácter “x” nos va a indicar que la contraseña cifrada está en /etc/shadow. ! => indica que la cuenta esta bloqueada !! => indica que la cuenta NO tiene clave 3. ID de usuario (UID)→ A cada usuario se le asigna un ID de usuario (UID) unívoco en el sistema. - UID 0 → reservado para el superusuario root. - UID 1–99 → cuentas predefinidas para servicios del sistema (ejemplo: daemon, bin, sys). - UID 100–999 → cuentas de sistema creadas por paquetes o servicios (ejemplo: www-data, mail). - UID 1000 en adelante → asignados automáticamente a usuarios normales cuando se crean con adduser o useradd. 4. ID de grupo (GID)→ Este es el ID del grupo principal al que pertenece el usuario (almacenado en el archivo /etc/group). - GID 0 → grupo root. - GID 1–99 → grupos reservados para servicios del sistema. - GID 100–999 → grupos de sistema asociados a cuentas de servicio. - GID 1000 en adelante → grupos de usuarios normales. 5. Información del de usuario (GECOS)→ Aquí encontraremos el campo de comentario. En este se permite añadir información adicional sobre los usuarios (nombre completo, teléfono, …) 6. Directorio de inicio→ Aquí nos encontraremos con la ruta absoluta al directorio “home” del usuario. Si este directorio no existe, el directorio de usuarios se convierte en /. 7. Shell→ Esta es la ruta absoluta del shell (/bin/bash). Si el shell se establece en /sbin/nologin y el usuario intenta iniciar sesión en el sistema directamente, el shell /sbin/nologin va a cerrar la conexión.
119
¿Cómo podemos ver las contraseñas cifradas del fichero /etc/shadow?
Es un fichero al que solo puede acceder el usuario root: sudo cat /etc/shadow pepito:$1$GeYcB$uo.yrKAWYXffHcQqkn.a1.:14715:0:99999:7:: pepita:$1$b9lwK1t0$7CguRqM2yin72JKKRC/n70:14715:0:99999:7:: NOTA: La contraseña debe tener un mínimo de 8 a 12 caracteres, incluidos caracteres especiales, dígitos, minúsculas alfabéticas y más. Por lo general, el formato de la contraseña se establece en $id$salt$hashed (es el algoritmo utilizado en GNU/Linux)
120
¿Qué almacena el fichero /etc/group?
Se trata del fichero donde se guarda información de los grupos a los que pertenecen los usuarios del sistema. Los campos son los siguientes: *Nombre grupo => identifica al grupo. *Contraseña => No se suele utilizar. *GID => Identificador numérico del grupo *Lista de miembros => Nombres de usuarios separados por coma que pertenecen al grupo. IMPORTANTE: con **-g** crearíamos el grupo PRINCIPAL (aunque lo normal es que se cree solo al crear el usuario con el mismo nombre que este) y **-G** se usa para crear grupos SECUNDARIOS. Ejemplo: CREAMOS GRUPO: groupadd ADMIN SABIENDO QUE PEPE SOLO TIENE SU GRUPO PRINICIPAL "PEPE": usermod -a -G ADMIN pepe -a: añadir (append) Poniendo ahora: cat /etc/group, veriamos que en el grupo ADMIN esta pepe. También lo podemos ver con **id** estando con el usuario "pepe".
121
¿Cuál es la diferencia entre "useradd" y "adduser"?
useradd es un comando, mientras que adduser es un script en perl que utiliza o llama al useradd y, en lugar de crearlo directamente, te va haciendo preguntas sobre el usuario a crear. NOTA: La mayor ventaja del comando adduser es que crea el directorio home (/home/usuario/) del usuario de manera automática, cosa que no hace useradd (hay que usar la opción -m).
122
¿Qué CORTAFUEGOS usa LINUX?
Linux puede usar varios cortafuegos. Históricamente usaba iptables, pero el sistema moderno del kernel es **nftables**. 📌 Detalles clave: - iptables → Cortafuegos basado en reglas. - Usa netfilter. - Acciones típicas: - DROP → Bloquea el tráfico - ACCEPT → Permite el tráfico - Filtra por puertos, IP, protocolos… - nftables → Reemplazo moderno de iptables. - Más eficiente, flexible y actual. - Es el estándar en la mayoría de distribuciones recientes. - Herramientas de usuario (frontends): - ufw (Ubuntu) - firewalld (Fedora, RHEL) - Ambas suelen usar nftables por debajo.
123
¿Qué sistema de "protección contra intrusos" usa LINUX?
fail2ban => es algo + que un cortafuegos, porque cuando ve un comportamiento anormal BANEA la IP directamente => drop. Ej: de una regla para banear ips => banear una IP que en "x" minutos realice "x" peticiones.
124
¿De cuáles funciones nos beneficiamos al instalarnos "ssh" (Secure SHell)?
Es un protocolo parecido a SSL => crea un CANAL CIFRADO tanto para el control remoto (PUTTY) como para la copia remota de ficheros (WINSCP), usando el puerto 22. Esta relacionado con los siguientes SW y protocolos para la transferencia de archivos: *SOFTWARE: -WINSCP: es un SW para el intercambio de ficheros entre servidores SFTP de Windows. -PUTTY: este es multi-plataformas y sirve para acceder a otro cliente SSH remotamente. *PROTOCOLOS PARA TRANSFERIR ARCHIVOS: -SFTP (Secure File Transfer Protocol): funciona tipo TCP => hay acuse de recibo de que ha llegado el paquete y puede gestionar los archivos remotamente (eliminar, administrar, ...) -SCP (Secure Copy Protocol): NO gestiona la garantía de entrega, por lo cual es más rápido. NOTA: se recomienda usar SFTP, que es + nuevo y seguro, o el viejo conocido RSYNC, antes que SCP.
125
¿Cómo instalamos SSH?
INSTALACIÓN: **sudo apt install openssh-server openssh-client** *Si queremos saber qué la instalación ha sido correcta: *ssh usuario@ip_servidor* Por ejemplo, si mi usuario es TAINUX y la ip: 192.178.1.204, pondríamos en el terminal: ssh TAINUX@192.178.1.204 Si está iniciado mostrará: sshd us running. Si está detenido podemos iniciarlo ejecutando: *sudo /etc/init.d/ssh start*
126
¿Qué es y cómo funciona el protocolo RSYNC?
Rsync (Remote Synchronization) es una herramienta que permite sincronizar archivos y directorios entre dos ubicaciones, ya sean locales o remotas. Cómo funciona: - Utiliza un algoritmo de _transferencia diferencial_, que compara origen y destino. - Solo envía las partes del archivo que han cambiado, no el archivo completo. - Esto lo hace muy eficiente para copias de seguridad y sincronizaciones frecuentes. - Puede trabajar mediante SSH, lo que añade seguridad al proceso. **IMPORTANTE**: SÓLO MUEVE LAS PARTES DE LOS ARCHIVOS QUE SE HAN MODIFICADO. Funciona a modo CLIENTE, en cambio **rsyncd** lo instalaríamos si queremos hacer de servidor de rsync para copias, backup, sincronización, ... de ficheros.
127
Expón algunos comandos para cotillear el HARDWARE:
*lsmod: lista los módulos cargados por el kernel. *lsusb: dispositivos USB conectados al sistema. *lspci: lo que hay conectado en los puertos PCI.
128
¿Cómo se nombran los discos y particiones en LINUX?
*Los discos PATA o IDE => /dev/hda (maestro) / hdb, hdc, ... (slave) *Los discos SATA o SCSI => /dev/sda (maestro) / sdb, sdc, ... (slave) PARTICIONES: *Primarias o extendidas: del 1 al 4 => hda1, hda2, sda1, sda2, ...hda4 y sda4. *Particiones lógicas dentro de la extendida: del 5 en adelante. NOTA: "lsblk" muestra en un árbol todos los discos y particiones.
129
¿Qué es un sistema RAID y cómo se crea?
Es un sistema o técnica en la que creo un GRAN disco a partir de 2 o más discos => para replicar información, por seguridad y rendimiento. mdadm -cv /dev/md0 -10 -n2 -c128 /dev/sdb1 /deb/sdc1 =>a partir de los discos o particiones "sdb1" y "sdc1" crea el RAID md0.
130
Qué comandos existen para manipular particiones GPT y en qué se diferencian gdisk y parted/GParted?
Para gestionar particiones con tabla GPT se usan principalmente gdisk y parted: gdisk es una herramienta tipo fdisk pero específica para GPT, centrada en crear, modificar y reparar la estructura interna de la tabla GPT, mientras que parted y su versión gráfica GParted son herramientas más flexibles y de alto nivel, pensadas para crear, borrar, mover y redimensionar particiones tanto en GPT como en MBR, siendo la opción más práctica para la gestión diaria. --- 📌 Otros comandos relacionados con particiones y discos - fdisk → para gestionar particiones MBR (no GPT). - Ejemplo: fdisk /dev/sdb - Tipos MBR comunes: - 83 Linux - 82 swap - 8e LVM - fd RAID - lsblk → muestra todos los dispositivos de bloque (discos, particiones, LVM…). - hdparm /dev/sda → muestra información física del disco (parámetros, velocidad, etc.).
131
¿Cuál es el mecanismo para hacer más flexible el almacenamiento?
LVM (Logical Volumen Manager) creado para evitar las interrupciones o paradas del sistema ampliando el almacenamiento en CALIENTE (vgextend y lvextend). discos->pvcreate: PV (PE)-> vgcreate: VG-> lvcreate: LV (LE) NOTA: El comando whereis en Linux sirve para localizar rápidamente la ruta de: - El ejecutable de un programa - Sus páginas de manual (man) - Sus archivos de configuración o código fuente (si existen): NO localizan cualquier archivo, sólo de bianarrios (comandos). Es una forma rápida de saber dónde está instalado un comando en tu sistema. whereis ls whereis adduser Así podrás localizar y entrar dentro del archivo. Kalicanto@W11DGCDBAPROV01:~$ whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz Kalicanto@W11DGCDBAPROV01:~$ whereis adduser adduser: /usr/sbin/adduser /usr/share/man/man8/adduser.8.gz Kalicanto@W11DGCDBAPROV01:~$ whereis cat cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz
132
¿Cómo se amplia el almacenamiento en LVM?
*vgextend saco_vg /dev/sda4 => AÑADIR DISCO AL "VG" *lvextend -L+2G /dev/saco_vg/LVprueba => AÑADIR 2G AL LV NOTA: luego habría que ejecutar "resize2FS" si queremos ver (df o lsblk) la memoria o trabajar con ella (fdisk) ✅ Detalles importantes: - -L → especifica el tamaño absoluto del LV. - +2G → el signo + indica que quieres aumentar el tamaño actual en 2 gigabytes. - Si no pusieras el +, estarías fijando el tamaño total del LV a 2G, no sumando.
133
¿Cuáles son los 3 pasos para tener lista una partición LVM y poder trabajar con ella?
Habría que hacer lo mismo que en cualquier partición de LINUX: 1.- CREARLA: lvcreate -L 10G /dev/LVprueba saco_vg (crea una partición del VG llamada LVprueba de 10G) 2.- FORMATEARLA: mkfs.ext4 /dev/saco_vg/LVprueba 3.- MOUNTARLA: mount /dev/saco_vg/LVprueba /mnt/LVprueba (monta LVprueba sobre el directorio "mnt". ✅ Detalles importantes: - -L → especifica el tamaño absoluto del LV. - +2G → el signo + indica que quieres aumentar el tamaño actual en 2 gigabytes. - Si no pusieras el +, estarías fijando el tamaño total del LV a 2G, no sumando.
134
¿Cómo podemos definir políticas de restricción de recursos para evitar saturar el sistema?
**ulimit** → Permite establecer límites por usuario o sesión (máximo de procesos, tamaño de archivos, memoria virtual, etc.) para evitar que un usuario consuma recursos en exceso. **cgroups** → Mecanismo del kernel que agrupa procesos y les asigna límites y prioridades de recursos (CPU, RAM, I/O), garantizando un uso controlado y aislado. NOTA: Ambos mecanismos permiten prevenir la sobrecarga del sistema mediante políticas de control y gestión de recursos.
135
¿De qué trata el módulo SELinux del kernel de LINUX?
Es un módulo del kernel con unas políticas de seguridad muy avanzadas, las cuales ACTIVAMOS/DESACTIVAMOS para blindar a LINUX. NOTA: fue diseñado por la NSA (Agencia de Segurodad Nacional) de EE.UU
136
¿Qué contiene el directorio /proc?
El directorio /proc contiene una estructura virtual de ficheros que muestra información en tiempo real sobre el kernel, los procesos y el hardware. Permite consultar el estado del sistema leyendo archivos como si fueran normales, aunque se generan dinámicamente. Ejemplos: - cat /proc/cpuinfo → información de la CPU - cat /proc/meminfo → estado de la memoria - ls /proc/ → información de un proceso concreto
137
¿Para qué sirve el comando "uname"?
El comando uname proviene de la abreviatura UNIX NAME y es una herramienta para mostrar información del sistema operativo como la versión del mismo, kernel y detalles del equipo. uname -s => el nombre del kernel uname -r => muestra la versión del kernel . . . aunque con "uname -a" muestra TODA la información en conjunto, en lugar de por separado con parámetros como los anteriores comentados. NOTA: también se puede ver la info del kernel desde el directorio /proc: *cat /proc/sys/kernel/osrelease *cat /proc/sys/kernel/ostype
138
Indica alguna información del kernel que podamos ver en el directorio /proc:
*cat /proc/stat => estadísticas de memoria *cat /proc/meminfo => información de la memoria *cat /proc/filesystems => lista los tipos de FS soportados por el kernel *cat /proc/ioport => lista de los puertos registrados actualmente para la comunicación de entrada y salida de un dispositivo
139
Expón 3 maneras para trabajar con dispositivos en LINUX:
*udev => (user /dev) es una parte del kernel que se encarga de gestionar el directorio /dev y todos los dispositivos conectados al sistema (de arranque como los que se conectan a posteriori). *mknod => para crear nosotros mismos un fichero de tipo dispositivo, en lugar de dejar que se encargue "udev". Aunque ya apenas se usa, más que para interconectar procesos por medio de un pipi (|). mknod /dev/ttyS0 c 4 64 => donde "ttyS0" es el dispositivo que queremos crear, "c" de tipo caracter y el "major" y "minor number" (números que utiliza el kernel para identificar los dispositivos) NOTA: ttyS* es el puerto serie, así que ttS1, es el puerto serie 1. */sys => permite obtener información sobre el sistema y sus componentes (dispositivos y controladores) de una manera estructurada => mucho más detalladas y comprensible que en /dev. Ej: /dev/block => información relativa a los dispositivos que se manejan por bloques.
140
Explica el comando "udev":
Udev es el gestor de dispositivos de las versiones modernas del kernel de LINUX (a partir de la version 2.6 del kernel) Se encarga de gestionar el directorio /dev y todos los dispositivos conectados al sistema (de arranque como los que se conectan a posteriori). SUSTITUYE a "hotplug" y "devfs". SOLUCIONA el cambio de nombre al reiniciar y que las operaciones con dispositivos sólo se realicen en el espacio del kernel, permitiendo realizar algunas en el espacio de usuario (Ej: cambio de nombre de dispositivos)
141
¿De qué manera podemos cambiar de terminal en LINUX?
-Mediante COMANDO el comando "chvt" (change terminal): chvt 1, chvt 2, ... **sudo chvt 1** -Cambiar entre terminales de **texto** (TTY): Las **TTY** son las consolas “puras” sin entorno gráfico. Para moverte entre ellas: Ctrl + Alt + F1 Ctrl + Alt + F2 Ctrl + Alt + F3 … hasta Ctrl + Alt + F6 -Para ir al **entorno gráfico** (GUI) en la mayoría de las distribuciones (Debían, Ubuntu, Fedora, ...) el entorno gráfico suele estar en: Ctrl+alt+F1 o Ctrl+alt+F2 NOTA: en las distribuciones clásicas el GUI o entorno gráfico estaba en: Ctrl+alt+F7
142
¿Qué utilidad tienen los ficheros /dev/null y /dev/zero?
/dev/null => toda la información que se manda a este dispositivo queda descartada (no se imprime, tampoco x pantalla, ... no se usa). Útil cuando queremos lanzar un programa en background que no muestre nada en pantalla. Usos comunes: - Redirigir salida que no quieres ver: `bash comando > /dev/null ` → descarta la salida estándar. - Silenciar errores: comando 2> /dev/null /dev/zero => siempre que leamos de este dispositivo nos va a devolver 0s. Útil para borrar ficheros u otros dispositivos. Usos comunes: - Crear un archivo lleno de ceros: dd if=/dev/zero of=archivo.bin bs=1M count=10
143
¿Qué funcionalidad tienen los ficheros /dev/random y /dev/urandom?
Ambos usan el "ruido" para generar números aleatorios de buena calidad, es decir, no como los que genera el sistema que no son 100 % aleatorios, pues se generan con un sistema matemático. /dev/random => si no se recoge suficiente ruido podríamos NO obtener un valor. /dev/urandom => si el kernel no consigue generar un valor con el ruido, se generaría uno matemáticamente. NOTA: el ruido con el que se generan dichos nº aleatorios de buena calidad viene de: pulsaciones de teclas, lecturas de discos, ...
144
En una distribución Linux moderna, ¿cuál es la forma recomendada de configurar una IP estática en la interfaz eth0 (interfaz 0) de forma persistente?
Se utiliza la herramienta **NetworkManager** con el siguiente comando: **nmcli** con mod eth0 ipv4.addresses [IP/MASCARA] ipv4.method manual ¿Qué significa cada parte? -con mod eth0: "Modificar la conexión de la interfaz 0". -ipv4.addresses: "Asignar la nueva dirección IP". -ipv4.method manual: "Cambiar de IP automática (DHCP) a estática". Importante: Para aplicar el cambio, se debe reiniciar la interfaz con el comando: nmcli con up eth0
145
¿Qué comando de las utilidades *btrfs-progs* permite visualizar un resumen técnico del uso de espacio (asignado vs. usado) para datos y metadatos en un punto de montaje específico de un sistema de archivos *Btrfs*?
btrfs filesystem df **filesystem** (o su abreviatura **fi**): Especifica que vamos a actuar a nivel de todo el sistema de archivos y no sobre un subvolumen o un dispositivo individual. **df**: Es el subcomando específico que muestra el uso del espacio. : Es el argumento de ruta. Debe ser el directorio donde está montado el sistema de archivos (por ejemplo, / o /home). NOTA: **EXT4** (Journaling) protege los datos escribiendo primero los cambios en un journal (diario) para recuperarse rápido tras fallos, mientras que **Btrfs** (COW) usa Copy‑on‑Write, creando nuevas copias de los bloques modificados en lugar de sobrescribirlos, lo que permite funciones avanzadas como snapshots y verificación de integridad (checksum).
146
Qué comando usar para listar todos los procesos en ejecución asociados al servicio Apache (httpd)?
El comando es: **ps -ef | grep httpd** Explicación de los parámetros: - **ps** → muestra procesos del sistema. - **-e** → lista todos los procesos en ejecución. - **-f** → formato completo (UID, PID, PPID, hora, comando…). - **grep httpd** → filtra solo las líneas que contienen “httpd”. Resultado: Muestra todos los procesos del sistema en formato detallado y luego filtra únicamente los que pertenecen a Apache (httpd), permitiendo ver cuántos procesos hijos hay y sus PIDs.
147
¿Qué añaden los parámetros: -v, -c, -n y -r, al comando "grep"
*grep -v tai oposiciones.txt => imprime todas las líneas que NO contengan el patrón "tai" del fichero oposiciones.txt *grep -c tai oposiciones.txt => devuelve el NUMERO DE VECES que aparece el patrón "tai" en oposiciones.txt *grep -n tai oposiciones.txt => muestra el NÚMERO DE LÍNEA en la que aparece el patrón *grep -r tai oposiciones.txt => busca un patrón en SUBDIRECTORIOS y todos sus ARCHIVOS, en este caso, sólo busco en oposiciones.txt
148
¿Qué 2 maneras tiene LINUX de conocer los dispositivos conectados?
1. Udevadm monitor => para dispositivos que conectamos después del arranque (Plug&Play). 2. /Sys => para los fijos. PRIMERO, habría que localizar la ruta completa del dispositivo (a partir del slot o tipo de dispositivo). SEGUNDO: una vez localizada la ruta, lo invocaremos con udevadm info -a -p /sys/ruta
149
Las reglas udev son configuraciones que se realizan en archivos *.rules* que indican a udev cómo debe identificar y gestionar los dispositivos cuando se conectan al sistema, permitiendo asignar permisos, nombres persistentes, enlaces simbólicos o ejecutar acciones automáticas según los atributos del hardware. Después de crear reglas udev con **udevadm**, ¿qué pasos adicionales hay que realizar para probarlas y aplicarlas?
1. _Probar la regla_: Usamos **udevadm test** indicando la ruta del dispositivo en /sys para ver cómo udev interpretaría la regla: **udevadm test /sys/.../dispositivo** *Esto no ejecuta la regla, pero muestra coincidencias y acciones.* 2. _Recargar y aplicar las reglas_: Tras verificar que la regla es correcta, hay que hacer que udev la cargue: a) **udevadm control --reload-rules** *Hace que udev vuelva a leer los archivos de reglas.* b) **udevadm trigger** *Fuerza a udev a aplicar esas reglas a los dispositivos ya presentes.* **Con esto se recargan las reglas y se aplican a los dispositivos actuales.** Alternativamente, reiniciar el sistema también las carga. NOTA: udev es un componente del espacio de usuario, integrado en systemd, que se encarga de detectar cuando un dispositivo aparece, desaparece o cambia, y de gestionar los nodos correspondientes en /dev creando, eliminando o actualizando los dispositivos dinámicamente.
150
¿Cómo configuramos un servidor de archivos SAMBA?
1. sudo apt install samba 2. mkdir /home/usuario/sambashare 3. Editar configuración: sudo nano /etc/samba/smb.conf *Lo que haces es definir qué carpeta se comparte y con qué permisos.* Está es la configuración que se hace en el archivo: [sambashare] path = /home/usuario/sambashare read only = no browsable = yes NOTA: **browsable = yes** significa que la carpeta compartida será visible cuando alguien navegue por la red desde otro equipo. En otras palabras: - yes → la carpeta aparece en el explorador de red. - no → la carpeta existe y se puede acceder si conoces la ruta, pero no aparece listada.
151
Establecer ACL's para dar permisos:
setfacl -m u:Oliver:r archivo NOTA: permitiendo una granularidad más allá de los permisos UGO (Usuario, Grupo, Otros) básicos de chmod. Son ideales cuando necesitas dar acceso a un usuario específico o un grupo extra sin cambiar la propiedad del archivo o la configuración UGO principal, usando comandos como setfacl y getfacl. IMPORTANTE: getfacl es la herramienta perfecta para "respaldar" permisos ACL, ya que su función es mostrar las ACL existentes, permitiéndote guardar esa configuración redirigiendola a un archivo, para luego restaurarla con setfacl, que es la que modifica las ACL. 1. Para respaldar (guardar) los permisos: getfacl /ruta/al/archivo_o_directorio > permisos_acl_backup.txt Esto guarda la configuración ACL del archivo/directorio en el archivo permisos_acl_backup.txt. 2. Para restaurar (aplicar) los permisos: setfacl --restore=permisos_acl_backup.txt Este comando lee el archivo de respaldo y aplica esas ACL a los archivos y directorios listados en él.
152
Cómo permitir las consultas DNS (entrada y salida) por TCP y UDP en iptables?
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT iptables -A OUTPUT -p tcp -o eth0 --dport 53 -j ACCEPT iptables -A INPUT -p tcp -i eth0 --sport 53 -j ACCEPT NOTA: significado de los parámetros: - -A → Añade la regla a la cadena (Append). - INPUT / OUTPUT → Dirección del tráfico: - INPUT: paquetes que entran al equipo. - OUTPUT: paquetes que salen del equipo. - -p → Protocolo (udp o tcp). - -i → Interfaz de entrada (por donde entra el tráfico). - -o → Interfaz de salida (por donde sale el tráfico). - --dport → Puerto de destino (53 para consultas DNS). - --sport → Puerto de origen (53 para respuestas DNS). - -j ACCEPT → Acción: permitir el tráfico.
153
¿Cómo permitir conexiones salientes ICMP (para que funcione el ping desde dentro de la maquina virtual)?
*iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACEPTAR* *iptables -A INPUT -p icmp --icmp-type echo-response -j ACEPTAR* *La "A" es de Allow. NOTA: Iptables es un módulo del núcleo de Linux que se encarga de filtrar los paquetes de red.
154
IPTABLES permite 3 tipos de bloqueo dependiendo de la procedencia del tráfico, ¿cuáles son?
INPUT: para analizar los paquetes que llegan a nuestra máquina. OUTPUT: para analizar los paquetes que salen de nuestra máquina. FORWARD: para analizar los paquetes que pasan por nuestra máquina. *También tenemos la opción de bloquear la IP según si sea de origen o de destino: Indicaremos -s para bloquear la IP de origen (source) Indicaremos -d para bloquear la IP de destino (destimo)
155
¿Qué resultado obtendríamos con la instrucción: iptables -A INPUT -s 200.10.20.0/24 -j DROP?
Bloqueará todas las IP’s que intenten acceder a nuestro servidor y que comiencen por 200.10.20.
156
¿Cómo permitir conexiones SSH y HTTP (para poder conectarnos con putty y con nuestro navegador)?
iptables -A INPUT -i eth0 -p tcp --dport 22 -m estado --estado NUEVO, ESTABLECIDO -j ACEPTAR iptables -A SALIDA -o eth0 -p tcp --sport 22 -m estado --estado ESTABLECIDO -j ACEPTAR iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NUEVO, ESTABLECIDO -j ACEPTAR iptables -A SALIDA -o eth0 -p tcp --sport 80 -m estado --estado ESTABLECIDO -j ACEPTAR
157
Cómo podemos permitir o denegar el acceso de determinados hosts a servicios como SSH o FTP?
Para controlar qué hosts pueden acceder a servicios como SSH o FTP, podemos usar los ficheros de TCP Wrappers: - /etc/hosts.allow - /etc/hosts.deny 1. Configuración de acceso Bloquear o permitir acceso a SSH ` sshd: 192.168.1.100 sshd: 192.168.1.0/255.255.255.0 ` Bloquear o permitir acceso a FTP (vsftpd) ` vsftpd: 192.168.1.100 vsftpd: 192.168.1.0/255.255.255.0 ` > Nota: La lógica es simple: > - hosts.allow → lo que se permite explícitamente > - hosts.deny → lo que se bloquea --- 2. Reiniciar los servicios para aplicar cambios SSH - Con SystemD: ` systemctl restart sshd ` - Con SysVinit: ` service sshd restart ` FTP (vsftpd) - Con SystemD: ` systemctl restart vsftpd ` - Con SysVinit: ` service vsftpd restart ` --- 3. Alternativas También es posible controlar el acceso mediante: - iptables - firewalld - ufw Estas opciones son más potentes y recomendables para entornos modernos. - iptables — Firewall clásico de Linux. Muy potente y flexible, pero técnico. Permite crear reglas detalladas para permitir o bloquear tráfico según IP, puertos o protocolos. - firewalld — Firewall moderno que sustituye a iptables en muchas distros. Usa zonas y servicios, es más fácil de gestionar y aplica cambios sin reiniciar. - ufw (Uncomplicated Firewall) — Capa simplificada sobre iptables. Su objetivo es ser muy fácil de usar: comandos simples para permitir o bloquear puertos, servicios o IPs.
158
Cómo bloquear SSH (22) y FTP (21) mediante iptables, nftables y firewalld?
🔹 IPTables iptables -I INPUT -s 192.168.1.100 -p tcp --dport 22 -j REJECT iptables -I INPUT -s 192.168.1.100 -p tcp --dport 21 -j REJECT 🔹 nftables nft add rule inet filter input ip saddr 192.168.1.100 tcp dport {22,21} reject 🔹 FirewallD firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 --dport 22 -j REJECT 🔹 Notas - iptables: service iptables save => Guarda las reglas para que sigan activas después de reiniciar. - firewalld: firewall-cmd --reload => Aplica los cambios de firewalld sin reiniciar el sistema. - -I: insertar regla - -j: acción (REJECT/DROP)
159
Comenta algunas funciones de IPTABLES:
Borrar todas las reglas --> iptables -F Bloquear toda la entrada --> iptables -P INPUT DROP Bloquear toda la salida --> iptables -P OUTPUT DROP NOTA: -P viene de policy (política). Sirve para definir qué debe hacer iptables cuando un paquete llega a una cadena y no coincide con ninguna regla.
160
¿Cómo instalar el comando "ping", "ifconfig" y "route"?
ping => apt-get install inetutils-ping ifconfig y route => sudo apt install net-tools
161
¿Cómo crear un fichero al que hacerle un enlace posteriormente?
Crear un fichero de texto --> vi f1.txt Crear con enlace simbólico --> ln -s f1.txt enlaceF1.txt Crear 2 de enlaces duros --> ln f1.txt f2.txt y ln f1.txt f3.txt *Route: comando disponible tanto en Microsoft Windows como en GNU/Linux. Nos permite manipular las tablas de enrutamiento de nuestro sistema.
162
**ClassPath** es una variable de entorno con la que configuramos nuestras rutas de librerías de terceros, pero ¿cómo se configura una variable de entorno en Linux?
ESTRUCTURA: clave=valor => se crean: *export VAR="value"* Cada línea contiene el nombre de la variable de entorno Linux seguido de = y el valor. Por ejemplo: HOME=/home/edward *env* (environment) => comando para mostrar y ejecutar las variables de entorno. *printenv* => nos muestra una lista mas completa de las variables de entorno (en minúsculas). *printenv HOME* => nos muestra la VE en cuestión (en minúsculas): /home/edward *printenv | less* => agregándole "less" nos muestra las variables de entorno linea a linea. NOTA: también puedes revertir la VE para que vuelva a su valor inicial o predeterminado: *unset VAR* => unset HOME *Si deseas que la configuración se mantenga en todos los inicios de sesión, debes definir las variables de entorno en tu archivo de inicialización personal, es decir **.bash_profile**.
163
Sabemos que "uname" nos provee de valiosa información del sistema Linux, de hecho si lo usamos sin argumentos nos entregara la palabra Linux, pero, ¿conoces algunos de sus parámetros?
$ uname -r => versión del kernel. *4.15.0-74-generic* $ uname -v => fecha de la versión del kernel. *#84-Ubuntu SMP Thu Dec 19 08:06:28 UTC 2019* $ uname -m => para conocer la arquitectura de nuestro sistema operativo. *x86_64* $ uname -p => mostrar el tipo de procesador. *x86_64* $ uname -o => el nombre de la distribución de Linux. *GNU/Linux* IMPORTANTE: para conocer la información completa con un sólo parámetro: _$ uname -a_
164
Sabemos que usando sin parámetros el comando *uname* nos devuelve la palabra "Linux" y con *-a* nos da TODA información del sistema, pero ¿para qué sirve usarlo con el parámetro *-n*?
*uname -n* Muestra el nombre que le hemos dado al equipo para la red, si no lo cambiamos será el que le dimos en la instalación de nuestra distribución. Este nombre se toma de /etc/hostname por lo que podemos cambiarlo en este archivo. Por lo cual, *uname -n* es lo mismo que poner *cat /etc/hostname*
165
Sabemos que en LINUX, aunque hayan varias particiones y discos, sólo hay un directorio *raíz*(/ => barra inversa a la de Windows), pero ¿qué otros directorios cuelgan de este?
ROOT (principal o raíz): punto de acceso al sistema de ficheros. bin: comandos binarios esenciales para el usuario (ejecutables). sbin: binarios de *sistema*. boot: ficheros estáticos del sector de arranque (vmlinuz: kernel de Linux comprimido y es de arranque). dev: ficheros de unidades, es decir, contiene los ficheros que se comunican con los dispositivos. etc: ficheros de configuración. lib: librerías esenciales *compartidas* y módulos de kernel. media: punto de montaje para dispositivos *removibles* (extraibles). mnt: punto de montaje *temporal* para sistemas de *ficheros*. opt: para instalar software *externo*. NOTA: VFS (El Sistema de Ficheros Virtual) de Linux es una capa que utiliza el núcleo Linux para abstraer y uniformizar el acceso a los diferentes tipos de sistemas de ficheros => HOMOGENEIZANDO la estructura de directorios / ficheros.
166
Sabemos que en LINUX, aunque hayan varias particiones y discos, sólo hay un directorio *raíz* (/ => barra inversa a la de Windows), pero ¿qué otros directorios cuelgan de este?
usr: utilidades o aplicaciones de multi-usuario (se puede compartir por todas las máquinas). Es una jerarquía secundaria. root: directorio HOME del usuario ROOT. home: directorios personales de cada usuario. var: contiene datos variables del sistema, es decir, archivos que cambian constantemente durante la operación normal, como registros (logs) de sistema y aplicaciones, correo electrónico de usuarios, colas de impresión (spool), cachés, bases de datos y otros datos temporales o persistentes de aplicaciones, **siendo fundamental para diagnóstico y solución de problemas**. *El comando _traceroute_ nos permite conocer los diferentes caminos que utiliza tu conexión para alcanzar nuestro servidor. **traceroute**: - Muestra cada salto intermedio (routers) entre tu máquina y el servidor destino. - Ejemplo: traceroute www.tuservidor.com Este comando nos permite ver si hay algún problema entre los mismos. srv: datos para servicios del sistema. tmp: temporales. proc: contiene información del VFS. Se utiliza para ofrecer información relacionada con el sistema (originalmente acerca de *procesos*, de aquí su nombre). Permitiendo a las aplicaciones y usuarios mirar detenidamente en la vista del kernel del sistema. sys: al igual que /proc , contiene archivos virtuales que proveen información del kernel relativa a eventos del sistema operativo. Es en cierto modo una evolución de /proc , y a diferencia de este último, los archivos se distribuyen de forma jerárquica. NOTA: VFS (El Sistema de Ficheros Virtual) de Linux es una capa que utiliza el núcleo Linux para abstraer y uniformizar el acceso a los diferentes tipos de sistemas de ficheros => HOMOGENEIZANDO la estructura de directorios / ficheros.
167
Sabemos que el fichero *usr* porta una "jerarquía secundaria" donde se instalan todos los programas (posibilitando la actualización de la Distribución sin tener que instalar todos los programas de nuevo), pero ¿qué directorios cuelgan de este fichero?
/usr/X11R6 Se encuentran aquí todos los archivos del Sistema X-Windows (sistema de ventanas). /usr/bin En este directorio se encuentran la gran mayoría de los comandos. (Otros estarán en: /bin o en /usr/local/bin). /usr/sbin Comandos para la administración del sistema que no son necesarios en el sistema de archivos raíz. /usr/share/man, /usr/share/info, /usr/share/doc Páginas de *manual*, documentos de información GNU, y archivos de documentación de los programas instalados. /usr/include Archivos cabecera para el lenguaje C. /usr/lib Archivos de datos de programas y subsistemas que NO cambian (anteriormente almacenaba las librerías). /usr/local Es la ubicación para el software instalado localmente (se reserva para ser utilizado únicamente por el administrador).
168
¿Cuáles son los 3 nuevos Sistemas de Gestión de Paquetes de Linux _INTERDISTRIBUCIONALES_?
**AppImage** *(imagen de la aplicación)* **Snap** *(quebrar)* **FlatPak** *(paquete plano)* NOTA: Linyaps (nuevo gestor universal) _INTERDISTRIBUCIONALES_: quiere decir que son sistemas de gestión de paquetes *independientes* de la distribución, es decir, poder instalar cualquier programa o librería sin importar la distribución en la que estemos (Gentoo, Slackware, Arch, Lubuntu, Debian, ...)
169
Hay ciertos caracteres en /etc/passwd, que nos orientan sobre el tipo de cuenta: x => indica que la contraseña cifrada está en /etc/shadow. ! => indica que la cuenta esta bloqueada. !! => indica que la cuenta NO tiene clave. Pero, ¿cómo podemos BLOQUEAR o DESBLOQUEAR usuarios en Linux?
1. Para bloquear con usermod sería: **sudo usermod -L username** 2. Para desbloquear un usuario que ha sido bloqueado con usermod -L: **sudo usermod -U username** - Para bloquear con passwd sería: **sudo passwd -l username** Si has bloqueado un usuario utilizando passwd -l: **sudo passwd username** *También lo bloquearías cambiándole la contraseña: **sudo passwd username** *Otra forma seria estableciendo la fecha de expiración de la cuenta en el pasado. Esto hará que la cuenta sea inaccesible. **sudo chage -E 0 username** **chage**: Es la herramienta que permite gestionar la caducidad de contraseñas y cuentas de usuario. **-E 0**: El parámetro -E establece la fecha de expiración de la cuenta. - 0 significa expirar inmediatamente. -> Resultado: la cuenta queda bloqueada (no puede iniciar sesión).
170
En Linux, sabemos que el kernel es monolítico y modular, y que existen dos espacios diferenciados (usuario y kernel). Cuando un proceso en espacio de usuario necesita servicios del kernel, usa llamadas al sistema (system calls) a través de la SCI (System Call Interface). Entonces, ¿qué es fork y qué ocurre cuando se ejecuta?
fork es una llamada al sistema que crea un nuevo proceso duplicando el proceso actual. El proceso original se denomina padre y el nuevo proceso se denomina hijo. - Es solo una de las muchas llamadas al sistema disponibles (otras son read, write, open, execve, etc.). - Todas las llamadas al sistema, incluido fork, utilizan la System Call Interface (SCI) para pasar del espacio de usuario al espacio de kernel. - En sistemas modernos, la transición al kernel se realiza mediante la instrucción syscall, que reemplaza al antiguo mecanismo int 0x80 por ser más rápido y eficiente. Resumen: fork es una llamada al sistema específica cuya función es crear un nuevo proceso. No todas las llamadas al sistema son fork; fork es simplemente la que duplica el proceso en ejecución.
171
Sabemos que cuando la capa usuario hace una llamada a la capa kernel lo realiza mediante la llamada al sistema FORK utilizando la interfaz SCI. Y, que fork() no es la única llamada al sistema (read, write, open, execve, etc.), pero si la que crea un nuevo proceso duplicando el proceso actual. Puedes explicar el flujo simplificado de la llamada al sistema fork()?
Flujo simplificado: 1º El programa en espacio de usuario invoca una función de la libc (por ejemplo, fork()). 2 º Esta función utiliza la instrucción especial (syscall) para pasar al modo kernel (antes int80h). 3º El kernel ejecuta la función correspondiente (sys_fork). 4º Devuelve el control al espacio de usuario con el resultado. NOTA: ahora el mecanismo para pasar del espacio de usuario al kernel se hace con la instrucción syscall en lugar de int 0x80 (int80h) porque es más rápido.
172
Sabemos que tanto Debian (dpkj -i / apt) como Red Hat (rpm -Uvh / yum o DNF) tienen 2 maneras (offline / online) de instalar paquetes (librerías). Qué relación tienen los comandos: aptitude, dselect y synaptic?
Los tres comandos —aptitude, dselect y synaptic— están relacionados con la gestión de paquetes en **Debian** y distribuciones derivadas (como Ubuntu, Kali, etc.). Cada uno es una herramienta distinta para instalar, actualizar o eliminar software. Conclusión: - aptitude → gestor avanzado en terminal. - dselect → herramienta antigua, casi en desuso. - synaptic → gestor gráfico amigable NOTA: cuando los usas sin parámetros los tres muestran una “ventanita” o interfaz con listas de paquetes, pero aptitude y dselect lo hacen en modo texto dentro de la terminal, mientras que synaptic lo hace con una ventana gráfica completa. ESTAS INTERFACES LLAMAN A *APT* POR DEBAJO.
173
Sabemos que utilidad tienen los ficheros de Linux: hostname (contiene solo una línea con el nombre del host) y host (Es más complejo: permite definir relaciones entre IPs y nombres). Pero donde se ubican y muestra su interior:
Se ubican en /etc. Kalicanto@W11DGCDBAPROV01:/etc$ cat hostname W11DGCDBAPROV01 Kalicanto@W11DGCDBAPROV01:/etc$ cat hosts 127.0.0.1 localhost 127.0.1.1 W11DGCDBAPROV01.carreteras.fomento.es W11DGCDBAPROV01
174
Además de los los ficheros de Linux: hostname (contiene solo una línea con el nombre del host) y hosts (Es más complejo: permite definir relaciones entre IPs y nombres), existe **host.conf** situado también en /etc, definelo:
- Define el orden y métodos de resolución de nombres que usará la librería de C (libc) cuando un programa solicita la conversión de un nombre de host. Kalicanto@W11DGCDBAPROV01:/etc$ cat host.conf order hosts,bind multi on Explicación: - order hosts,bind - Indica el orden de búsqueda: - Primero consulta el archivo /etc/hosts. - Luego, si no encuentra nada, consulta un servidor DNS (bind). - multi on - Permite que un nombre de host tenga varias direcciones IP en /etc/hosts. NOTA: es más antiguo y hoy en día muchas distribuciones usan principalmente /etc/nsswitch.conf
175
En Linux, estos dos ficheros /etc/resolv.conf y /etc/hosts están relacionados con la resolución de nombres, pero que funciones distintas cumplen:
/etc/hosts - Función: Es una tabla local que asocia nombres de host ↔ direcciones IP. - Uso: - Se consulta primero para resolver nombres sin necesidad de acudir a un servidor DNS. - Útil para definir alias internos o pruebas. 127.0.0.1 localhost 192.168.1.10 servidor-web 192.168.1.20 servidor-db /etc/resolv.conf - Función: Define los servidores DNS que el sistema debe consultar cuando no encuentra un nombre en /etc/hosts. - Uso: - Es la configuración principal del cliente DNS. - Contiene las direcciones IP de los servidores DNS y opciones de búsqueda. - Ejemplo de contenido: nameserver 8.8.8.8 nameserver 1.1.1.1 search midominio.com
176
Sabemos que el comando **ss** ha sustituido a **netstat**, pero, ¿en qué se diferencia de **nmap**?
ss (Socket Statistics) Herramienta LOCAL para inspeccionar conexiones y sockets en tu propio sistema. Muestra puertos abiertos, conexiones activas, procesos asociados. Se usa para diagnóstico INTERNO. Es decir, con **ss** podemos ver: Estado de sockets (LISTEN, ESTABLISHED, etc.). PID y programa que usa el puerto. Estadísticas TCP/UDP. nmap (Network Mapper) Herramienta para explorar redes y escanear hosts REMOTOS. Descubre qué puertos están abiertos en otros equipos, qué servicios corren, incluso puede detectar el sistema operativo. Se usa para auditoría, seguridad y análisis EXTERNO. Es decir, con **nmap** podemos ver: Puertos abiertos en un host remoto. Servicios y versiones. Detección de vulnerabilidades (con scripts NSE).
177
Tanto el comando **ss** (a nivel local) como **nmap** (a nivel remoto) están relacionados con redes. Indica la instrucción más usada y útil para cada herramienta con sus parámetros explicados:
Función más usada de **ss** (Socket Statistics): Ver qué **puertos** están **abiertos en _tu máquina_ y qué procesos los usan**: ss -tulnp -t → Muestra conexiones TCP. -u → Muestra conexiones UDP. -l → Solo puertos en escucha (listening). -n → Muestra direcciones y puertos en formato numérico (sin resolver DNS). -p → Incluye el PID y el nombre del proceso que usa el puerto. Uso más típico de **nmap**: Descubrir qué **puertos** están **abiertos en un _equipo remoto_**: nmap -sS -p 1-1000 192.168.1.10 -sS → Escaneo SYN (rápido y común). -p 1-1000 → Escanea puertos del 1 al 1000. 192.168.1.10 → IP del host objetivo.
178
Para la seguridad en Linux tenemos: -Las cuentas de usuarios con sus permisos, -Gestión de recursos (ulimit y cgroups), -SELinux (módulo del kernel) -y tb tenemos 3 sistemas en red: Iptables (cortafuegos), Fal2ban (protección contra intrusos: IPS) y SSH. Explica SSH:
SSH (Secure Shell) es un protocolo que crea un canal cifrado (parecido a SSL) para 2 cosas totalmente diferentes: 1. Control REMOTO de la maquina (Putty). 2. Funciones de copias REMOTAS de ficheros (WINSCP) => SSH usa 2 protocolos diferente para copia de ficheros remotas: SCP o SFTP. En cambio, FTPS se usa para SSL. IMPORTANTE: para usar cualquiera de estos 2 servicios hay que conectarse al puerto **22**. NOTA: Un sistema de protección contra intrusos (también llamado IDS/IPS: Intrusion Detection System / Intrusion Prevention System) es un conjunto de herramientas o mecanismos diseñados para detectar, prevenir y responder a intentos no autorizados de acceso o ataques en un sistema o red => **Fail2ban**.
179
W
180
Como podemos conseguir que el nuevo usuario **pepe** pueda usar **sudo** para ejecutar comandos con privilegios de administrador?
Hay que añadir al usuario pepe al grupo **sudo**: usermod -aG sudo pepe Significado de cada parámetro: - usermod → Comando para modificar las propiedades de un usuario existente en Linux. - -a (append=añadir) → Añadir el usuario a un grupo sin eliminarlo de los grupos en los que ya está. - Si no pones -a, el usuario quedaría solo en los grupos que especifiques con -G, perdiendo los demás. - -G sudo → Indica el grupo al que quieres añadir al usuario. En este caso, el grupo **sudo**. NOTA: - Los usuarios que pertenecen al grupo sudo pueden ejecutar comandos como administrador usando sudo (le pedirá su contraseña).
181
Para qué se usa el parámetro -m junto a useradd?
Para crear automáticamente el directorio home del nuevo usuario en el momento de su creación. Y con **-s** para definir el intérprete de comandos (shell) por defecto que tendrá el nuevo usuario al iniciar sesión. Ejemplo: sudo useradd -m -s /bin/bash juan Esto crea: * El usuario. * Su directorio home. * Su shell por defecto será Bash.
182
Con ACLs (setfacl / getfacl) puedes dar permisos a usuarios y grupos sin tocar los permisos u, g y o (chmod). Pero, si quiero dar permisos al usuario "pepe" sobre el archivo f2.txt, que creó "juan", cómo puedo hacerlo?
Para dar permisos a pepe sobre el archivo f2.txt que creó juan, tienes dos opciones: Opción 1: Cambiar el propietario (chown). Si quieres que pepe sea el dueño del archivo: sudo chown pepe f2.txt Opción 2: Mantener a juan como propietario y dar permisos a pepe. Para esto, lo mejor es usar ACLs (Access Control Lists): setfacl -m u:pepe:rwx f2.txt **setfacl**: Comando para establecer ACL (Access Control List), que permite asignar permisos más granulares que los tradicionales de Linux (chmod, si fueran ugo). **-m**: Significa modificar la ACL del archivo (añadir o cambiar permisos). u:pepe:rwx: **u**: Indica que el permiso se aplica a un usuario. pepe: Nombre del usuario al que se le asignan los permisos. rwx: Permisos que se conceden. NOTA: para usuarios no **ugo**, sería así: chmod u+rwx f2.txt Es decir, **setfacl** permite dar permisos a usuarios o grupos específicos sin cambiar propietario ni grupo ni others (ugo). Ahora comprobamos los permisos: getfacl f2.txt
183
Sabemos que los rangos de UID por defecto en Linux son: - UID 0 → reservado para el superusuario **root**. - UID 1–99 → cuentas predefinidas para **servicios del sistema**. (ejemplo: daemon, bin, sys). - UID 100–999 → **cuentas de sistema** creadas por paquetes o servicios (ejemplo: www-data, mail). - UID 1000 en adelante → asignados automáticamente a **usuarios** normales cuando se crean con adduser o useradd. ¿Cuáles son los rangos por defectos de GID?
- GID 0 → grupo **root**. - GID 1–99 → grupos reservados para **servicios del sistema**. - GID 100–999 → grupos de sistema asociados a **cuentas de servicio**. - GID 1000 en adelante → grupos de **usuarios** normales.
184
Los comandos **df** y **du** se usan para analizar espacio en disco en Linux, en qué se diferencian?
df — Disk Free - Muestra el **espacio libre y usado por cada sistema de archivos**. - Responde a la pregunta: “¿Cuánto espacio queda en la partición?” - Ejemplo típico: df -h Según las fuentes, df muestra el uso total del filesystem, no de los archivos individuales. du — Disk Usage - Calcula cuánto **espacio ocupan los archivos y directorios**. - Recorre el árbol de directorios sumando tamaños. - Responde a la pregunta: “¿Cuánto espacio ocupan estos archivos?” - Ejemplo típico: du -sh /ruta Las fuentes explican que du mide el espacio consumido por archivos y carpetas, **no** el del sistema de archivos completo. Ejemplo: du -SCH log ->combina varias opciones de du para mostrar el tamaño real en disco del directorio o archivo llamado log, con un formato más legible y un resumen final. Vamos opción por opción: ✅ -S - Muestra solo el tamaño del directorio indicado, sin sumar el tamaño de subdirectorios. - Es decir, si log/ tiene subcarpetas, no las incluye en el total. ✅ -C - Añade una línea de total acumulado al final. - Útil cuando analizas varios directorios, aunque con uno solo simplemente repite el total. ✅ -H - Muestra los tamaños en formato legible para humanos: KB, MB, GB. - Mucho más cómodo que ver bloques de 1K.
185
Sabemos que tanto **nginx** como **apache2** son servidores web (encargados de entregar contenido a los usuarios en Internet), es decir, son programas que reciben peticiones HTTP y devuelven páginas web al navegador. Pero, cuál elegirías?
1. Elige NGINX si quieres… -Máximo rendimiento con alto tráfico. -Bajo consumo de recursos (RAM/CPU). -Un proxy inverso rápido y moderno. -Servir contenido estático a gran velocidad. 👉 Ideal para APIs, microservicios, contenedores, Kubernetes, sitios con mucho tráfico. 2. Elige Apache si necesitas… -Flexibilidad extrema en configuración. -Usar .htaccess para ajustes por directorio. -Gran compatibilidad con módulos y aplicaciones antiguas. -Un servidor fácil de adaptar en hosting tradicional. -Ideal para hosting compartido, aplicaciones legacy o entornos donde cada sitio necesita su propia configuración. NOTA: El archivo **.htaccess** es un archivo de configuración utilizado por el servidor web Apache para aplicar ajustes por directorio, sin necesidad de modificar la configuración global del servidor. Resumen en una frase: -NGINX = rendimiento y eficiencia. -Apache = flexibilidad y compatibilidad.
186
En las distribuciones Linux modernas, el comando **ip** (del paquete iproute2) es el reemplazo oficial y recomendado de **ifconfig** (del paquete net-tools). Sabes algunas funciones de ip?
-Ver todas las interfaces y sus direcciones: ip addr show ó ip a -Activar o desactivar interfaces: ACTIVAR=> ip link set eth0 up DESACTIVAR=> ip link set eth0 down -Añadir o eliminar direcciones IP: AÑADIR=> ip addr add 192.168.1.10/24 dev eth0 ELIMINAR=> ip addr del 192.168.1.10/24 dev eth0 -Gestionar rutas (routing): - Ver la tabla de rutas: ip route show - Añadir una ruta: ip route add 192.168.2.0/24 via 192.168.1.1 - Eliminar una ruta: ip route del 192.168.2.0/24
187
Sabemos que **netstat** muestra información general de conexiones y puertos, incluyendo nombres de host y muchos tipos de sockets y que **netstat -atun** filtra solo TCP y UDP, muestra todas las conexiones y puertos en escucha, y usa IPs numéricas sin resolver DNS. Es decir, - netstat -atun es más rápido, más limpio y más útil para diagnóstico de red que netstat a secas. Pero, sabes si funciona también con **ss**?
Si. Kalicanto@W11DGCDBAPROV01:~$ sudo ss -atun Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 10.255.255.254:53 0.0.0.0:* udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* tcp LISTEN 0 20 127.0.0.1:25 0.0.0.0:* NOTA: la ip 0.0.0.0 indica que se esta publicando el servicio por cualquier tarjeta de red. SIGNIFICADO letra en -atun -a → all Muestra todas las conexiones y puertos en escucha. -t → tcp Filtra y muestra solo conexiones TCP. -u → udp Filtra y muestra solo conexiones UDP. -n → numeric Muestra IPs y puertos en formato numérico, sin resolver nombres DNS (más rápido y claro). ✅ Resumen en una frase -atun significa: mostrar todo, solo TCP/UDP, y sin resolver nombres.
188
Crea un **script** en Linux sabiendo que: $0: Nombre del script $1: Primer argumento $*: Todos los argumentos como una sola cadena $@: Todos los argumentos como elementos separados $#: Número de argumentos $$: PID
CREAMOS: Kalicanto@W11DGCDBAPROV01:~$ **nano script.sh** #!/bin/sh echo '$0:' + $0 (ctrol+o: para gaurdar y ctrl+x: para salir). EJECUTAMOS: Kalicanto@W11DGCDBAPROV01:~$ **./script.sh** -bash: ./script.sh: Permission denied Kalicanto@W11DGCDBAPROV01:~$ **chmod u+x script.sh** Kalicanto@W11DGCDBAPROV01:~$ ./script.sh $0: + ./script.sh NOTA: $0 es el nombre del script. OTRO: nano script.sh #!/bin/sh echo '$0:' + $0 echo '$1:' + $1 echo '$*:' + $* echo '$#:' + $# echo '$$:' + $$ echo '$@:' + $@ EJECUTAMOS: Kalicanto@W11DGCDBAPROV01:~$ ./script.sh param1 param2 param3 $0: + ./script.sh $1: + param1 $*: + param1 param2 param3 $#: + 3 $$: + 478 $@: + param1 param2 param3
189
Sabemos que para manipular particiones GPT nos encontramos con los comandos gdisk (especializado en GPT) y parted (permite gestionar GPT y MBR). Explica el funcionamiento del **fdisk**
**fdisk** sirve para crear, eliminar y gestionar particiones en discos con tabla de particiones MBR. fdisk /dev/sdb (para discos SATA o SCSI) # fdisk /dev/hdb (para discos PATA o IDE) Los numeros de las particiones van asi: 1-4 para primarias o extendia (solo una) 5 en adelante para particiones logicas dentro de la extendida Algunos tipos de particiones importantes: **8e** --> Linux LVM **82** --> Linux swap (paginacion) **83** --> Linux (ext4 por ej) **fd** --> Linux raid NOTA: con el comando "lsblk" se muestra un listado de todos los dipositivos de bloque (discos, ...) NOTA: con el comando "hdparam /dev/sda1" se obtiene información física del disco: cilindros, pistas, ...
190
Cuál es paquete más habitual en la mayoría de distribuciones Linux **para montar un servidor DNS**?
BIND9 Al instalarlo, tu máquina puede actuar como servidor DNS. - Debian / Ubuntu: sudo **apt** install bind9 - CentOS / RHEL / Rocky / AlmaLinux: sudo **dnf** install bind - Arch Linux: sudo **pacman** -S bind NOTA: AlmaLinux es una distribución de Linux de código abierto, gratis y a nivel empresarial. Basada en Red Hat Enterprise Linux (RHEL) y diseñada como el sucesor de CentOS (RED HAT). Es ideal para servidores y entornos de producción.
191
Con la llegada de Linux 7.0, **Rust** (lenguaje creado por Mozilla) se integra oficialmente en el kernel para complementar a C, por su enfoque en la seguridad de memoria, ¿en qué se diferencia fundamentalmente Rust del lenguaje C?
La diferencia fundamental entre **Rust** y **C** es cómo gestionan la seguridad y la memoria: mientras que C otorga libertad total al programador (lo que facilita errores humanos), Rust utiliza un sistema de reglas estrictas (El bibliotecario Borrow Checker) verificadas durante la compilación para evitar fallos catastróficos. NOTA: Rust protege mejor contra el hackeo porque elimina por diseño las vulnerabilidades de memoria, que en C dependen exclusivamente de la infalibilidad humana.
192
Sabiendo que un **super‑daemon** es un programa especial en sistemas Unix/Linux que controla y gestiona otros servicios. En lugar de que cada servicio esté ejecutándose todo el tiempo, el super‑daemon escucha por ellos y los inicia solo cuando hace falta. ¿Qué super-daemon es **inetd** y para qué sirve?
**inetd** es un “super‑daemon” de Unix/Linux que se encarga de escuchar múltiples **puertos de red** y lanzar servicios solo cuando alguien se conecta. En lugar de tener muchos servicios ejecutándose todo el tiempo, **inetd** ahorra recursos iniciando cada servicio solo cuando hace falta. Es como un portero que abre la puerta únicamente cuando alguien llama, en vez de tener a todos los servicios activos permanentemente.
193
¿Cómo se instala Kali Linux en Windows usando WSL únicamente por comandos?
1º **Abrir PowerShell como Administrador** *Es necesario para ejecutar comandos del sistema.* 2º **Comprobar el estado de WSL**: wsl --status *Esto confirma si WSL está habilitado y si usa la versión 2* *PS C:\WINDOWS\system32> **wsl --status** Distribución predeterminada: kali-linux Versión predeterminada: 2* 3º **Establecer WSL2 como versión predeterminada** wsl --set-default-version 2 4º **Instalar WSL si aún no está habilitado** wsl --install 5º **Instalar Kali Linux mediante descarga directa (sin Microsoft Store)** wsl --install --web-download -d kali-linux *"-d" viene de distro* 6º **Esperar a que se abra la consola de Kali** *Al finalizar la instalación, se inicia Kali para crear el usuario y contraseña.* 7º **Actualizar el sistema dentro de Kali** sudo apt update sudo apt full-upgrade -y NOTA: se pueden lanzar las 2 instrucciones a la vez uniéndolas con **&&** 8º **Verificar que Kali está instalado correctamente** cat /etc/os-release *Debe mostrar la versión de Kali Rolling.* 9º **Comprobar que WSL reconoce la distribución** wsl -l -v *Debe aparecer kali-linux con versión 2.* *PS C:\WINDOWS\system32> wsl -l -v NAME STATE VERSION * kali-linux Stopped 2* NOTA FINAL: **Stopped** indica que Kali no está ejecutándose en este momento. Para arrancarlo simplemete escribe en PowerShell o CMD tras abrirlos como _ADMINISTRADOR_ si es que lo instalaste abriendo la consolo como ADMINISTRADOR: **wsl -d kali-linux** -> Es igual con cualquier otra distro de LINUX: Ubuntu, Debian, Arch, Fedora, SUSE, Oracle Linux, AlmaLinux, Rocky Linux, Alpine Linux, Pengwin, Parrot OS, Gentoo, ...
194
¿Cuáles son las distros Linux más destacadas por su estética y qué caracteriza a cada una?
- **Garuda** Linux: Estética llamativa estilo “gaming”, colores neón y efectos sobre KDE Plasma. - **Deepin** (DDE): Diseño elegante y minimalista, muy pulido, con apariencia similar a macOS. - **KDE Neon**: Plasma en su versión más reciente, limpio, moderno y altamente personalizable. - **elementary OS**: Escritorio Pantheon minimalista, coherente y muy cuidado, inspirado en macOS. NOTA: _Pantheon_: Escritorio minimalista y muy ordenado, inspirado en macOS. _KDE Plasma_: Escritorio moderno, extremadamente personalizable y modular. Permite ajustar casi todo: paneles, widgets, temas y comportamiento.