Unitat 4 · Administració i Manteniment de Sistemes i Aplicacions (AMSA)
We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: (1) Respect the privacy of others. (2) Think before you type. (3) With great power comes great responsibility. – Output of sudo(8) upon first invocation.
struct cred {
// Identitats reals, efectives i de seguretat
kuid_t uid, euid, suid, fsuid;
// Grups associats
kgid_t gid, egid, sgid, fsgid;
// Capabilities heretables
kernel_cap_t cap_inheritable;
// Capabilities permeses
kernel_cap_t cap_permitted;
// Capabilities actives
kernel_cap_t cap_effective;
// Claus de sessió
struct key *session_keyring;
// Estructura d'usuari global
struct user_struct *user;
};Els attributs euid/egid permet als progames operar amb elevació de privilegis.
| Rang | Categoria | Descripció | Política |
|---|---|---|---|
| 0 | root | Superusuari, privilegis absoluts | Evitar-ne l’ús directe |
| 1–999 | Sistema | dimonis, serveis (nginx, mysql) |
Sense shell interactiu |
| 1000+ | Humans | Usuaris interactius, grups secundaris | PAM, auditoria |
| 65534 | nobody | Sense privilegis | Aïllament de processos |
root)root.
root pot ser catastròfic.sudo: Permet executar comandes com a un altre usuari (per defecte root).
/etc/sudoers mitjançant visudo.su -c comanda: Permet executar una comanda com a un altre usuari incloent root.
| Fitxer | Propietari | Permisos | Contingut |
|---|---|---|---|
/etc/passwd |
root | 644 | uid, gid, comentari, shell (públic) |
/etc/shadow |
root | 600 | hashs de contrasenyes (secret) |
/etc/group |
root | 644 | definicions de grups |
/etc/gshadow |
root | 600 | contrasenyes de grups (rares) |
/etc/passwdEl fitxer /etc/passwd és un fitxer que conté la base de dades d’usuaris del sistema. Cada línia del fitxer descriu un compte d’usuari.
/etc/shadow./etc/group./bin/bash)./etc/passwd: nom:, \n/etc/groupEl fitxer /etc/group és un fitxer que conté la base de dades de grups del sistema. Cada línia del fitxer descriu un grup d’usuaris.
/etc/gshadow. gpasswd/etc/passwd./etc/shadowEl fitxer /etc/shadow és un fitxer que conté la informació de les contrasenyes dels usuaris del sistema. Aquest fitxer és llegible només per l’usuari root i els processos amb privilegis elevats.
| Camp | Descripció | Gestió |
|---|---|---|
| password_hash | Hash (xifrat) de la contrasenya + salt. | |
| change | Data de l’últim canvi (dies des de 01-01-1970). | chage -m |
| min | Dies mínims entre canvis de contrasenya. | chage -m |
| max | Dies màxims abans de l’expiració. | chage -M |
| warn | Dies d’avís abans de l’expiració. | chage -W |
| grace | Dies de gràcia després de l’expiració abans de bloquejar el compte. | chage -I |
| lock | Data d’expiració del compte (Bloqueig). | chage -E |
Els sistemes moderns utilitzen algorismes de hashing forts amb salt.
Normalment el xifrat es configura a /etc/login.defs o /etc/pam.d/common-password. Més endavant veurem PAM i els seus mòduls com pam_pwquality.so.
Fins al moment, els algorismes de xifratge atorguen una seguretat adequada per a la majoria d’aplicacions. Per a entorns amb requisits de seguretat més estrictes, es poden utiltizar mètodes addicionals com l’autenticació de dos factors (2FA) o l’ús de tokens de seguretat. La computació quàntica podria afectar els algorismes actuals en el futur, però encara no és una amenaça immediata per a la majoria dels sistemes.
useraddCreació d’un nou compte d’usuari amb useradd [opcions] [nom_usuari].
| Opció | Clau | Descripció | Aplicació |
|---|---|---|---|
| -c comentari | Comentari | Nom complet o informació addicional. | Identificació d’usuaris. |
-e YYYY-MM-DD |
Expiració | Data de caducitat del compte. | Comptes temporals. |
| -g grup | Grup Primari | Assigna el grup primari de l’usuari. | Gestió de permisos. |
-k /directori/skel |
Esquelet | Especifica un directori d’esquelet diferent. | Configuració personalitzada. |
| -m | Crea Home | Crea el directori home si no existeix. | Aïllament d’usuaris. |
usermod i userdelLa comanda usermod permet modificar un compte d’usuari existent amb usermod [opcions] [nom_usuari]. Les opcions són similars a les de useradd. Per veure les opcions man usermod.
La comanda userdel permet eliminar el compte d’un usuari amb userdel [-r] [nom_usuari] . L’argument r elimina el directori homei la bústia de correu de l’usuari.
La comanda userdel no elimina les dades relacionades amb les tasques cron (crontabs).
passwd (Gestió de Contrasenyes I)passwd
$ passwd
Changing password for jmateo.
(current) UNIX password:12345678
Enter new UNIX password:87654321
Retype new UNIX password:87654321
passwd: password updated successfull
# Show info
$ passwd -S jmateo
# Lock the account
$ passwd -l jmateo
# Unlock the account
$ passwd -u jmateo
# Password change at most every 7 days
$ passwd -n 7 jmateo
# Password change at least every 30 days
$ passwd -x 30 jmateo
# 3 days grace period before password expires
$ passwd -w 3 jmateochage (Gestió de Contrasenyes II)# Crear usuari amb opcions de seguretat avançada
sudo useradd -m -d /home/ana -s /bin/bash \
-c "Ana García" -g developers -G sudo,docker \
-e 2025-12-31 -f 7 ana
# Modificar data de caducitat
sudo usermod -e 2025-06-30 ana
# Bloquejar/desbloquejar compte
sudo passwd -l ana # Lock
sudo passwd -u ana # Unlock
# Consultar estat de la contrasenya i polítiques
sudo chage -l anaRecomanació: Manualment, revisar UIDs actius: awk -F: '$3 >= 1000 {print}' /etc/passwd
/etc/passwd.chmod: Canviant permisoschmod s’utilitza per canviar els permisos d’un fitxer o directori.chmod u+rwx,g+rx,o-r file.txtchmod 755 file.txt (rwxr-xr-x)chmod (I)jordi@debianlab:~$ chmod +x a.txt
jordi@debianlab:~$ ls -la a.txt
-rwxr-xr-x 1 jordi jordi 0 11 de jul. 11:26 a.txt
jordi@debianlab:~$ chmod -x a.txt
jordi@debianlab:~$ ls -la a.txt
-rw-r--r-* 1 jordi jordi 0 11 de jul. 11:26 a.txt
jordi@debianlab:~$ chmod o-r a.txt
jordi@debianlab:~$ ls -la a.txt
-rw-r----* 1 jordi jordi 0 11 de jul. 11:26 a.txt
jordi@debianlab:~$ chmod g+w a.txt
jordi@debianlab:~$ ls -la a.txt
-rw-rw---* 1 jordi jordi 0 11 de jul. 11:26 a.txt
jordi@debianlab:~$ chmod o+w a.txt
jordi@debianlab:~$ ls -la a.txt
-rw-rw--w* 1 jordi jordi 0 11 de jul. 11:26 a.txtchmod (II)jordi@debianlab:~$ chmod a-w a.txt
jordi@debianlab:~$ ls -la a.txt
-r--r----* 1 jordi jordi 0 11 de jul. 11:26 a.txt
jordi@debianlab:~$ echo "a" >> a.txt
-bash: a.txt: S’ha denegat el permís
jordi@debianlab:~$ cat a.txt
jordi@debianlab:~$ chmod +w a.txt
jordi@debianlab:~$ echo "a" >> a.txt
jordi@debianlab:~$ cat a.txt
a
jordi@debianlab:~$ chmod -r a.txt
jordi@debianlab:~$ cat a.txt
cat: a.txt: S’ha denegat el permíschown i chgrp: Canviant propietaris i grupschown s’utilitza per canviar el propietari d’un fitxer o directori.chgrp s’utilitza per canviar el grup associat a un fitxer o directori.# Canviar permisos (simbòlic i octal)
chmod u+rwx,g+rx,o-r fitxer # Simbòlic
chmod 750 fitxer # Octal: rwxr-x---
# Canviar propietari i grup
sudo chown joan:developers fitxer
sudo chgrp developers fitxer
# Aplicar recursivament
## -R per recursiu
## --changes per mostrar canvis
sudo chmod -R 750 /home/joan --changesumaskumask (user file-creation mode mask) és un valor que determina els permisos per defecte dels fitxers i directoris nous creats per un usuari.S’aconsella utilitzar una umask 0002 en entorns on els usuaris treballen en grups, ja que permet als membres del grup escriure als fitxers creats per altres membres del mateix grup. Això facilita la col·laboració i l’intercanvi de fitxers dins del grup.
Els programes amb setuid poden ser un vector d’atac si tenen vulnerabilitats. Es important auditar-los periòdicament.
/tmpProblema: Tres usuaris (alice, bob, charlie) necessiten permisos diferents sobre un fitxer, però el model tradicional només permet propietari, grup, altres.
Solució: ACL (Access Control Lists)
# Comandes bàsiques per gestionar ACLs
setfacl -m u:usuari:rwx fitxer # Assigna permisos rwx a un usuari específic
getfacl fitxer # Mostra les ACLs
setfacl -x u:usuari fitxer # Elimina les ACLs d'un usuari específic
setfacl -d -m g:grup:rwx directori # Assigna permisos per defecte a un grup en un directori per als fitxers nousLa herencia d’ACL és especialment útil en entorns col·laboratius on diversos usuaris necessiten accedir i modificar fitxers dins d’un directori compartit. Permet establir polítiques de permisos coherents i assegurar que els nous fitxers i directoris creats dins del directori heretin els permisos adequats.
L’ordre de precedència:
Aquesta jerarquia assegura que els permisos més específics tinguin prioritat sobre els més generals.
sudosudo permet executar comandes amb els privilegis d’un altre usuari (per defecte root)./etc/sudoers mitjançant l’eina visudo.L’usuari joan pot reiniciar el servei apache2 sense necessitat de proporcionar la contrasenya.
# Definir alias per a reutilització
Cmnd_Alias RESTART = /usr/bin/systemctl restart *, /usr/bin/systemctl reload *
User_Alias SYSADMINS = joan, anna, pere
Host_Alias SERVERS = web01, web02
# Política: els sysadmins poden reiniciar serveis sense password
SYSADMINS SERVERS = NOPASSWD: RESTART
# Restricció per hora (integrada amb PAM)
joan web01 = (root) Cmnd=/usr/sbin/reboot [1-5/09:00-18:00]sudo# En lloc de setuid root, es pot utilitzar capabilities
# Exemple: ping no necessita root complet
getcap /usr/bin/ping
# Si es necessita, assignar capability específica
sudo setcap cap_net_raw+p /usr/bin/ping
# Capabilities comunes
# CAP_NET_BIND_SERVICE: obrir ports < 1024
# CAP_SYS_ADMIN: admin del sistema (omnibus)
# CAP_SETUID: canviar UID
# CAP_DAC_OVERRIDE: ignorar DACAvantatge: Menor superfície d’atac que setuid.
# Crear namespace d'usuari per aïllament
unshare --user --map-root-user --mount-proc bash
# Dins del namespace: sou root (UID 0 local)
# Però sense privilegis globals del sistema
# Fonament de contenidors: processos aïllats per UID
docker run --user=nobody:nogroup ubuntu id
# uid=65534(nobody) gid=65534(nogroup)Cas d’ús: Aïllament de microserveis i entorns CI/CD.

Unitat 4 · Administració i Manteniment de Sistemes i Aplicacions (AMSA) 🏠