martes, 5 de diciembre de 2023

0 - Configuración de la red en Vmware

Vmware Workstation dispone de 20 Switch virtuales que sirven para conectar máquinas virtuales. Los Switch 0, 1 y 8 tienen un comportamiento especial mientras que el resto son independientes es decir que cualquier máquina virtual que conectemos a ellos permanecerá completamente aislada, sin conexión con la máquina anfitriona, ni con otras máquinas externas.

Switch VMnet0 - Bridge


El Switch virtual 0 (VMnet0) hace la función de Puente entre la tarjeta de la maquina virtual y la tarjeta de la maquina física, por lo tanto nuestra maquina virtual podría conectarse con otras maquinas de la red y salir a Internet sin problema. Tanto la tarjeta de la máquina virtual como la tarjeta de la máquina física tendrán direcciones IP diferentes del mismo rango y visibles desde el exterior.


Modo Bridge


Switch VMnet8 - NAT


El Switch virtual 8 (VMnet8) crea un router virtual (NAT device) que de forma automática se encargará de que las direcciones IP de todas las tarjetas de red de las MV configuradas en NAT sean filtradas y traducidas para salir a través de la tarjeta física de la máquina real.

Bajo este sistema, las MV NAT pueden salir a Internet, sin embargo los ordenadores de la red externa (red del anfitrión) no podrán establecer conexión por defecto con las MV.

Este modo dispone de manera opcional de un servicio virtual propio DHCP que atenderá a las MV conectadas a través de NAT. Solo puede haber un interfaz virtual en modo NAT.


Modo NAT


Switch VMnet1 - Host Only


En este modo, (VMnet1) se crea una conexión entre entre las MV y la máquina física. El adaptador de las MV y el adaptador del anfitrión se encuentran conectados a una red privada y aislada del exterior. 

Las MV tienen conexión con el host pero no podrán salir a Internet. Este modo también dispone de un servicio virtual propio DHCP.

Modo Host only

Lan Segment


Esta configuración crea un segmento de red virtual. Cualquier máquina virtual que cuente con el mismo segmento de red que otra, podrá comunicarse con ella sin problemas.

Por ejemplo, si configuramos 3 máquinas virtuales en el mismo segmento de red dichas 3 máquinas estarán montadas en su propia red local virtual y tendrán comunicación directa entre ellas por red, pero será imposible que se comuniquen con cualquier otra máquina, ni con el host, ni con Internet.

Los segmentos de red los podemos crear desde el mismo botón “LAN Segments” que vemos en la pantalla de configuración de la red. Podemos crear tantos segmentos como queramos, y no importa el nombre que les pongamos.


Custom

Desde esta opción podemos indicar directamente a VMware que utilice una red virtual que hayamos creado anteriormente en el editor de redes de VMware. Si escogemos una red virtual no definida estaríamos creando un Lan segment.

domingo, 3 de diciembre de 2023

01 - Esquema MBR. Arranque BIOS

A la hora de dar formato a un disco duro, el estilo de tablas de particiones más conocido es MBR. Este estilo de formato lleva más de 30 años funcionando en la mayor parte de SO. Una de las principales limitaciones de MBR es el tamaño máximo de partición con el que puede trabajar: 2 TB. Además el número de particiones primarias que se pueden crear está limitado a 4. Si se quiere aumentar la cantidad de particiones debemos recurrir a una estrategia lógica denominada partición extendida donde se podrían crear un máximo de 23 particiones lógicas.

Registro maestro de arranque (MBR)

Cada disco duro tiene un sector inicial de 512 bytes conocido como MBR que contiene varias piezas fundamentales: Tabla de particiones, Código de arranque rudimentario y Firma de arranque.

Sector cero del Disco

Tabla de particiones


Es un conjunto de registros (máximo 4) de 16 bytes cada uno, ubicada en el MBR, cuya función es definir las posibles particiones primarias, almacenando información esencial: Sistema de ficheros, Tamaño, Sector de arranque, Marca de arranque etc. Sólo una partición debe tener la marca de arranque.

Bootstrap

Pequeña porción de código (440 bytes) que se encarga de buscar la partición activa en la tabla de particiones (sólo puede haber una activa). Una vez que la encuentra, busca al principio de dicha partición otra porción de código denominada sector de arranque y la carga en memoria.

Sector de arranque de la partición activa

El código de arranque del MBR lo podemos considerar como cargador de arranque de etapa 1 mientras que el código de arranque del sector de arranque de la partición activa, cargador de arranque de etapa 2

Firma de arranque

Son los dos bytes finales del MBR que la BIOS usa para saber si la unidad de arranque seleccionada es realmente arrancable o no. En un disco que contiene un código de arranque válido, los dos últimos bytes del MBR siempre deben ser 0x55 0xAA. Si no es así, asume que el disco no es arrancable y continúa con el siguiente dispositivo en la lista de orden de arranque que tenga configurada.

