Unitat 2 · Administració i Manteniment de Sistemes i Aplicacions (AMSA)
Quan s’acaba el procés d’inicialització del sistema en l’espai del kernel i es descomprimeix i executa l’initramfs, es produeix una transició important cap a l’espai d’usuari.
switch_root
substitueix l’arrel del sistema de fitxers actual (l’initramfs) per la partició arrel real del sistema operatiu.El canvi de SysVinit a Systemd en moltes distribucions de Linux va ser motivat per la necessitat de millorar l’eficiència i la gestió dels serveis del sistema.
Recents vulnerabilitats en paquets com xz-utils han posat en evidència la complexitat de Systemd i com una backdoor ocult pot comprometre gran part de la infraestructura moderna de Linux.
CVE-2024-3094: Vulnerabilitat que permet l’execució de codi maliciós en el sistema mitjançant un defecte en la descompressió de fitxers .xz.
Aquesta vulnerabilitat va afectar molts servidors Linux, que van actualitzar xz-utils amb la versió compromesa.
Aquests esdeveniments posen de manifest les contrapartides de la complexitat de Systemd i com una vulnerabilitat en un paquet aparentment inofensiu com xz-utils pot tenir un impacte significatiu en la seguretat del sistema i serveis crítics com sshd.
El PID 1 executa els targets de systemd o runlevels d’init. Els targets representen un conjunt de serveis i mòduls que s’executen per a cada estat del sistema. La seva funció és definir l’estat del sistema i els serveis que s’han de carregar en aquest estat. La transició entre els targets es pot fer manualment amb la comanda systemctl isolate
o automàticament amb la comanda systemctl set-default
.
Els units són els fitxers de configuració de systemd que defineixen els serveis, ens permeten gestionar-los i controlar-los.
/etc/systemd/system/
: Fitxers d’unitat personalitzats per l’administrador./run/systemd/system/
: Configuració en temps d’execució, és a dir, afecta només un arrencada única./usr/lib/systemd/system/
: Configuració proporcionada per la distribució. A Debian és /lib/systemd/system/
.Quan hi ha dos fitxers de configuració amb el mateix nom, systemd carregarà només un des del directori que estigui més alt en la jerarquia. Per exemple, la configuració a /etc
sempre sobreescriu la configuració a /usr
.
Després de canviar la configuració, és necessari recarregar systemd amb: systemctl daemon-reload
.
/etc/systemd/system/sshd.service
(servei SSH).After=network.target
), ja que sovint es connecta a impressores de xarxa./usr/sbin/cupsd -l
, que posa en marxa el servei d’impressió.WantedBy=printer.target
).Cups.socket
és una unitat de tipus socket que permet a CUPS escoltar connexions entrants per a serveis d’impressió.Cups.path
és una unitat de tipus path que monitoritza canvis en fitxers o directoris relacionats amb la configuració d’impressió.Les unitats són objectes gestionats per systemd. Les dependències són associacions entre elles. Cada tipus d’unitat té algunes dependències per defecte (a menys que s’especifiqui el contrari).
Cada vegada que l’usuari o un servei sol·licita una acció (per exemple, iniciar o aturar un servei), es crea una transacció que gestiona l’execució ordenada de les unitats afectades.
Garanteix que les unitats es gestionin de manera atòmica i ordenada, permetent a systemd paral·lelitzar serveis mentre respecta les dependències.
systemctl
(I)La comanda systemctl
és l’eina principal per interactuar amb systemd i gestionar els serveis i unitats del sistema. Algunes de les operacions més comunes inclouen:
Comanda | Descripció |
---|---|
systemctl start <unit> |
Inicia una unitat (servei, socket, etc.). |
systemctl stop <unit> |
Atura una unitat. |
systemctl restart <unit> |
Reinicia una unitat. |
systemctl status <unit> |
Mostra l’estat actual d’una unitat. |
systemctl enable <unit> |
Habilita una unitat perquè s’iniciï automàticament en arrencar el sistema. |
systemctl disable <unit> |
Deshabilita una unitat perquè no s’iniciï automàticament. |
systemctl is-active <unit> |
Comprova si una unitat està activa. |
systemctl is-enabled <unit> |
Comprova si una unitat està habilitada per arrencar automàticament. |
systemctl
(II)Comanda | Descripció |
---|---|
systemctl list-units |
Llista totes les unitats carregades actualment. |
systemctl list-unit-files |
Llista tots els fitxers d’unitats disponibles. |
systemctl list-dependencies <SERVICE> |
Mostra les dependències d’una unitat. |
systemctl list-jobs |
Mostra les feines pendents i en execució. |
INSTALL
][Install]
defineix com s’instal·la i s’inicia una unitat.WantedBy=multi-user.target
indica que aquesta unitat s’ha d’iniciar quan s’arrenca el sistema en mode multiusuari (runlevel 3).Also=
permet associar altres unitats que s’han d’iniciar juntament amb aquesta.Alias=
crea un nom alternatiu per a la unitat, facilitant la seva referència.Service
] (I)Opció | Descripció |
---|---|
Type= |
Defineix el tipus de servei (simple, forking, oneshot, notify, idle). |
ExecStart= |
Comanda que s’executa per iniciar el servei. |
ExecStop= |
Comanda que s’executa per aturar el servei. |
ExecReload= |
Comanda que s’executa per recarregar la configuració del servei. |
RemainAfterExit= |
Indica si el servei es manté actiu després de finalitzar. |
Restart= |
Defineix si el servei s’ha de reiniciar en cas de fallada. |
User= |
Defineix l’usuari amb el qual s’executa el servei. |
Group= |
Defineix el grup amb el qual s’executa el servei. |
Service
] (II)Opció | Descripció |
---|---|
Environment= |
Defineix variables d’entorn per al servei. |
WorkingDirectory= |
Defineix el directori de treball del servei. |
PIDFile= |
Especifica el fitxer que conté el PID del servei. |
TimeoutStartSec= |
Temps d’espera per a l’inici del servei. |
TimeoutStopSec= |
Temps d’espera per a l’aturada del servei. |
StandardOutput= |
Defineix on s’envia la sortida estàndard del servei. |
StandardError= |
Defineix on s’envia l’error |
fork()
. No espera cap senyal de que el servei estigui llest.Un cop s’han carregat tots els serveis i el sistema està en marxa, els usuaris poden iniciar sessió al sistema. Els scripts de l’usuari es troben a la carpeta /etc/profile.d/
i s’executen quan l’usuari inicia sessió.
Take Home Message
El procés d’arrencada és un procés complex. Els administradors de sistemes han de conèixer aquest procés per poder gestionar i solucionar problemes durant l’arrencada del sistema i garantir un sistema segur, estable i eficient.
Unitat 2 · Administració i Manteniment de Sistemes i Aplicacions (AMSA) 🏠