Vam tancar el Mòdul 4 amb una llista de deutes, i aquesta lliçó salda el primer i el més incòmode: svc-tramontana existeix «per art de màgia» i el grup tramontana no existeix en absolut. Has estat escrivint chown svc-tramontana:tramontana sobre fitxers el grup dels quals ningú no havia creat mai. Això avui s'acaba. Veuràs què és de debò una identitat a Linux —un número, no un nom—, quins fitxers són la font de la veritat i què conté cada camp, com es creen comptes de persona i comptes de servei (que no s'assemblen en res), i per què l'error més car de tot el mòdul cap en una lletra que falta: usermod -G en lloc de usermod -aG.

Contingut

  1. El model d'identitat: UID, GID i grups suplementaris
  2. Els quatre fitxers de la veritat, camp a camp
  3. Tipus de compte i el rang d'UID de /etc/login.defs
  4. Crear usuaris: useradd, adduser i /etc/skel
  5. Contrasenyes: fixar, bloquejar i el significat de ! i *
  6. Modificar i esborrar comptes, i els fitxers orfes
  7. Caducitat de comptes amb chage
  8. Grups: crear, modificar i per què cal reobrir sessió
  9. Comptes de servei: per què l'aplicació mai no corre com a root
  10. Auditoria: qui és qui i qui ha entrat
  11. Cas Tramontana: saldar el deute del mòdul anterior

  1. El model d'identitat: UID, GID i grups suplementaris

El nucli no sap què és operador. El nucli només maneja números:

  • UID (User ID): identifica l'usuari. El propietari d'un fitxer és un número guardat a l'inode, no una cadena.
  • GID (Group ID): identifica un grup. Cada usuari té un grup primari (el que hereta un fitxer nou que crea) i zero o més grups suplementaris.

Els noms només existeixen per a la nostra comoditat, i la traducció número→nom la fa la biblioteca del sistema llegint /etc/passwd i /etc/group. Per això, si esborres un usuari, ls -l comença a mostrar números crus: el fitxer conserva l'UID 1003 encara que ja ningú no es digui així.

$ id operador
uid=1000(operador) gid=1000(operador) groups=1000(operador),4(adm),27(sudo)

Llegeix-ho així: operador és el 1000, el seu grup primari és operador (1000) i pertany a més a adm i sudo com a suplementaris. Aquesta distinció importa:

El primari es defineix al camp 4 de /etc/passwd i és el que s'assigna als fitxers que l'usuari crea; els suplementaris es defineixen al camp 4 de /etc/group i només amplien l'accés. El grup efectiu d'un procés es pot canviar en calent amb newgrp o sg.

A Ubuntu, per defecte cada usuari rep un grup propi amb el seu mateix nom (esquema UPG, User Private Group). No és un caprici: permet treballar amb umask 002 sense exposar els fitxers a mitja màquina, perquè «el grup» ets només tu.

  1. Els quatre fitxers de la veritat, camp a camp

/etc/passwd — qui existeix

Set camps separats per :. És llegible per tothom (644) perquè qualsevol procés necessita traduir UID a nom per a un simple ls -l.

$ grep -E '^(root|operador|svc-tramontana):' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operador:x:1000:1000:Operador Tramontana,,,:/home/operador:/bin/bash
svc-tramontana:x:997:1002:Servei Tramontana Reserves:/opt/tramontana:/usr/sbin/nologin
# Camp Exemple Notes
1 Nom d'accés operador Únic; en minúscules per convenció
2 Contrasenya x La x significa «és a /etc/shadow»
3 UID 1000 El que de debò importa
4 GID primari 1000 Apunta a /etc/group
5 GECOS Operador Tramontana,,, Nom real, despatx, telèfons; ho edita chfn
6 i 7 Home i shell /home/operador, /bin/bash El home pot no existir en comptes de sistema; /usr/sbin/nologin per a qui no ha d'entrar

/etc/shadow — el secret

Nou camps. Permisos 640, propietat root:shadow: llegible per root i pel grup shadow, invisible per a la resta. Allà hi ha el resum criptogràfic, i un resum llegible per qualsevol és un resum que algú acabarà trencant amb una GPU.