Si ningún dispositivo de la lista tiene la firma de inicio correcta, la BIOS muestra error "No hay ningún dispositivo de inicio disponible" o "Reiniciar y seleccionar el dispositivo de inicio adecuado".

El sector de arranque de la partición activa tiene también al final una comprobación de sector de arranque válido similar a la firma del MBR.

Proceso de arranque BIOS (MBR)

  • Se ejecuta el POST, unas rutinas almacenadas en BIOS que hacen un testeo para verificar e inicializar el hardware: placa, procesador, gráfica, RAM, teclado, etc. Justo después es posible el acceso a la BIOS.
  • La BIOS comprueba las unidades de almacenamiento disponibles y se selecciona una unidad de arranque (suele ser una unidad de disco).
  • Se carga el MBR de la unidad de arranque en memoria.
  • Se ejecuta el cargador de arranque de etapa 1 (el que esta en el MBR) que se encarga de consultar la tabla de particiones y localizar la partición activa.
  • Se carga el sector de arranque de dicha partición en memoria.
  • Se ejecuta el cargador de arranque de etapa 2  (el que está en el sector de arranque de la partición activa).
  • Se carga la configuración del cargador de arranque que suele estar almacenada en una base de datos.
  • El cargador de arranque muestra un menú con la lista de SO que pueden lanzarse (si es que hay varios).
  • El cargador de arranque localiza y carga el núcleo del SO y se inicia el sistema de forma desatendida.


Windows Bootmgr

Cada SO tiene su propio gestor de arranque, diseñado específicamente para leer su sistema de archivos y localizar el núcleo que debe cargarse para que se ejecute. Bootmgr es el gestor de arranque utilizado actualmente en Windows en versiones desktop y server. Es un gestor de arranque autónomo especialmente diseñado para ser compatible con las funcionalidades más nuevas de los SO modernos, como el arranque EFI y el particionado GPT.

Almacena su configuración en un archivo llamado BCD, abreviatura de Boot Configuration Database, una base de datos binaria que no se puede abrir y editar a mano pero si a través de comandos como bcdedit.exe y utilidades GUI fáciles de usar como EasyBCD para leer y modificar la lista de SO.

Casi todos los gestores de arranque, como Bootmgr o GRUB2, separan el ejecutable real del gestor de su configuración (base de datos que contiene información sobre los SO a cargar). De esta forma ofrecen soporte para cargar múltiples SO, un proceso conocido como "arranque dual" o "arranque múltiple".

sábado, 2 de diciembre de 2023

02 - Esquema GPT. Arranque UEFI

Esquema GPT

El nuevo estándar GPT (GUID Partition Table) está sustituyendo a MBR y está asociado con los nuevos sistemas UEFI. Su nombre viene de que a cada partición se le asocia un único identificador global, GUID. A día de hoy, GPT no tiene ningún límite más allá que los que establezcan los propios SO, tanto en tamaño de disco (mas de 2TB), como en número de particiones (por ejemplo, Windows tiene un límite de 128 particiones).


LBA= 512 bytes. LBA negativo= por el final

MBR heredado



Se ha mantenido un MBR al principio del disco para evitar que las herramientas antiguas de manejo de discos basados en MBR, que no reconocen GPT, se confundan y puedan estropear el disco. Este MBR de seguridad especifica, contiene una única entrada de partición que abarca toda la unidad GPT.


Cabecera de tabla de particiones (primaria)



Define el número y tamaño de las entradas de partición que conforman la tabla de particiones y los bloques de disco que pueden ser utilizados por el usuario.


Contiene el GUID del disco y registra su propio tamaño y localización (LBA 1), y el tamaño y la localización de la cabecera y tabla de la GPT secundarias (siempre en el último sector del disco).

Entradas de partición


Contienen el GUID, tipo, comienzo, final, nombre y otros atributos de partición.

Cabecera de tabla de particiones (secundaria)



Copia redundante de la cabecera de tabla de particiones primaria que sirve de seguridad para poderse recuperar en caso de error.

Consideraciones


Mientas que en MBR la tabla de particiones se almacena en el primer sector del disco, con los consiguientes problemas en caso de que dicho sector se pierda, corrompa o sobrescriba, con GPT obtendremos mayor seguridad en nuestro disco duro en cuanto a la pérdida de datos, ya que tenemos una copia de la propia tabla de particiones replicada en nuestro disco.

Arranque UEFI


El arranque UEFI es radicalmente opuesto a MBR.
  • Mantiene un cargador propio EFI (Extendible Firmware Interface) en una partición EFI de tipo FAT (Ej. en Windows 10 ocupa 100 MB y se etiqueta como Sistema)
  • Dispone también de un gestor de arranque propio que incorpora entradas según los SO que se vayan instalando en modo UEFI además de entradas tradicionales Legacy (compatibilidad con MBR).
  • Se ejecuta el cargador EFI y se pasa el control al dispositivo de la lista del gestor de arranque en el orden que esté establecido (si no fuera válido se pasaría al siguiente).

