Pero te lo resumo rápido: básicamente, cada día que pase intentaré aprender al menos un concepto, curiosidad o dato técnico sobre GNU/Linux, y lo publicaré aquí con la finalidad de recibir retroalimentación, consejos o críticas respetuosas.
Día 1: Interfaz de linea de comandos
Día 2: Comandos basicos
Día 3 Inodos:
Día 4 Estandar POSIX:
Día 5 Búfer:
Día 6 Sistema de archivos de Linux (FHS)
Día 7 Sistema de Permisos y Usuarios de Linux:
Día 8 chmod y chown:
Día 9 El comando sudo:
Día 10 Repositorios y Gestores de Paquetes:
Día 11 GNU:
Día 12 Fimware:
Día 13 Sistema de Init:
Día 14 Editores de Texto:
Día 15 SSH:
Día 16 Profundizando en comandos (LS):
Día 17 Profundizando en comandos (PWD):
Día 18 Profundizando en comandos (CD):
Día 19 Profundizando en comandos (TOUCH):
Día 20 El uso de ./:
Día 21 Profundizando en comandos (mkdir):
Día 22 Profundizando en comandos (cp):
Día 23 Profundizando en comandos (mv):
Día 24 Profundizando en comandos (rm):
Día 25 Anotaciones sobre Bash y Linux:
Día 26 Scripts y Shell Scripting
Día 27 Caracteres especiales y palabras reservadas en bash
Es una iniciativa muy buena e interesante. Como consejo, ¿por qué no añades cada día nuevo como un comentario a la publicación raíz? Así es más fácil seguir el hilo y las actualizaciones, mejor que editando el contenido, creo. Además, así permites que haya cierta interacción con elementos concretos. ¡Sigue así!
La CLI es el acrónimo de Command Line Interface (Interfaz de Línea de Comandos), la linea de comandos en GNU/linux sirve para tener control del sistema desde una terminal con una interfaz de texto, en GNU/linux los comandos hacen uso de la shell (comunmente bash) para interactuar con el sistema operativo y automatizar tareas, la shell sirve como un puente entre el usuario y el kernel
Los inodos son los indices de cada archivo y directorio que almacene en nuestra partición física de almacenamiento, esto para que el kernel pueda acceder a los archivos, los inodos marcan también metadatos como permisos, propietario y fecha.
Imaginemos lo como una biblioteca, cada libro seria un bloque de datos la portada del libro seria su nombre pero el inodo seria la ficha de búsqueda de cada libro, su dirección en el estante, su propietario y su fecha de modificación, un hard link seria como otra ficha para encontrar el libro, pero desde otra dirección.
Cuando borras un archivo en realidad lo que haces es marcar el inodo como libre si ya no tiene ningun hard link, esto marca ese estante del libro como vacío permitiendo que se puedan colocar otros libros en ese lugar, pero el libro en si permanece allí hasta que su espacio es remplazado
POSIX Es acrónimo de Portable Operating System Interface y “X“ viene de UNIX el cual es un sistema operativo, el termino POXIS fue sujerido por Richard Stallman en la década de 1980
POXIS es un estandar creado por la IEEE (Institute of Electrical and Electronics Engineers) el cual busca tener una compatibilidad y portabilidad entre sistemas operativos, porgramas como la shell la interfaz y su entorno, por ejemplo que errores devolver, que opciones son minimas en ciertos comandos etc.
Esto permite que un programa compile y funcione de manera predecible en distintos sistemas operativos
El búfer es una manera de almacenar datos temporales en la memoria a diferencia de la cache que almacena esos datos temporales para aumentar la velocidad de acceso, el búfer es un dato transitorio.
Por ejemplo, nuestra terminal es solo una interfaz para poder usar el búfer (donde escribimos los comandos) que luego esos datos se pasan a la shell.
Esto tambien puede generar problemas, por ejemplo si se añaden mas datos de los que el espacio seleccionado del búfer es capaz de almacenar, creando un desbordamiento de memoria lo cual puede ocacionar errores o vulnerabilidades
En Linux todo es un archivo, es por eso que es muy importante entender su sistema de archivos
/: este es el directorio raíz aquí se montan todos los demás directorios principales
/bin: este es el lugar donde se almacenan los binarios esenciales del usuario
/boot: aquí se guardan los archivos necesarios para que el sistema arranque
/dev: este es como un puente entre los programas y el kernel
/etc: aquí se guardan los archivos de configuración del sistema
/home: aquí se guardan las carpetas de los usuarios
/lib: muchas veces varios programas requieren de librerías esenciales, muchas de esas librerías se guardan aquí
/media: es donde se muestran los archivos de los dispositivos extraibles, como por ejemplo un pendrive
/mnt: si un sistema falla y tiene una copia de seguridad puede montar toda esa copia aquí, y accediendo desde un liveusb o otro sistema puede repararlo
/opt: los programas que no confíen en que su sistema tenga las librerías que necesita en /lib almacena sus propias librerías aquí
/sbin: como /bin guarda binarios del sistema, pero con la diferencia de que estos binario solo pueden ejecutarse como administrador
/srv: es la carpeta donde pongo los archivos y datos que quiero compartir
/tmp: para archivos temporales que se guardan en la memoria ram, como un proceso de ejecución o un proceso de conexión SSH por ejemplo
/usr: este es el almacén de los programas que los usuarios o el sistema tienen
/var: es donde se guarda la cache
/root: es el directorio de el usuario root, aquí se guardan archivos de administración profunda del sistema
/proc: aquí se puede ver en tiempo real los procesos del sistema
Dado que en Linux todo es un archivo comprender como funcionan los usuarios y los permisos de esos archivos es vital para la seguridad y administración del sitema
Usuarios y Grupos: los Usuarios son los que crean los archivos, en Linux pueden a ver diferentes usuarios en una misma maquina, mientras los Grupos son un grupo de usuarios que comparten ciertos permisos
si ejecutamos el comando ls -l “archivo” nos dará información sobre permisos usuarios, tamaño en bytes y fecha de modificacion
podemos desglosar la sintaxis de los permisos de la siguiente manera
primer caracter “-” o “d”, aquí “-” significa que es un archivo normal y “d” significa que es un directorio
la primer triada “rwx” o “—” en la primer triada de permisos podemos ver los permisos del usuario. es decir, del dueño del archivo, cada “-” en una posición donde no allá letra significa un permiso denegado
la segunda triada representa los permisos de los grupos sobre el archivo
y la tercer triada representa los permisos de otros usuarios sobre el archivo.
Ejemplo: -rw-r–r-- 1 root usuario 0 mar 20 01:20 archivo.txt
aquí se puede ver el tipo de archivo sus permisos seguido de la cantidad de hardlink que tiene luego el dueño, despues el grupo de usuarios del archivo luego la cantidad de bytes del archivo, despues la fecha de modificación y finalmente el nombre dle archivo
Podemos cambiar los permisos con chmod, su sintaxis seria así
chmod g+w archivo.txt
donde g es la referencia del grupo, + significa la agregación de un permiso y w es el permiso en si
tambien podemos cambiar el dueño y los grupos a los que pertenece un archivo con chown, su sintaxis es
El comando sudo viene del ingles (super user do) que signifca “super usuario hace” es un comando en loss sistemas Unix que te permite ejecutar programas con los privilegios de seguridad de otros usuario, normalmente el usuario root
Un Gestor de Paquetes es un software que se encarga de administras las dependencias librerias y binarios de los programas, tambien administra instalación, actualización, configuración y eliminación.
Y un Repositorio es un una extructura de almacenamiento que opera en un servidor, almacena esos paquetes para ser accedidos e instalados desde otras computadoras.
GNU es el acronimo recursivo de (GNU no es Unix), GNU es una extensa colección de software libre, que puede utilizarse como sistema operativo, desde el compilador gcc hasta librerias y herramientas, GNU proporciona las bases para un sistema operativo portable, el proyecto GNU fue creado por Richar Stallman, padre del software libre
Un Fimware es un programa incorporado en el hardware que sirve de controlador para procesadores, tarjetas de red etc, a diferencia de un controlador (driver) que vive en el sistema operativo y se comunica con el kernel que a su vez se comunica con el fimware, el fimware vive en el hardware y desde que se enciende su función es verificar la integridad del harware como teclados mause etc, verifica si hay una secuencia de arranque como el sistema operativo en el disco duro etc, exiten algunos tipos de fimware, como bios, EFI y UEFI
El sistema de Init es el primer sistema que se ejecuta despues del nucleo, sirve para gestionar los procesos del hardware despues de que se inicie el kernel, por ejemplo, es quien decide si mi bluetooth se enciende o se apaga al iniciar mi sistema
En GNU/Linux casi todas las configuraciones son archivos de texto plano, esto significa que con un editor de texto puedes configurar esos archivos, algunos de los mas famosos son nano (simplicidad) vim (eficiencia, curva de aprendizaje alta)