$ sudo grep -E '^(operador|svc-tramontana):' /etc/shadow
operador:$y$j9T$Qk3rP0mZ7uY2xB1c$Fq8sT...ZR1:20310:0:90:7:14::
svc-tramontana:!:20310:0:99999:7:::
# Camp Valor de l'exemple Significat
1 Usuari operador Enllaça amb passwd
2 Resum (hash) $y$j9T$... Vegeu-ho més avall
3 Últim canvi 20310 Dies des de l'1-01-1970
4 i 5 Mínim i màxim 0 / 90 Dies abans de poder canviar-la i dies de validesa
6 i 7 Avís i inactivitat 7 / 14 Avís previ i gràcia després de caducar abans d'inhabilitar
8 i 9 Caducitat del compte i reservat (buits) Data absoluta en dies des de 1970; el 9 no s'utilitza

El resum té format $id$paràmetres$sal$hash. A Ubuntu 24.04 l'algorisme per defecte és yescrypt ($y$), que va substituir SHA-512 ($6$) per ser resistent a atacs amb GPU i ASIC gràcies al seu cost en memòria:

Prefix Algorisme Estat
$y$ yescrypt Per defecte a Ubuntu 24.04
$6$ SHA-512 Encara vàlid; heretat
! o !$y$... Compte bloquejat El resum pot continuar a sota
* Sense contrasenya utilitzable Típic de comptes de sistema
(buit) Sense contrasenya: hi entra qualsevol Perill real, corregeix-ho ja

/etc/group i /etc/gshadow

$ getent group tramontana adm sudo
tramontana:x:1002:operador,luis,svc-tramontana
adm:x:4:syslog,operador
sudo:x:27:operador

Quatre camps: nom, contrasenya (x), GID i llista de membres suplementaris. Compte: qui tingui aquest grup com a primari no apareix en aquesta llista. /etc/gshadow (640, root:shadow) guarda la contrasenya del grup —una raresa que gairebé ningú no fa servir— i els administradors del grup, que poden afegir membres amb gpasswd sense ser root.

  1. Tipus de compte i el rang d'UID de /etc/login.defs

Tipus UID Exemples Trets
Superusuari 0 root Se salta tota comprovació de permisos
Sistema / servei 1–999 daemon, syslog, svc-tramontana (997) Sense accés, sense caducitat, creats amb -r
Persona ≥ 1000 operador (1000), luis (1001) Home, shell, contrasenya, caducitat
nobody 65534 nobody Identitat mínima per a processos sense privilegi

Qui decideix aquests rangs és /etc/login.defs:

$ grep -E '^(UID_MIN|UID_MAX|SYS_UID_MIN|SYS_UID_MAX|ENCRYPT_METHOD|UMASK|PASS_MAX_DAYS)' /etc/login.defs
PASS_MAX_DAYS	99999
UID_MIN			 1000
UID_MAX			60000
SYS_UID_MIN		  100
SYS_UID_MAX		  999
ENCRYPT_METHOD YESCRYPT
UMASK			022

L'important: UID 0 és root no pel nom, sinó pel número. Si crees un segon compte amb UID 0, tens dos roots i cap auditoria que els distingeixi a l'inode. No ho facis mai.

  1. Crear usuaris: useradd, adduser i /etc/skel

useradd és l'eina de baix nivell de la suite shadow: fa exactament el que li demanes, ni una cosa més. Les seves opcions clau:

Opció Efecte
-m Crea el home i copia /etc/skel (sense ella, no hi ha home)
-d RUTA Home diferent del predeterminat
-s SHELL Shell d'accés
-u UID UID concret
-g GRUP Grup primari
-G g1,g2 Grups suplementaris
-c "TEXT" Camp GECOS; -N evita crear el grup propi
-r Compte de sistema: UID del rang baix, sense caducitat, sense home tret de -m
$ sudo useradd -m -s /bin/bash -c "Luis Ferrer,Desenvolupament,,," luis
$ sudo passwd luis
New password:
Retype new password:
passwd: password updated successfully

adduser és un script en Perl de Debian que embolcalla useradd i fa el que un humà espera: tria l'UID lliure, crea el home amb permisos correctes, crea el grup propi, copia /etc/skel, pregunta la contrasenya i omple el GECOS de manera interactiva. Comparació honesta:

Aspecte useradd adduser
Portabilitat Universal a Linux Només Debian/Ubuntu
Interactiu No Sí (ideal a mà)
Home Només amb -m Sempre
Contrasenya A part, amb passwd La demana
Scripts Sí, aquesta és la bona Requereix --disabled-password i compte

Regla pràctica: a mà, adduser; en un script, useradd, perquè el seu comportament no depèn d'un fitxer de configuració distribuït.