Ejemplo de gestor de arranque EFI

El cargador de arranque EFI es mucho más complejo y tiene mucho mayor conocimiento de los arranques posibles de los diferentes SO, de esa forma quedan integrados dentro del propio cargador acelerándose el proceso de carga del Kernel.


UEFI permite configurar el comportamiento de arranque del sistema desde el propio SO a través de herramientas como efibootmgr.

viernes, 1 de diciembre de 2023

03 - Particiones Windows 10 - BIOS/UEFI

Se puede realizar una instalación de Windows en modo legacy  BIOS para que sea compatible con el viejo particionado MBR o en modo UEFI para utilizar el nuevo particionado GPT. La instalación por defecto en el caso de que no haya particiones creadas (disco limpio), crea un esquema de particiones ligeramente diferente en cada caso.

Veamos diferencias entre ambos modos a la hora de instalar Windows 10 Education 22H2 en un disco de 60GB y dejando que el SO decida por defecto. Se muestra el administrador de discos y Diskpart desde Windows.

BIOS (arranque csm)

  • Reservada de 50MB, ha ido cambiando el tamaño entre distintas versiones de Windows 10). Es la partición de arranque y contiene ficheros para el arranque de Windows, bootmgr entre otros.
  • Principal del sistema (tamaño variable). Es donde está instalado el sistema operativo, los programas y si no se colocan en otra partición también los datos.
  • Recuperación (535MB). Contiene utilidades de recuperación y también se usa para manipular particiones reservadas cifradas
UEFI (arranque uefi)


  • Reservada de 100MB, es la partición de arranque y contiene ficheros para el arranque UEFI
  • Reservada de 16MB para EFI, solo es visible desde consola y ayuda en las labores de administración del particionado GPT
  • Partición principal del sistema (tamaño variable). Es donde está instalado el sistema operativo, los programas y si no se colocan en otra partición también los datos.
  • Recuperación (535MB). Contiene utilidades de recuperación y también se usa para manipular particiones reservadas cifradas
Recuerda que para instalar Windows en modo UEFI, hay que arrancar en modo UEFI con una iso de Windows de 64bits y el disco del sistema se formateará en GPT (puede haber otros discos MBR).

Separar SO y Datos

Independientemente del sistema operativo y del modo instalación: BIOS o UEFI es muy recomendable que el sistema operativo y los datos de usuario se sitúen en particiones diferentes, o mejor si es posible en discos diferentes.

La partición que alberga el SO suele ser la que más daños sufre debido a diversos problemas como ataques, apagones, corrupción de información, actualizaciones entre otros muchos. En una situación difícil, podríamos tener que reinstalar el SO y si los datos están en la misma partición hay más posibilidades de perder información.

Si almacenamos los datos en una partición aparte, solo tendríamos que arreglar la partición del SO sin poner en peligro los datos, y sin trabajo innecesario. Si además, esa partición esta en un segundo disco, todavía tendríamos un mayor nivel de seguridad ya que aunque se rompiera definitivamente el disco del SO, el de los Datos podría conservarse intacto. 

Hoy en día con las unidades de estado sólido SSD, se hace casi obligatorio almacenar los datos fuera del SSD, que normalmente alberga el SO, porque además, estas unidades en muchas situaciones no permiten recuperar los datos tan fácilmente como los discos duros.

Además de estas razones también se reduce el impacto de la fragmentación beneficiando al rendimiento del disco.

Instalaciones UEFI

En primer lugar volvemos a recordad que instalar el SO operativo en modo UEFI implica elegir esquema de particionado GPT. También es recomendable que el disco se encuentre limpio sin particiones antes de proceder (Shift + F10 y Diskpart pueden ayudar con esto)

Además el dispositivo de arranque desde donde vamos a instalar el sistema tiene que arrancar en modo UEFI. Si es un USB, hay que montar la iso de Windows 10 con alguna herramienta tipo Rufus en modo UEFI.



Si el SO no está certificado (firmado por Microsoft), habría que desactivar el arranque seguro en la UEFI porque la instalación fallaría a la hora de actualizar la configuración de arranque. Si el SO no esta preparado para instalación UEFI además habrá que seleccionar en la UEFI el modo CSM que permite arranques compatibles con BIOS y montar la iso con Rufus de la forma que corresponde.



Arranque seguro (Secure Boot)

Es un firmware propio de UEFI,  embebido en la máquina, que exige que el SO y sus drivers estén firmados digitalmente y que dicha firma concuerde con el firmware embebido.

