B2-T2_LINUX Flashcards
¿Cómo se llama al proceso con PID=1 que arranca los servicios al inicio del sistema?
init
¿Para qué hacemos “export” sobre una variable?
Para que sea visible en los distintos niveles de shell o entornos de los procesos hijos (algo asi como hacerla global)
¿Qué representa un volumen físico dentro de LVM?
Un disco duro o partición que podremos añadir a un determinado VG (grupo de volúmenes).
Ej /dev/hda o /dev/sdb1
¿Qué representa el dispositivo /dev/sda1?
Dentro del disco SCSI/SATA sda, la primera partición.
NOTA: los valores 1-4 son para particiones primarias
¿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?
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
¿Cuál es la herramienta clásica para instalar software en las distro de la familia Red-Hat usando el catálogo de paquetes que hay en internet?
YUM (yellowdog updater modified)
*Las URLs con los catálogos de todos los paquetes están en: /etc/YUM.REPOS.D
*En Fedora 18 se introdujo DNF (Dandified Yum), y fue propuesto para reemplazar a yum en Fedora 22.
NOTA: Si nos bajamos el fichero .rpm entonces se instala con rpm.
Nombra algunos Gestores de Paquetes:
-Npm Y Yarn => JS
-Composer => PHP
-Nuget => .NET
-Homebrew => MAC (Brew)
-Chocolatey => Windows (Choco)
-Maven => Java
-Apt => Debian
-Yum (DNF) => Red Hat
¿Qué es WSL?
(Subsistema de Windows para LINUX)
Máquina virtual de Windows para usar LINUX (a partir de Windows 10).
¿Cuál es la estructura del kernel de Linux?
Monolítica (todo en un sólo software): todas las funcionalidades importantes estan dentro del kernel (kernel space), a diferencia de en Windows.
Referente a LINUX, ¿qué es SCI?
(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” (int 80h), 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.
¿Qué son los módulos del Kernel LKM?
(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.
¿Cuál es el fichero ejecutable o binario que contiene el Kernel de LINUX?
/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.
¿Qué es el “shceduler”?
El planificador (scheduler) es la parte del SO que decide a qué proceso preparado se le da paso a CPU
Comenta el sistema de ficheros (FS) “VFS”:
(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.
¿Nombra algunos SO de tipo UNIX?
-BSD (Distribución de Software Berkeley)
-HP-UX (Hewlett-Packard UNIX)
-SOLARIS (Sun Microsystem)
-SCO (Santa Cruz Operaction)
-AIX (Advanced Interactive eXecution) de IBM
Nombra algunas distribuciones de LINUX:
-Debian -> Ubuntu -> Mint
-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.
-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.
¿Cómo se hace la distribución de paquetes en la distro de LINUX “Slackware”?
Con archivos tar comprimidos.
Hace uso del programa rpm2txz y rpm2tgz respectivamente para convertir paquetes RPM a formatos tgz y txz nativos.
¿Qué es el KERNEL?
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.
¿Cuáles son las funciones del KERNEL de Linux?
-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.
¿Cuáles son los 3 niveles de abstracción del SO?
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.
Expón algunas funciones del gestor de paquetería de Debian “APT”:
*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
¿Cuál es la utilidad de Debian para descargar paquetería OFFLINE?
Pues si tuviera el fichero del paquete en cuestión descargado .deb, se puede instalar de manera OFFLINE con la utilidad: dpkg-i fichero.deb.
¿Cuál es la utilidad de Red Hat para descargar paquetería OFFLINE?
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
¿Con qué dos comandos podemos dar permisos de lectura a un usuario sobre un archivo?
- chmod (con limitaciones, porque ese usuario tendría que ser el OWNER o pertenecer al GRUPO OWNER)
- para OTHERS con las Listas de Control de Acceso (ACL’s):
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 “+”.
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.
¿Cómo podemos acceder al contenido de una memoria usb dentro de nuestro linux?
Con mount
¿Cómo localizamos ficheros de más de 100 megas en todo el árbol de directorios?
find / -type f -size +100M
¿Con qué orden(es) podemos limitar los recursos que utiliza un determinado proceso?
ULIMIT y CGROUPS.
¿Qué es SELinux?
Un módulo del kernel que implementa/gestiona una serie de políticas de seguridad muy estrictas.
¿De qué manera un programa de usuario puede invocar a servicios del kernel?
Mediante system calls (int 80h).
¿Para qué sirve el comando ldd?
Para poder visualizar de un programa (binario) que librerías utiliza.
Ej: ldd /usr/sbin/apache2
Si queremos planificar una tarea solo para un instante determinado, ¿qué comando usaremos?
at
¿Cómo obtenemos la dirección IP que nos han asignado?
ip / ifconfig (obsoleto)
Si una vez arrancado el sistema me interesa analizar los mensajes que aparecieron al inicio (ver si hay algún error con algún dispositivo, … ) ¿con qué comando podría ver esos mensajes?
dmesg
(mensajes de diagnostico)
¿Qué contiene la variable $# dentro de un script?
El número de parámetros pasado al script por linea de comando.
¿Qué dos protocolos se manejan en Linux para temas de impresión?
*LDP (Line_Printer_Daemon_protocol)/LPR
*IPP (Internet_Printing_Protocol)
¿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.
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)
Nombre dos gestores de arranque:
*LILO
*GRUB
¿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, …
Menciona ficheros para configuración de usuarios:
*umask (022 x defecto)
*.profile
*.bashrc
NOTA: el “.” indica archivo oculto=>ls -a
¿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
¿Qué son las “variables de entorno” y cómo se mostrarían?
Son valores dinámicos que afectan a programas o procesos. Se pueden crear, guardar, editar y eliminar.
El comando: “env” muestra la lista de las variables de entorno.
PROCESO:
1. Asignar valor: TEST=valor
2. Listar valor: echo $TEST
3. Exportar a los SHELL: export TEST=valor
¿Para que sirve el comando “whoami”?
Muestra el nombre de usuario actual, los identificadores de seguridad (SID), los privilegios y los grupos a los que pertenece el usuario actual.
¿Que conseguiríamos con la sintaxis: exec comando?
Ejecuta el comando y te saca del SHELL (exit).
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
¿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)
Comando “tree”:
*tree: muestra el árbol de DIRECTORIOS-SUBDIRECTORIOS-ARCHIVOS
NOTA: se instala con “apt install tree” desde el super usuario.
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.
*rm -r: recursivo (afecta a todo el árbol)
*rmdir: SÓLO borra directorios vacíos.
Comandos “rsync” y “rsyncd”:
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.
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”.
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.
¿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.
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
¿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 procesos 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)
¿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
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
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.
Diferencia entre los comandos “chown” y “chgrp”:
CHOWN, cambia el propietario del fichero (i-node) y CHGRP el del grupo.
*Ambos usan la sintaxis: user:group => chmod user:group fichero
NOTA: sólo puede el ROOT.
¿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
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.
¿Que 2 tipos de enlaces tenemos en LINUX?
- 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
- 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
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” 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
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.
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.
¿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.
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