/etc/skel (que a Ubuntu conté .bashrc, .profile i .bash_logout) és la plantilla del home: tot el que hi ha a dins es copia en crear el compte amb -m. És el lloc per imposar un .bashrc corporatiu o l'indicador vermell de producció del Mòdul 3.

  1. Contrasenyes: fixar, bloquejar i el significat de ! i *

passwd                       # la pròpia: demana l'actual abans de canviar-la
sudo passwd luis             # root canvia la de qualsevol sense saber l'anterior
echo 'luis:UnaClauLlargaIUnica' | sudo chpasswd   # en lot, no interactiu
sudo passwd -e luis          # forçar el canvi en el proper accés (= chage -d 0)

Bloquejar i desbloquejar:

sudo passwd -l luis          # anteposa '!' al resum
sudo passwd -S luis          # -> luis L 2026-08-18 0 99999 7 -1
sudo passwd -u luis          # treu el '!' i restaura el resum original

La L de passwd -S és «locked»; P seria contrasenya utilitzable i NP sense contrasenya, que és una emergència.

Contingut del camp 2 Significat Es pot tornar enrere?
$y$... Contrasenya vàlida —
!$y$... Bloquejada: el resum està intacte a sota Sí, passwd -u
! Bloquejada i sense resum a restaurar No, cal fixar-ne una de nova
* Mai no va tenir contrasenya; accés per contrasenya impossible No aplica
(buit) Hi entra sense escriure res Corregeix-ho immediatament

usermod -L fa el mateix que passwd -l sobre el resum. La diferència pràctica no és entre ells, sinó en el que cap dels dos fa: bloquejar la contrasenya no impedeix entrar per clau SSH, ni mata les sessions obertes. Per a una baixa de personal de debò cal la combinació completa:

sudo usermod -L -e 1 -s /usr/sbin/nologin luis   # bloqueja, caduca el compte i treu el shell
sudo pkill -u luis                               # tanca el que tingués obert

-e 1 fixa la caducitat al 2 de gener de 1970: el compte queda expirat i PAM rebutja l'accés vingui per on vingui.

  1. Modificar i esborrar comptes, i els fitxers orfes

usermod canvia el que ja existeix. I aquí hi ha l'error clàssic del mòdul:

# MALAMENT: substitueix TOTS els grups suplementaris per 'tramontana'
sudo usermod -G tramontana operador

# BÉ: afegeix sense tocar els que ja tenia
sudo usermod -aG tramontana operador

Sense la -a (append), operador surt de sudo i d'adm en el mateix instant. Si a sobre la sessió de root estava tancada, acabes de perdre l'administració de la màquina i toca arrencar en mode de recuperació. Comprova sempre abans i després amb id.

Altres usos habituals:

sudo usermod -c "Luis Ferrer,Desenvolupament,,," luis   # GECOS
sudo usermod -l lferrer luis                            # reanomenar l'accés (no mou el home)
sudo usermod -d /home/lferrer -m lferrer                # moure el home amb el seu contingut

Esborrar:

sudo userdel luis          # esborra el compte, conserva el home
sudo userdel -r luis       # esborra també el home i la bústia de correu

userdel -r no troba el que l'usuari va deixar fora del seu home: un fitxer a /srv, un cron, un temporal. Aquests fitxers queden amb un UID sense nom i, pitjor encara, el següent usuari que rebi aquest UID n'heretarà la propietat. Auditoria obligatòria abans de reassignar:

$ sudo find / -xdev \( -nouser -o -nogroup \) 2>/dev/null
$ sudo find /srv /opt /var -xdev -uid 1001 2>/dev/null
/srv/tramontana/backups/temporals/informe-luis.csv