Microsoft, con la excusa de evitar la carga de malware o aplicaciones no fiables,  lo implementa en la propia arquitectura del SO a partir de W8, obligando a que el SO y sus drivers estén firmados digitalmente. Además para que los equipos comercializados con W8 puedan tener la pegatina oficial tienen que implementar arranque seguro UEFI.

El arranque seguro debe ser posible desactivarlo ya que muchos sistemas operativos no lo implementan y por lo tanto no podrían instalarse. La mayoría de fabricantes permiten la posibilidad de desactivarlo en UEFI pero ya no es obligatorio y algunos no lo hacen generando malestar.

Actualmente gran parte de Linux 64 bit modernos ya entregan sus SO firmados para poder utilizar arranque seguro.



https://www.xataka.com/basics/que-secure-boot-uefi-como-puedes-desactivarlo

Observación: Practica inicios de instalación de Windows en ambos modos para ver los distintos esquemas de particionado que se crean por defecto. Aprende a separar los datos del sistema. 

jueves, 9 de noviembre de 2023

02 - Sistema de archivos

Un sistema de archivos establece el modo en el que se organiza la información dentro de una partición. Existe un gran número de sistemas de archivos distintos. En las versiones actuales de Ubuntu, el sistema de archivos que se utiliza de forma mayoritaria es ext4, pero en la instalación del sistema se pueden elegir más opciones.

ext4 es un sistema transaccional (journaling)

Cuando el sistema de archivos necesita realizar una operación de disco, se guardan en un registro los cambios que se harán en la estructura del directorio, archivos implicados y bloques de disco, lo que permite al sistema deshacer los cambios si la operación no transcurre de forma satisfactoria debido a cualquier fallo (ext3 también soporta journaling).

ext4 soporta volúmenes más grandes, reducen la fragmentación, mejoran el rendimiento con archivos de gran tamaño, mejora la velocidad de lectura y escritura en disco y disminuye el consumo de tiempo de procesador, entre muchas otras características.

Linux trabaja con un sistema de archivos jerárquico con un único directorio raíz (a diferencia de Windows).

En Linux todo es un archivo, discos, USB, DVD, ratón, terminales, etc. y para poder acceder a ellos es necesario su montaje aunque la mayoría de sistemas actuales se encargan de automatizar el proceso.

Particionado recomendable

==> haz clic en el enlace

Directorio root

Es el directorio raíz del sistema y se simboliza por la barra inclinada hacia la derecha /. De este directorio cuelgan todos los demás directorios y subdirectorios del sistema. En general hay una serie de directorios colgando del raíz comunes en todas las distribuciones que son necesarios para el funcionamiento del núcleo.

/boot

Contiene una imagen del kernel e información de arranque del sistema operativo crítica

  • vmlinuz: es el kernel comprimido y booteable
  • initrd: o initial ramdisk, una especie de sistema de archivos raíz temporal en memoria que se usa como parte del proceso de arranque
  • grub: Grand Unified Bootloader, es el gestor de arranque, un software que carga el kernel iniciando el sistema   

/etc

Contiene archivos de configuración tanto a nivel de componentes del sistema operativo en sí, como de los programas instalados a posteriori (no contiene binarios). Por poner algún ejemplo

  • passwd: almacena la información de las cuentas de los usuarios
  • sources.list: contiene la lista de repositorios de confianza del sistema
  • netplan: aloja los ficheros de configuración de interfaces de red (a partir de la v18)  

/dev

(device) Contiene los dispositivos y enlaces a sus controladores e interfaces, por ejemplo particiones de disco, cdrom o terminales

/home

Aloja los subdirectorios que corresponden a los usuarios del sistema. En cada uno de esos subdirectorios se almacena el perfil de los diferentes usuarios que incluye sus datos y configuración personalizada

Puede resultar conveniente alojar /home en una partición independiente.

Hay que resaltar que el home del superusuario root es /root y es independiente de esta carpeta

/media

Es el directorio donde se montan, de forma automática normalmente, los sistemas de almacenamiento extraíbles cuando se conectan o utilizan, por ejemplo una unidad usb o una unidad CD/DVD. Habitualmente aparece un directorio nuevo dentro de /media que permite al usuario acceder al contenido del dispositivo en cuestión.

Existe también el directorio /mnt donde el usuario puede montar sistemas de archivos temporales cuando es necesario 

/bin  /sbin

Incluyen los binarios del sistema (ejecutables) de los usuarios normales y del superusuario respectivamente.

miércoles, 8 de noviembre de 2023

03 - Permisos Linux

En Linux todos los archivos pertenecen a un usuario y a un grupo. Cuando un usuario crea un nuevo archivo se asocia al mismo de forma automática un usuario y un grupo propietario. El usuario es el creador del archivo y el grupo propietario es el grupo principal que otorga permisos a los usuarios que pertenecen a dicho grupo.

Ej. Si el usuario jperez cuyo grupo principal es profesores crea un nuevo archivo, el archivo tendrá como usuario y grupo propietario a jperez y profesores respectivamente. 

chown

Permite cambiar el usuario y grupo propietario de un archivo. Por seguridad, sólo lo puede ejecutar el root y necesita permisos de escritura sobre el archivo

¿Cuáles son los Permisos?

El primer carácter indica el tipo de archivo en cuestión. Los 9 caracteres que le siguen representan los permisos y se leen en grupos de 3 de la forma siguiente: Los 3 primeros corresponden a los permisos que tiene el usuario propietario (el que crea el fichero normalmente). Los 3 siguientes corresponden al grupo propietario (el grupo principal del usuario). Los últimos 3 caracteres representan los permisos de todos los demás usuarios

ls

El comando ls permite listar los permisos de ficheros y directorios.
Tipos de archivos comunes







 




r - Permiso de lectura

Sobre un fichero: Significa que puede ser leído o visualizarlo mediante comandos o aplicaciones.

Sobre un directorio: Significa que se puede listar el contenido de la carpeta mediante comandos o aplicaciones

w - Permiso de escritura

Sobre un fichero: Se puede modificar su contenido o borrarlo mediante comandos o aplicaciones. 

Sobre un directorio: Se pueden crear y eliminar archivos y otras carpetas dentro de ella mediante comandos y aplicaciones. 

x - Permiso de ejecución

Sobre un fichero: Se puede ejecutar el fichero. 

Sobre un directorio: Se puede atravesar el directorio mediante comandos y aplicaciones

¿Cómo funcionan los permisos?

En principio, solo el usuario propietario de un fichero puede cambiar los permisos del mismo aunque el superusuario root puede modificar los permisos de cualquier archivo ya que tiene acceso total sin restricciones a la administración del sistema.

El esquema es bastante simple, hay tres grupos de permisos conocidos como UGO por las iniciales de los tres entidades a los que hace referencia: usuario, grupo y otros y el dueño del archivo configura estos permisos para estas tres entidades de acuerdo a sus necesidades.

Cualquiera que pertenezca al grupo propietario (grupo principal al que pertenece el dueño del archivo) disfrutará de los permisos que estén configurados en la zona  Group.

El resto, Other, se refiere a cualquier otro usuario que no sea ni el usuario propietario ni forme parte del grupo propietario.
Correspondencia octal de permisos
Según este esquema no es posible asignar permisos sólo a un usuario concreto o a un grupo concreto que no sea el grupo propietario. Para ello existe un mecanismo que implementa una extensión del clásico sistema de permisos UGO conocido como ACL o listas de control de Acceso que si permite asignar permisos a usuarios o grupos concretos

También veremos pronto que existen además de los permisos clásicos otros permisos denominados permisos especiales [Sticky Bit, SUID y SGID] que confieren ciertas funcionalidades muy específicas y que son importantes para comprender como funciona el sistema.

chmod

Es el comando que se utiliza para modificar los permisos y que puede realizar las operaciones utilzando dos notaciones diferentes: octal o simbólica

Notación simbólica

Notación octal

Ejemplo de uso






La Máscara predeterminada

Cuando se crea un archivo en Linux por medio de comandos (mkdir, touch, tee, etc) o de forma gráfica el sistema le asigna unos permisos por defecto que son siempre los mismos, a saber:
  • 666 si es un fichero
  • 777 si es un directorio
La máscara es un número que afecta (enmascara) estos permisos por defecto y los transforma en los permisos finales o permisos efectivos que acaban teniendo los ficheros o directorios en el momento de crearlos. 
  • 002 es la máscara de usuario predeterminada
La máscara de usuario predeterminada en Ubuntu 20.04 es 002 mientras que la de root es 022. Se puede cambiar a nivel de usuario particular, incluso para todos lo usuarios.
 
umask

Comando que permite consultar y modificar la máscara. 
Se puede fijar la máscara por defecto para todos los usuarios o solo para un usuario concreto
[Consultar entrada siguiente]

Comprendiendo el funcionamiento de la máscara

Sólo se necesita conocer la fórmula siguiente, donde el complemento a 1 de la máscara consiste en invertir la máscara y el operador && es el operador lógico AND. 

Permisos efectivos = Permisos por defecto && Complemento a 1 de la máscara

Veamos un ejemplo, averigua los permisos efectivos de ficheros y directorios si la máscara está definida en 136
  • Expresamos la máscara en octal
136 en octal es 001 011 110
  • Calculamos el complemento a 1 de la máscara
110 100 001
  • Hacemos el AND lógico entre los permisos por defecto de los ficheros y el complemento a 1 de la máscara
ficheros: 666 = 110 110 110  
110 110 110 && 110 100 001 = 110 100 000 = 640 
  • Hacemos el AND lógico entre los permisos por defecto de los directorios y el complemento a 1 de la máscara