Avís de compliment. Les altes i baixes de personal no són una tasca tècnica aïllada: en un entorn real han de seguir un procediment aprovat (qui autoritza, en quin termini es revoca l'accés, què es fa amb els fitxers de l'empleat, que poden contenir dades personals d'hostes). Documenta cada alta i cada baixa amb data i autoritzant, i que el responsable de seguretat o de compliment (RGPD) validi el procediment abans d'aplicar-lo.

  1. Caducitat de comptes amb chage

chage maneja els camps 3 a 8 de /etc/shadow sense que hagis de comptar dies des de 1970.

$ sudo chage -l operador
Last password change					: Aug 18, 2026
Password expires						: Nov 16, 2026
Password inactive						: Nov 30, 2026
Account expires							: never
Maximum number of days between password change		: 90
Opció Efecte
-M 90 Validesa màxima de la contrasenya
-m 1 Mínim entre canvis (evita rotar-la cinc vegades per tornar a la mateixa)
-W 7 Dies d'avís
-I 14 Dies de gràcia després de caducar
-E 2026-12-31 Data de caducitat del compte (contractes temporals)
-d 0 Força el canvi en el proper inici de sessió
sudo chage -M 90 -m 1 -W 7 -I 14 operador

La política de contrasenyes de debò —longitud mínima, complexitat, diccionari, historial— no viu aquí: la imposa PAM amb pam_pwquality, i és matèria de 06-06. chage només posa els terminis.

  1. Grups: crear, modificar i per què cal reobrir sessió

sudo groupadd -g 1002 tramontana     # GID explícit, reproduïble entre màquines
sudo groupmod -n tramontana-app tramontana   # reanomenar
sudo groupdel grup-vell              # falla si és primari d'algú

sudo gpasswd -a luis tramontana      # afegir un membre
sudo gpasswd -d luis tramontana      # treure'l
sudo gpasswd -A operador tramontana  # 'operador' pot administrar el grup sense ser root

gpasswd -a i usermod -aG fan el mateix; gpasswd té l'avantatge de no admetre l'error de la -a oblidada, perquè la seva sintaxi sempre és additiva.

I ara el detall que fa perdre tardes senceres: afegir algú a un grup no afecta les seves sessions obertes.

$ sudo usermod -aG tramontana operador
$ id operador   # la base de dades: ja hi surt 1002(tramontana)
$ id            # LA TEVA sessió: encara no hi surt
uid=1000(operador) gid=1000(operador) groups=1000(operador),4(adm),27(sudo)

La raó és que els grups suplementaris es fixen en el moment de l'accés, queden gravats a les credencials del procés i s'hereten als fills. Cap fitxer de configuració no canviarà un procés que ja s'està executant. Les sortides:

newgrp tramontana    # obre un subshell amb el grup nou (solució d'emergència)
exec su - "$USER"    # reentrada neta al mateix lloc

El correcte és tancar la sessió i tornar a entrar. I el mateix val per als serveis: si canvies els grups de svc-tramontana, cal reiniciar el servei, no n'hi ha prou a recarregar.

  1. Comptes de servei: per què l'aplicació mai no corre com a root

Una aplicació exposada al port 8080 és la porta d'entrada més probable al teu servidor. Si corre com a root, qualsevol fallada d'execució remota és game over: la màquina sencera. Si corre com a svc-tramontana, l'atacant hereta una identitat que no pot llegir /etc/shadow, no pot escriure a /etc, no pot instal·lar res i no pot llegir els fitxers d'altres usuaris.

El que distingeix un compte de servei:

  • UID de sistema (-r, per sota de 1000) i sense caducitat: un compte de servei que caduca tomba el servei a les 3 de la matinada.
  • Sense shell d'accés: /usr/sbin/nologin (imprimeix un missatge i surt amb error) o /bin/false.
  • Sense contrasenya utilitzable (! o * a shadow) i sense home propi: normalment apunta al directori de l'aplicació.

  1. Auditoria: qui és qui i qui ha entrat

Ordre Respon a
id [usuari] UID, GID i grups segons la base de dades
groups [usuari] Només els noms de grup
getent passwd luis Consulta totes les fonts (/etc/passwd, LDAP…), no només el fitxer
getent group tramontana El mateix per a grups
who / w Qui està connectat ara; w afegeix la càrrega i què executa
last -n 5 Historial d'accessos (llegeix /var/log/wtmp)
lastlog Últim accés de cada compte; delata comptes morts
$ w | tail -2
operador pts/0    10.0.2.1         09:02    0.00s  0.09s  0.01s w
luis     pts/1    10.0.2.1         08:47   12:03   0.04s  0.04s -bash

getent sempre és preferible a grep /etc/passwd: el dia que l'empresa afegeixi un directori corporatiu, grep mentirà i getent continuarà dient la veritat.

  1. Cas Tramontana: saldar el deute del mòdul anterior

Estat de partida a srv-tramontana: operador (1000) i luis (1001) existeixen; svc-tramontana i el grup tramontana no, encara que mig mòdul en parlava. Ho arreglem en ordre, i amb còpia prèvia dels fitxers d'identitat tal com mana la convenció del curs.

sudo cp -a /etc/passwd /etc/passwd.bak-$(date +%F)   # còpia prèvia, com sempre
sudo cp -a /etc/group  /etc/group.bak-$(date +%F)
# 1) El grup compartit, amb GID fix perquè coincideixi a totes les màquines
sudo groupadd -g 1002 tramontana

# 2) El compte de servei: sistema, sense shell, sense home propi, sense contrasenya
sudo useradd -r -u 997 -g tramontana \
    -d /opt/tramontana -M \
    -s /usr/sbin/nologin \
    -c "Servei Tramontana Reserves" svc-tramontana
# 3) Les persones que treballen amb l'aplicació entren al grup
sudo usermod -aG tramontana operador
sudo usermod -aG tramontana luis

-M impedeix crear el home: /opt/tramontana ja existeix i no volem que useradd hi aboqui /etc/skel a sobre. Verifiquem abans de tocar res més:

$ getent passwd svc-tramontana && getent group tramontana
svc-tramontana:x:997:1002:Servei Tramontana Reserves:/opt/tramontana:/usr/sbin/nologin
tramontana:x:1002:operador,luis

Ara la propietat dels directoris, que fins avui era una promesa:

sudo chown -R svc-tramontana:tramontana /opt/tramontana
sudo chown -R operador:tramontana /srv/tramontana/backups
sudo chmod -R u=rwX,g=rX,o= /opt/tramontana
sudo chmod -R u=rwX,g=rwX,o= /srv/tramontana/backups
sudo chmod 2770 /opt/tramontana/shared/uploads

ls -ld /opt/tramontana /opt/tramontana/app /srv/tramontana/backups
drwxr-x---  5 svc-tramontana tramontana 4096 Aug 18 09:20 /opt/tramontana
lrwxrwxrwx  1 svc-tramontana tramontana   22 Aug 12 18:02 /opt/tramontana/app -> releases/3.2.1
drwxrwx---  5 operador       tramontana 4096 Aug 18 04:20 /srv/tramontana/backups

Fixa't en l'o=: ningú de fora del grup no veu res, aplicant la convenció de «grup compartit en comptes de permisos a altres». Aquell 2 de 2770 a uploads és el bit SGID, que fa que tot el que es creï a dins pertanyi al grup tramontana sense dependre de qui ho creï; el desglossem a la lliçó següent.

I la documentació, que és part de la feina:

sudo tee -a /opt/tramontana/HISTORIAL >/dev/null <<'FI'
2026-08-18  Formalització d'identitats (operador)
  - groupadd -g 1002 tramontana ; useradd -r -u 997 ... svc-tramontana
  - operador i luis afegits a 'tramontana' (cal reobrir sessió)
  - chown svc-tramontana:tramontana /opt/tramontana ; operador:tramontana als backups
FI

Errors Comuns i Consells

  • usermod -G sense -a. L'error més car de la lliçó: substitueix la llista sencera i pot treure't de sudo. Abans de tocar grups, guarda la sortida d'id usuari; després, compara-la.
  • Esperar que un grup nou funcioni a la sessió actual. No passarà. id usuari consulta la base de dades, id a seques consulta la teva sessió. Tanca i obre sessió, i reinicia els serveis afectats.
  • Editar /etc/passwd o /etc/shadow amb nano. Fes servir vipw i vipw -s (i vigr per als grups): bloquegen el fitxer i en validen la sintaxi en sortir. Un shadow corromput és un servidor on no entra ningú.
  • Crear el compte de servei amb shell. Si svc-tramontana té /bin/bash, qualsevol via que aconsegueixi executar com ell aconsegueix un shell interactiu. nologin no és cosmètica.
  • Confondre bloquejar amb deshabilitar. passwd -l no impedeix l'accés per clau SSH. Per a una baixa: usermod -L -e 1 -s /usr/sbin/nologin i pkill -u. I no reutilitzis l'UID d'un compte esborrat sense auditar abans amb find -uid.
  • Consell: fixa els UID i GID de servei (997, 1002) explícitament i anota'ls. El dia que restauris una còpia en una altra màquina, els números han de coincidir o els permisos es descol·locaran en bloc.

Exercicis

  1. Alta completa d'un becari. Crea el compte becari amb useradd: home propi, shell Bash, GECOS «Becari Operacions», membre suplementari de tramontana, contrasenya que s'hagi de canviar en el primer accés i caducitat del compte el 31 de desembre de 2026. Verifica-ho tot sense obrir-hi sessió.
  2. Diagnòstic d'un desastre. Algú ha executat sudo usermod -G tramontana operador. Descriu el símptoma exacte que veurà operador en el seu següent inici de sessió, com ho confirmaries i com ho repares si ja no tens sudo.
  3. Auditoria de comptes. Escriu una ordre que llisti, a partir de /etc/passwd, únicament els comptes de persona (UID ≥ 1000, excloent-hi nobody) amb el seu shell, i una altra que detecti comptes amb contrasenya buida a /etc/shadow.

Solucions

1.

sudo useradd -m -s /bin/bash -G tramontana -c "Becari Operacions,,," becari
echo 'becari:Provisional.2026!' | sudo chpasswd
sudo chage -d 0 -E 2026-12-31 becari     # -d 0 força el canvi; -E caduca el compte
$ id becari
uid=1004(becari) gid=1004(becari) groups=1004(becari),1002(tramontana)
$ sudo chage -l becari | grep Account
Account expires							: Dec 31, 2026

Aquí -G sense -a és correcte, perquè el compte s'està creant i no hi ha grups previs a perdre. La -a només importa a usermod.

2. El símptoma: operador inicia sessió amb normalitat, però qualsevol sudo respon operador is not in the sudoers file. This incident will be reported., i a més perd l'accés de lectura als registres que li donava adm. Confirmació:

$ id operador
uid=1000(operador) gid=1000(operador) groups=1000(operador),1002(tramontana)

Falten 4(adm) i 27(sudo). Reparació amb privilegis: sudo usermod -aG adm,sudo operador i reobrir sessió. Sense sudo i sense cap altre compte administrador, no hi ha drecera des de dins: cal reiniciar la VM, editar l'entrada de GRUB per arrencar amb init=/bin/bash, tornar a muntar l'arrel amb mount -o remount,rw / i executar usermod -aG adm,sudo operador. Aquest procediment de recuperació es veu a fons a 07-01; que existeixi és precisament la raó que l'accés físic o a la consola de la VM sigui, en si mateix, accés d'administrador.

3.

$ awk -F: '$3 >= 1000 && $3 != 65534 { printf "%-10s uid=%-6s %s\n", $1, $3, $7 }' /etc/passwd
operador   uid=1000   /bin/bash
luis       uid=1001   /bin/bash
becari     uid=1004   /bin/bash
sudo awk -F: '$2 == "" { print "SENSE CONTRASENYA:", $1 }' /etc/shadow   # contrasenyes buides

El silenci a la sortida significa que no n'hi ha cap, que és exactament el que vols veure: la convenció de «silenci si tot va bé» aplicada a una auditoria.

Conclusió

Ja no queda màgia a les identitats de srv-tramontana. Saps que un usuari és un número; llegeixes els nou camps de /etc/shadow, reconeixes un resum $y$ de yescrypt i distingeixes !, * i el camp buit; separes comptes de sistema de comptes de persona pel rang d'UID de /etc/login.defs; crees comptes amb useradd en scripts i amb adduser a mà, sabent què aporta /etc/skel; fixes terminis amb chage i deixes la política de contrasenyes per a 06-06; i has interioritzat que usermod -G sense -a és una manera ràpida de perdre la màquina i que un grup nou no existeix fins que es reobre la sessió.

I, sobretot, has saldat el deute: el grup tramontana (gid 1002) existeix, svc-tramontana (uid 997) és un compte de sistema real sense shell ni contrasenya, operador i luis són al grup, /opt/tramontana i /srv/tramontana/backups tenen amo i el canvi està anotat a l'HISTORIAL.

Falta l'altra meitat de l'equació. Tens identitats, però sudo continua sent una paraula màgica que escrius sense saber qui decideix què et permet fer, i els bits estranys que vas veure de reüll a 02-07 —aquella s en lloc de la x— continuen sense explicació, encara que n'acabes de fer servir un en posar 2770 a uploads. A la lliçó següent, sudo i Permisos Especials, s'acaben totes dues coses: escriuràs una regla de sudoers que permeti a operador reiniciar i desplegar l'aplicació sense ser root, entendràs SUID, SGID i el bit sticky de debò, substituiràs un SUID per capabilities perquè l'aplicació pugui escoltar al port 80, i donaràs al Luis accés als registres amb una ACL sense ficar-lo al grup adm.

Curs de Linux: De Principiant a Administrador de Sistemes

Mòdul 1: Introducció a Linux

Mòdul 2: Comandes Bàsiques de Linux

Mòdul 3: Habilitats Avançades en la Línia de Comandes

Mòdul 4: Scripting en Shell

Mòdul 5: Administració del Sistema

Mòdul 6: Xarxes i Seguretat

Mòdul 7: Temes Avançats

Mòdul 8: Projectes Pràctics

© Copyright 2026. Tots els drets reservats