directorios: 777 = 111 111 111  
111 111 111 && 110 100 001 = 110 100 001 = 641

Según nuestros cálculos, con una máscara definida en el sistema de 136 los ficheros que cree el usuario deben salir con permisos efectivos 640 mientras que los directorios que cree saldrían con 641. Ahora sólo queda probarlo en una consola.

martes, 7 de noviembre de 2023

04 - Scripts predeterminados

Existen 4 ficheros de texto ejecutables y personalizables predeterminados que el sistema operativo ejecuta de forma automática cuando se dan ciertas condiciones. Estos scripts, una especie de guiones que contienen órdenes y estructuras son interpretados por el Shell.

Podemos modificarlos con cualquier editor de texto e incluir cualquier orden de la línea de comandos que se ejecutará en el momento que lo haga el script


~/.bashrc

  • Es un fichero oculto que se encuentra el el home de cada usuario, que es de su propiedad y que puede modificar.
  • Se ejecuta cada vez que su propietario abre un terminal bash
  • Se usa para personalizar configuraciones de un usuario específico: crear alias, cambiar el prompt, definir funciones nuevas, etc
/etc/bash.bashrc

  • Es un fichero de configuración general propiedad del root que solo el root puede modificar.
  • Se ejecuta cada vez que cualquier usuario abre un terminal bash
  • Se usa para personalizar la configuración de todos los usuarios
~/.profile

  • Es un fichero oculto que se encuentra el el home de cada usuario, que es de su propiedad y que puede modificar.
  • Se ejecuta cada vez que su propietario inicia sesión
  • Se usa para personalizar configuraciones de un usuario específico.
/etc/profile

  • Es un fichero de configuración general propiedad del root que solo el root puede modificar.
  • Se ejecuta cada vez que cualquier usuario inicia sesión
  • Se usa para personalizar la configuración de todos los usuarios.
Importante: En caso de que un fichero de configuración general entre en conflicto con uno específico hay que tener en cuenta que primero se procesa el general y a continuación el específico

lunes, 6 de noviembre de 2023

05 - Sudo, Su y Sudo su

Superusuario o root

Los sistemas operativos GNU/Linux se caracterizan por tener un usuario con permisos totales sobre el sistema y tradicionalmente se le llama root ó superusuario. Su carpeta personal se encuentra en /root

En Ubuntu, la cuenta del superusuario o root viene desactivada por defecto, por seguridad. Es una protección por defecto contra posibles destrozos accidentales.

Sudo

Sudo permite a los usuarios ejecutar comandos como si fuera el root, pero solo a ciertos usuarios "especiales". Estos usuarios se denominan sudoers (los que pueden hacer sudo). Como es de imaginar, el usuario que instala el sistema es un sudoer.

/etc/sudoers

Es el fichero que contiene los usuarios que pueden realizar sudo, en particular el usuario que instala el SO pertenece al grupo sudo y este a su vez está incluido en el fichero con privilegios para ejecutar cualquier comando. El fichero es propiedad del root y solo él puede modificarlo por seguridad





Cuando se precede una orden de carácter administrativo del comando sudo, el sistema pide por defecto la contraseña cada cierto tiempo al usuario sudoer para confirmar que se trata de él. Aunque se puede desactivar dicho comportamiento, no es recomendable (timestamp_timeout)


Su

Su significa super usuario y también switch user y es precisamente para lo que sirve, para cambiar de usuario sin necesidad de cerrar la sesión del usuario actual, por supuesto tenemos que conocer su contraseña. También se puede usar para cambiar de usuario al root (siempre que la cuenta no esté deshabilitada)

A diferencia de sudo, su puede ser utilizado por cualquier usuario, no es necesario que sea un sudoer.

Sudo su

Para complicar un poco más, está la combinación de ambos comandos, ampliamente usada por comodidad. Permite a usuario sudoer cambiar al root (incluso si la cuenta del root está deshabilitada). No será necesario introducir sudo para ejecutar comandos de índole administrativo mientras se esté en este modo

En el ejemplo que sigue:
  • intento de cambiar al root pero la cuenta está deshabilitada o fallo en la contraseña
  • cambio al usuario pepe
  • intento fallido de pepe de hacer sudo (no es un sudoer)
  • intento satisfactorio de asir de hacer sudo (si es un sudoer) 

Observación: Puedes teclear sudo su - y además de cambiar al root te dejaría posicionado en el home del root 

Activar la cuenta del root

Si a pesar de la recomendación se desea trabajar con la cuenta del root directamente, el proceso es tan simple como asignarle una contraseña a dicho usuario a través del comando passwd.

En el ejemplo que sigue:
  • activación de la cuenta root (asignarle contraseña)
  • cambio de usuario al root con comando su
  • desactivación de la cuenta root
  • intento fallido de cambio de usuario al root con comando su

Si la cuenta del root permanece desactivada, ningún usuario normal (los que no son sudoers), podrá dedicarse a intentar usar el comando su root para tratar de averiguar la contraseña del superusuario.

Conclusiones
  • Por defecto y por seguridad, Ubuntu viene con la cuenta de root desactivada.
  • Un sudoer puede ejecutar ordenes como si fuera el root.
  • Un sudoer puede cambiar al root esté o no activada la cuenta del root.
  • Cualquiera puede usar su para cambiar a otro usuario si sabe su login y password
  • Cualquier puede usar su para cambiar al root si sabe su login y password por eso es conveniente que la cuenta del root permanezca desactivada

domingo, 5 de noviembre de 2023

06 - Usuarios y Grupos

Usuarios

A diferencia de Windows los sistemas Linux son multiusuario, esto es que varios usuarios diferentes  pueden trabajar simultáneamente en el mismo sistema.

/etc/passwd

Contiene información de las cuentas de usuarios y sus características.

  • UID [User ID]

Número de identificación único de usuario. Los usuarios pueden cambiar muchos parámetros, incluso su name, pero el UID no lo deben cambiar nunca. El UID del root es 0. Las cuentas de servicios y demonios tienen los UID más bajos, mientras que las de usuarios finales comienzan en el valor definido en UID_MIN en el fichero /etc/login.defs.

  • GID [Group ID]

Número de identificador único de grupo. Varios usuarios pueden tener el mismo grupo, aunque al crear un usuario se crea un grupo con ese mismo nombre por defecto salvo que se indique lo contrario. Los datos del grupo aparecen en /etc/group.

  • GECOS

Campo de comentarios que incluye información extra sobre el usuario (nombre real, dirección…) Informalmente se le llama información finger.

  • Home directory

Directorio de inicio del usuario. Los usuarios finales se suelen situar bajo /home.

  • Shell

La shell que utiliza por defecto el usuario (en muchos casos es /bin/bash). Si el usuario tiene /sbin/nologin o /usr/bin/false, significa que no tiene permiso para loguearse en el sistema, lo cual es común en daemons como medida de seguridad.

/etc/shadow

Contiene información sobre contraseñas de los usuarios de /etc/passwd, que almacena de manera cifrada.


Comandos de gestión de usuarios









Grupos

Todos los usuarios pertenecen a un único grupo principal o primario, es el que consta como su GID en /etc/passwd y opcionalmente pueden pertenecer a otros grupos secundarios o suplementarios que se gestionarían desde /etc/groups

Los grupos permiten conceder permisos a un conjunto de usuarios simultáneamente.

/etc/group

Contiene información sobre los grupos del sistema.



Campo 1: Nombre del grupo
Campo 2: Password que permite a un usuario cambiar de grupo. Si está vacío no requiere contraseña, y una x significa que se gestiona mediante el archivo /etc/gshadow.
Campo 3: GID del grupo.
Campo 4 : usuarios miembros del grupo

De forma similar, al fichero /etc/shadow, existe el fichero /etc/gshadow, que almacena los passwords de los grupos encriptados con un hash y también trabaja con los símbolos asterisco * y exclamación !.

Comandos de gestión de grupos

sábado, 4 de noviembre de 2023

07 - Estructura de un archivo. Enlaces

Estructura de un archivo

Los archivos (ficheros o directorios) están formados básicamente por tres elementos:

datos
Es la información propiamente dicha que contiene el fichero o directorio.

i-nodo
Es una estructura de datos que almacena información sobre el archivo y que se identifica por un número entero único (i-nodo). Almacena metadatos como el tamaño, UID, GID, número de enlaces, etc.

nombre de archivo
Es un nombre de archivo asociado al i-nodo.

Metadatos de un i-nodo
















Es importante entender que aunque un i-nodo es único y apunta a unos datos determinados puede tener diferentes nombres.

Enlace duro (hard link)

Es cada uno de los diferentes nombres asociados a un mismo i-nodo que como hemos dicho apunta a un único contenido. En términos prácticos son distintos nombres que se le pueden dar a un mismo fichero.

Esquema enlace duro












 


Características enlaces duros
  • El i-nodo y la zona de datos asociada estarán disponibles mientras estén referenciados por algún nombre. Ejemplo, si borras fich_original sigues pudiendo acceder a través de hlink1 y hlink2
  • El tamaño de un enlace duro es mínimo porque no es realmente un fichero nuevo sino un puntero sobre el i-nodo
  • Los permisos y propiedad de todos los enlaces duros son idénticos que los del original
  • Se puede mover un enlace duro pero solo dentro de la misma partición donde se creó
  • No es posible crear enlaces duros a carpetas
Las ventajas de uso de los enlaces duros se basan en la capacidad de tener copias de un fichero en diferentes ubicaciones sin que ocupen espacio en el disco y algunas aplicaciones se aprovechan de esta funcionalidad, copias de seguridad incremental, clasificación de información, etc.

Enlace blando (soft link)

Un enlace simbólico es un fichero independiente cuyo contenido (zona de datos) apunta a la ruta del fichero con el que está vinculado. En términos prácticos se trata de un tipo de fichero "especial" que apunta a otro fichero cuyo contenido es diferente al suyo.

Esquema enlace blando (o simbólico)
















Características enlaces blandos
  • Cómo la zona de datos del enlace blando apunta la ruta de un fichero, si el fichero se elimina o se mueve a otra ubicación el enlace se rompe.
  • El tamaño de un enlace blando ocupa lo que necesita para almacenar la ruta del fichero al que apunta.
  • En GNU/Linux los permisos de los enlaces blandos no tienen efecto y están todos activados
  • Se puede hacer enlaces blandos a ficheros de cualquier partición o ubicación
  • Se permite enlaces blandos a directorios 
  • Son mas lentos que los enlaces duros
Las ventajas de uso de los enlaces blandos se basan en la capacidad de abreviar rutas y enlazar ficheros y directorios desde cualquier parte, lo que permite por ejemplo a los servicios del sistema referenciar ficheros alejados, expandir el sistema de archivos a otras ubicaciones, sincronizar ficheros etc.



viernes, 3 de noviembre de 2023

08 - Permisos especiales

t (sticky bit) - directorios 

Cuando se lo asignamos a un directorio que tiene todos los permisos, conseguimos que los elementos que haya dentro (ficheros o subdirectorios), sólo puedan ser modificados o borrados por el propietario del elemento, el propietario del directorio o el root. El resto de usuarios aunque tenga permisos sobre dichos elementos solo podrá leerlos.

El sistema lo tiene configurado en algunos directorios públicos como por ejemplo /tmp ó /var/tmp. El bit t se activa o desactiva con el comando chmod empleando notación simbólica u octal (sumando 1000 a los permisos).

Activación sticky bit












Antiguamente se usaba también para mantener la imagen de un binario en memoria después de finalizar la ejecución del mismo pero con los avances en el hardware ya no se usa para esta función.

s nivel usuario (SUID)

Cuando el propietario de un binario asigna el atributo s a a la terna de usuario, el resto de usuarios podrá ejecutar el binario con los mismos privilegios que el propietario del binario

Dicho de otra forma, el sistema operativo cree que el que está ejecutando el binario es el propietario del binario en vez del usuario que lo está ejecutando realmente. Se produce lo que se denomina un cambio de dominio temporal a nivel de usuario durante la ejecución del binario.

Pero, ¿a que nos referimos con "los mismos privilegios que el propietario del binario?
Veamos un ejemplo, el binario passwd

Es un binario del sistema, /usr/bin/passwd, que cualquier usuario puede ejecutar para cambiar su contraseña personal. Este binario, como se puede observar, viene con el bit s activado a nivel de usuario.

Si recordamos un poco el tema de las contraseñas, el sistema las gestiona a través de dos ficheros, /etc/passwd y /etc/shadow que solo puede modificar su propietario, el root. No es difícil imaginar que el binario passwd lo que hace es modificar las líneas de dichos ficheros para conseguir su objetivo que es cambiar la contraseña.

¿Cómo es posible entonces, que un usuario normal, pueda modificar ficheros propiedad del root y sobre los que no tiene permisos de escritura?

La explicación es que el binario passwd que intenta la modificación de dichos ficheros tiene activado el SUID y el sistema se cree que el que lo está ejecutando es el propietario del binario que es el root y precisamente el root si tiene permisos para modificar dichos ficheros

Ejemplo de suid en el sistema 









El suid se puede activar con chmod usando notación simbólica u octal (sumando 4000) 


s nivel grupo (SGID)

Cuando el propietario de un binario asigna el atributo s a a la terna de grupo, el resto de usuarios podrá ejecutar el binario con los mismos privilegios que el grupo propietario del binario

Dicho de otra manera, el sistema cree que el usuario que ejecuta el binario tiene como grupo propietario el grupo propietario del binario en vez de el suyo, adquiriendo los privilegios del grupo propietario del binario. Se produce un cambio de dominio temporal a nivel de grupo durante la ejecución del binario.

Se activa o desactiva este bit empleando la notación simbólica de la siguiente manera: chmod g+s binario ó chmod g-s binario. También de forma octal se puede expresar sumando 2000 a los permisos del archivo. Busca un ejemplo en el sistema y razónalo.
 
SGID directorios

En el caso particular de aplicar el bit s a nivel de grupo sobre un directorio, los efectos son que a la hora de crear ficheros en ese directorio, el grupo propietario con el que salen por defecto dichos ficheros no será el grupo propietario del usuario que los crea, como debería ocurrir en situación normal, sino que será el grupo propietario del directorio que los contiene.