Mòdul 0224 – Sistemes operatius en xarxa

Cicle formatiu: Sistemes Microinformàtics i Xarxes (SMX)

Durada: 198 h (132 h centre + 66 h empresa)

Entorn: Windows Server 2025 + Ubuntu Server

1. Instal·lació de sistemes operatius en xarxa

1.1. Comprovació dels requisits tècnics

Abans d’instal·lar qualsevol sistema operatiu de servidor cal verificar que el maquinari compleix els requisits mínims i recomanats.

Windows Server 2025 – Requisits

Component Mínim Recomanat
Processador 1,4 GHz, 64 bits 2 GHz o superior, múltiple nucli
RAM 512 MB (Core) / 2 GB (Desktop) 8 GB o més
Disc 32 GB 100 GB o més
Xarxa 1 adaptador Ethernet (Gigabit recomanat)

Ubuntu Server 26.04 – Requisits

Component Mínim Recomanat
Processador 1 GHz, 64 bits 2 GHz o superior
RAM 1,5 GB 3 GB o més
Disc 5 GB 25 GB o més
Xarxa 1 adaptador Ethernet

Estudi de compatibilitat

1.2. Particions i sistemes d’arxius

Tipus de particions

Tipus Descripció
Primària Màxim 4 per disc MBR. Pot contenir un SO.
Estesa Contenidor de particions lògiques (MBR). Compta com una primària.
Lògica Particions dins de l’estesa.
GPT Fins a 128 particions primàries. Necessari per a discs > 2 TB i UEFI.

Esquema de particions recomanat per a un servidor Linux

/boot       →  500 MB  (sistema d'arrencada, ext4)
/boot/efi   →  200 MB  (si UEFI, FAT32)
swap        →  RAM × 1,5  (o 2–4 GB en servidors amb molta RAM)
/           →  20 GB   (sistema base, ext4)
/var        →  20 GB   (logs, bases de dades, ext4)
/home       →  resta   (dades d'usuaris, ext4 o xfs)

Sistemes d’arxius principals

Sistema SO Característiques
NTFS Windows Permisos ACL, xifratge EFS, journaling, fitxers grans.
FAT32 Windows/Linux Compatible amb tot; màx. 4 GB per fitxer.
exFAT Windows/Linux Com FAT32 sense el límit de 4 GB; per a USB/SD.
ext4 Linux Journaling, fitxers grans, àmpliament usat.
XFS Linux Rendiment alt amb fitxers grans; usat en servidors.
Btrfs Linux Snapshots, compressió, RAID integrat.

Particionat durant la instal·lació de Debian/Ubuntu (exemples)

# Eines de particionat disponibles
fdisk   /dev/sda    # MBR
gdisk   /dev/sda    # GPT
parted  /dev/sda    # MBR i GPT

# Formatar particions
mkfs.ext4   /dev/sda2
mkfs.xfs    /dev/sda3
mkswap      /dev/sda1
swapon      /dev/sda1

1.3. Modes d’instal·lació

Windows Server 2025

Debian/Ubuntu Server

1.4. Automatització d’instal·lacions

Windows Server: fitxer de resposta (Unattend.xml)

El fitxer Unattend.xml permet instal·lar Windows Server de forma desatesa. Es genera amb l’eina Windows System Image Manager (WSIM).

Exemple parcial:

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
  <settings pass="oobeSystem">
    <component name="Microsoft-Windows-Shell-Setup">
      <OOBE>
        <HideEULAPage>true</HideEULAPage>
        <SkipMachineOOBE>true</SkipMachineOOBE>
      </OOBE>
      <UserAccounts>
        <AdministratorPassword>
          <Value>P@ssw0rd!</Value>
          <PlainText>true</PlainText>
        </AdministratorPassword>
      </UserAccounts>
      <ComputerName>SERVIDOR01</ComputerName>
      <TimeZone>Romance Standard Time</TimeZone>
    </component>
  </settings>
</unattend>

Linux: fitxer preseed (Debian)

# Exemple de fitxer preseed per a Debian
d-i debian-installer/locale string ca_ES
d-i keyboard-configuration/xkb-keymap select es
d-i netcfg/get_hostname string servidor01
d-i netcfg/get_domain string thos.local
d-i mirror/country string ES
d-i passwd/root-password password secret
d-i passwd/root-password-again password secret
d-i passwd/make-user boolean false
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
d-i partman/confirm_write_new_label boolean true
d-i partman/confirm boolean true
d-i pkgsel/include string openssh-server vim
d-i finish-install/reboot_in_progress note
# Iniciar la instal·lació amb el preseed
# A la pantalla d'arrencada de l'instal·lador, afegir al kernel:
auto url=http://192.168.1.50/preseed.cfg

1.5. Instal·lació en màquines virtuals

Les màquines virtuals (MV) permeten practicar sense maquinari físic addicional.

Eines de virtualització habituals:

Configuració recomanada d’una MV per a servidor

RAM:       2–4 GB
CPU:       2 nuclis
Disc:      40 GB (VDI dinàmic)
Xarxa:     - Adaptador 1: Xarxa NAT (accés a Internet i comunicació entre MVs)
           - Adaptador 2: Només amfitrió (accés des del host)

Actualització del sistema

# Debian/Ubuntu
sudo apt update && sudo apt upgrade -y
sudo apt autoremove -y

# Instal·lar actualitzacions de seguretat automàticament
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
# Windows Server (PowerShell)
# Instal·lar el mòdul de Windows Update
Install-Module PSWindowsUpdate -Force
Get-WindowsUpdate
Install-WindowsUpdate -AcceptAll -AutoReboot

1.6. Comprovació de la connectivitat

# Linux: verificar configuració de xarxa
ip a
ip route
cat /etc/resolv.conf

# Comprovar connectivitat
ping 192.168.1.1   # 192.168.1.1 és la IP de la porta d'enllaç
ping 8.8.8.8
ping google.cat

# Verificar ports oberts
ss -tlnp
nmap -sV 192.168.1.1
# Windows Server (PowerShell)
Get-NetIPAddress
Get-NetRoute
Test-NetConnection -ComputerName 192.168.1.1
Test-NetConnection -ComputerName google.com -Port 443

2. Gestió d’usuaris i grups

2.1. Comptes d’usuari

Linux: gestió d’usuaris

# Crear un usuari
sudo useradd -m -s /bin/bash -c "Pere Garcia" pere
sudo passwd pere

# Crear amb tots els paràmetres
sudo useradd -m \
    -d /home/pere \
    -s /bin/bash \
    -c "Pere Garcia" \
    -G sudo,sambashare \
    -e 2025-12-31 \
    pere

# Modificar un usuari existent
sudo usermod -c "Pere Garcia Professor" pere
sudo usermod -aG docker pere    # Afegir a un grup addicional
sudo usermod -L pere            # Bloquejar el compte
sudo usermod -U pere            # Desbloquejar el compte
sudo usermod -e 2025-06-30 pere # Canviar data d'expiració

# Eliminar un usuari (i el seu directori home)
sudo userdel -r pere

# Veure informació d'un usuari
id pere
getent passwd pere
chage -l pere     # Informació de caducitat de la contrasenya

Fitxers de configuració d’usuaris Linux:

Fitxer Contingut
/etc/passwd Informació dels comptes (nom, UID, GID, home, shell).
/etc/shadow Contrasenyes xifrades i política de caducitat.
/etc/group Definició dels grups.
/etc/gshadow Contrasenyes de grups.
/etc/skel/ Plantilla del directori home (es copia en crear l’usuari).
# Estructura d'una línia de /etc/passwd
# nom:x:UID:GID:comentari:home:shell
pere:x:1001:1001:Pere Garcia:/home/pere:/bin/bash

# Estructura d'una línia de /etc/shadow
# nom:hash:últim_canvi:min:max:avís:inactiu:expiració
pere:$6$xyz...:19700:0:99999:7:::

Windows Server: gestió d’usuaris locals

# Crear un usuari local
New-LocalUser -Name "pere" `
              -FullName "Pere Garcia" `
              -Description "Professor" `
              -Password (ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force) `
              -PasswordNeverExpires $false `
              -AccountNeverExpires

# Modificar un usuari
Set-LocalUser -Name "pere" -Description "Professor de xarxes"

# Desactivar/activar un compte
Disable-LocalUser -Name "pere"
Enable-LocalUser  -Name "pere"

# Eliminar un usuari
Remove-LocalUser -Name "pere"

# Llistar usuaris
Get-LocalUser

2.2. Perfils d’usuari

Tipus de perfils (Windows)

Tipus Descripció Ubicació
Local Només disponible a l’equip on es va crear. C:\Users\nom_usuari
Itinerant (mòbil) S’emmagatzema al servidor; l’usuari el té a qualsevol equip del domini. \\servidor\Perfils$\nom_usuari
Obligatori Perfil itinerant de només lectura; els canvis no es guarden. \\servidor\Perfils$\nom_usuari (.man)

Configurar un perfil mòbil (Windows Server + AD)

  1. Crear una carpeta compartida al servidor: \\SERVIDOR\Perfils$
  2. A les propietats del compte d’usuari a l’AD → Pestanya Perfil:

Perfils a Linux (PAM + directori home)

# El directori home és el "perfil" de l'usuari Linux
# Personalització de l'entorn a:
~/.bashrc           # Configuració de la shell Bash (àlies, variables)
~/.bash_profile     # S'executa en l'inici de sessió
~/.profile          # Configuració general

# Exemple de personalització a /etc/skel/.bashrc
# (s'aplicarà a tots els usuaris nous)
echo 'alias ll="ls -la"' >> /etc/skel/.bashrc
echo 'export PATH=$PATH:/usr/local/sbin' >> /etc/skel/.bashrc

2.3. Gestió de grups

Linux: gestió de grups

# Crear un grup
sudo groupadd professors
sudo groupadd -g 2000 alumnes    # Amb GID específic

# Modificar un grup
sudo groupmod -n docents professors   # Canviar el nom

# Eliminar un grup
sudo groupdel alumnes

# Afegir un usuari a un grup
sudo gpasswd -a pere professors
sudo usermod -aG professors pere

# Eliminar un usuari d'un grup
sudo gpasswd -d pere professors

# Veure membres d'un grup
getent group professors
grep professors /etc/group

Windows Server: tipus i àmbits dels grups

Tipus de grups:

Tipus Descripció
Seguretat S’utilitzen per assignar permisos a recursos.
Distribució S’utilitzen per a llistes de distribució de correu (no per a permisos).

Àmbits dels grups (en un domini AD):

Àmbit Membres que pot tenir S’utilitza per a
Local de domini Usuaris, grups globals/universals de qualsevol domini Assignar permisos a recursos del domini local
Global Usuaris i grups globals del mateix domini Agrupar usuaris amb les mateixes funcions
Universal Usuaris i grups de qualsevol domini del bosc Entorns multi-domini

Estratègia AGDLP (recomanada per Microsoft):

Accounts (usuaris) → Global groups → Domain Local groups → Permissions
# Crear grups locals
New-LocalGroup -Name "Professors" -Description "Grup de professors"

# Afegir membres a un grup local
Add-LocalGroupMember -Group "Professors" -Member "pere"

# Veure membres d'un grup
Get-LocalGroupMember -Group "Professors"

# Eliminar un grup
Remove-LocalGroup -Name "Professors"

2.4. Usuaris i grups predeterminats i especials

Linux

Usuari/Grup UID/GID Propòsit
root 0 Superusuari, control total del sistema.
daemon 1 Processos de serveis del sistema.
www-data 33 Servidor web Apache/Nginx.
nobody 65534 Usuari sense privilegis per a serveis aïllats.
sudo Membres poden executar ordres com a root.
shadow Accés al fitxer /etc/shadow.

Windows Server

Compte Propòsit
Administrator Compte d’administrador local predeterminat.
Guest Compte d’accés limitat (desactivat per defecte).
SYSTEM Compte intern usat pel sistema operatiu.
Network Service Compte per a serveis que necessiten accés a la xarxa.
Administrators Grup d’administradors locals.
Users Grup d’usuaris estàndard.
Remote Desktop Users Permet l’accés per escriptori remot.

3. Gestió de dominis

3.1. Servei de directori i domini

Un servei de directori és una base de dades especialitzada que emmagatzema informació sobre els recursos de la xarxa (usuaris, equips, impressores, etc.) i permet gestionar-los de forma centralitzada.

Elements principals:

Protocols estàndard

Implementacions

Producte Plataforma
Active Directory Domain Services (AD DS) Windows Server
Samba + AD Linux (compatible amb AD)
OpenLDAP Linux (directori LDAP pur)
FreeIPA Linux (LDAP + Kerberos + DNS integrat)

3.2. Active Directory: instal·lació i configuració

Instal·lació d’AD DS a Windows Server 2025

# Instal·lar el rol d'AD DS
Install-WindowsFeature AD-Domain-Services -IncludeManagementTools

# Promoure el servidor a controlador de domini (nou bosc)
Import-Module ADDSDeployment

Install-ADDSForest `
    -DomainName "thos.local" `
    -DomainNetbiosName "THOS" `
    -DomainMode "WinThreshold" `
    -ForestMode "WinThreshold" `
    -InstallDns:$true `
    -SafeModeAdministratorPassword (ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force) `
    -Force:$true

# El servidor es reiniciarà automàticament

Alternativament, des d’Administrador del servidor → Agregar roles y características → Active Directory Domain Services.

Estructura d’un domini AD

thos.local                    ← Arbre/Bosc
└── DC=thos,DC=local          ← Arrel del directori
    ├── CN=Users                  ← Contenidor d'usuaris per defecte
    ├── CN=Computers              ← Contenidor d'equips per defecte
    ├── CN=Builtin                ← Grups predeterminats
    └── OU=Institut               ← Unitats organitzatives (OU)
        ├── OU=Professors
        ├── OU=Alumnes
        └── OU=Equips

Nomenclatura LDAP

DN  (Distinguished Name):   CN=Pere Garcia,OU=Professors,DC=thos,DC=local
CN  (Common Name):          Pere Garcia
OU  (Organizational Unit):  Professors
DC  (Domain Component):     thos, local

3.3. Unitats organitzatives (OU)

Les OU permeten organitzar els objectes del domini i delegar l’administració.

# Crear OU
New-ADOrganizationalUnit -Name "Professors" `
    -Path "DC=thos,DC=local" `
    -Description "Professors del centre"

New-ADOrganizationalUnit -Name "Alumnes" `
    -Path "DC=thos,DC=local"

New-ADOrganizationalUnit -Name "Cicles" `
    -Path "OU=Alumnes,DC=thos,DC=local"

# Llistar OU
Get-ADOrganizationalUnit -Filter * | Select-Object Name, DistinguishedName

# Eliminar una OU (cal desactivar la protecció contra eliminació accidental)
Set-ADOrganizationalUnit -Identity "OU=Cicles,OU=Alumnes,DC=thos,DC=local" `
    -ProtectedFromAccidentalDeletion $false
Remove-ADOrganizationalUnit -Identity "OU=Cicles,OU=Alumnes,DC=thos,DC=local" -Confirm:$false

3.4. Gestió d’usuaris i grups al domini AD

# Crear un usuari al domini
New-ADUser `
    -Name "Pere Garcia" `
    -GivenName "Pere" `
    -Surname "Garcia" `
    -SamAccountName "pgarcia" `
    -UserPrincipalName "pgarcia@thos.local" `
    -Path "OU=Professors,DC=thos,DC=local" `
    -AccountPassword (ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force) `
    -ChangePasswordAtLogon $true `
    -Enabled $true

# Modificar un usuari
Set-ADUser -Identity "pgarcia" -Title "Professor" -Department "Informàtica"

# Desactivar/activar
Disable-ADAccount -Identity "pgarcia"
Enable-ADAccount  -Identity "pgarcia"

# Eliminar un usuari
Remove-ADUser -Identity "pgarcia" -Confirm:$false

# Crear un grup de domini
New-ADGroup `
    -Name "GG_Professors" `
    -GroupScope Global `
    -GroupCategory Security `
    -Path "OU=Professors,DC=thos,DC=local" `
    -Description "Grup global de professors"

# Afegir membres a un grup
Add-ADGroupMember -Identity "GG_Professors" -Members "pgarcia","mlopez"

# Veure membres d'un grup
Get-ADGroupMember -Identity "GG_Professors"

# Buscar usuaris
Get-ADUser -Filter {Department -eq "Informàtica"} -Properties *
Get-ADUser -Filter * -SearchBase "OU=Professors,DC=thos,DC=local"

3.5. Relacions de confiança entre dominis

Una relació de confiança permet als usuaris d’un domini autenticar-se i accedir a recursos d’un altre domini.

Tipus Descripció
Automàtica S’estableix automàticament entre dominis del mateix bosc.
Accés directe Accelera l’autenticació entre dominis d’un mateix bosc.
Forestal Confiança bidireccional transitiva entre dos boscos.
Externa Confiança no transitiva amb un domini extern o de Windows NT.
Kerberos Confiança amb un regne Kerberos no-Windows.
# Crear una confiança externa (exemple)
netdom trust empresa.local /domain:altredomini.local `
    /userD:Administrator /passwordD:P@ssw0rd! `
    /add /twoway

3.6. OpenLDAP a Linux (alternativa lliure)

# Instal·lar OpenLDAP
sudo apt install slapd ldap-utils -y
sudo dpkg-reconfigure slapd

# Verificar el servei
sudo systemctl status slapd
ldapsearch -x -H ldap://localhost -b "" -s base

# Exemple de fitxer LDIF per afegir una OU
cat << 'EOF' > ou_professors.ldif
dn: ou=professors,dc=thos,dc=local
objectClass: organizationalUnit
ou: professors
description: Professors del centre
EOF

ldapadd -x -D "cn=admin,dc=thos,dc=local" -W -f ou_professors.ldif

# Exemple: afegir un usuari
cat << 'EOF' > usuari_pere.ldif
dn: uid=pgarcia,ou=professors,dc=thos,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
uid: pgarcia
cn: Pere Garcia
sn: Garcia
givenName: Pere
mail: pgarcia@thos.local
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/pgarcia
loginShell: /bin/bash
userPassword: {SSHA}hash_de_la_contrasenya
EOF

ldapadd -x -D "cn=admin,dc=thos,dc=local" -W -f usuari_pere.ldif

# Cercar un usuari
ldapsearch -x -H ldap://localhost \
    -D "cn=admin,dc=thos,dc=local" -W \
    -b "dc=thos,dc=local" "(uid=pgarcia)"

3.7. Directives de grup (GPO)

Les directives de grup (Group Policy Objects, GPO) permeten aplicar configuracions de forma centralitzada a usuaris i equips del domini AD: polítiques de seguretat, scripts d’inici de sessió, mapatge d’unitats, instal·lació de programari, etc.

Conceptes clau

Concepte Descripció
GPO Objecte que conté un conjunt de configuracions.
GPMC Group Policy Management Console: eina gràfica de gestió de GPO.
Vinculació Una GPO s’aplica vinculant-la a un lloc, domini o OU.
Herència Les GPO de nivells superiors s’hereten als nivells inferiors.
Bloqueig d’herència Una OU pot bloquejar les GPO heredades del nivell superior.
Força (Enforce) Una GPO forçada no pot ser bloquejada per una OU filla.
Filtre de seguretat Permet aplicar una GPO només a grups o usuaris concrets.

Ordre d’aplicació (LSDOU)

Les GPO s’apliquen en aquest ordre (l’última té prioritat):

Local → Site → Domain → Organizational Unit (de la OU pare a la filla)

Gestió de GPO amb PowerShell

# Crear una GPO nova
New-GPO -Name "Politica_Escriptori" -Comment "Restriccions d'escriptori per a alumnes"

# Vincular una GPO a una OU
New-GPLink -Name "Politica_Escriptori" `
    -Target "OU=Alumnes,DC=thos,DC=local" `
    -LinkEnabled Yes

# Llistar totes les GPO del domini
Get-GPO -All | Select-Object DisplayName, GpoStatus, CreationTime

# Veure els detalls d'una GPO
Get-GPO -Name "Politica_Escriptori"

# Generar un informe HTML d'una GPO
Get-GPOReport -Name "Politica_Escriptori" `
    -ReportType HTML `
    -Path "C:\Informes\politica_escriptori.html"

# Forçar l'aplicació de GPO en un client (des del client)
gpupdate /force

# Veure les GPO aplicades a l'equip actual
gpresult /r
gpresult /h C:\Informes\gpresult.html   # Informe HTML complet

# Desvincular una GPO d'una OU
Remove-GPLink -Name "Politica_Escriptori" `
    -Target "OU=Alumnes,DC=thos,DC=local"

# Eliminar una GPO
Remove-GPO -Name "Politica_Escriptori"

Còpia de seguretat i restauració

# Fer còpia de seguretat de totes les GPO
Backup-GPO -All -Path "C:\BackupGPO"

# Fer còpia de seguretat d'una GPO concreta
Backup-GPO -Name "Politica_Escriptori" -Path "C:\BackupGPO"

# Restaurar una GPO des de la còpia de seguretat
Restore-GPO -Name "Politica_Escriptori" -Path "C:\BackupGPO"

Exemples d’ús habitual

Cas d’ús Ruta dins la GPO
Fons d’escriptori corporatiu User Config → Policies → Admin Templates → Desktop
Bloquejar el Tauler de control User Config → Policies → Admin Templates → Control Panel
Mapatge d’unitats de xarxa User Config → Preferences → Windows Settings → Drive Maps
Restricció d’instal·lació de programari User Config → Policies → Software Restriction
Política de contrasenyes Computer Config → Policies → Windows Settings → Security Settings → Account Policies
Desactivar USB Computer Config → Policies → Admin Templates → System → Removable Storage

4. Gestió dels recursos compartits en xarxa

4.1. Permisos i drets

Diferència entre permís i dret:

Concepte Descripció Exemples
Permís Controla l’accés a un recurs concret (fitxer, carpeta, impressora). Lectura, Escriptura, Control total
Dret Acció que un usuari pot realitzar al sistema. Iniciar sessió localment, Apagar el sistema, Gestionar registres d’auditoria

Permisos NTFS (Windows)

Permís Descripció
Lectura Veure fitxers i atributs.
Escriptura Crear fitxers i subcarpetes, modificar atributs.
Llista de continguts Veure noms de fitxers i subcarpetes.
Lectura i execució Lectura + executar fitxers.
Modificació Lectura i execució + escriptura + eliminar.
Control total Tots els permisos anteriors + canviar permisos + prendre propietat.

Herència: els permisos es propaguen des de la carpeta pare als elements fills. Es pot trencar l’herència per a una carpeta específica.

Permisos efectius: quan s’assignen permisos per usuari i per grup, el permís final és la unió de tots els permisos (el més permissiu), excepte Denegar que sempre té prioritat.

Permisos Linux (chmod/chown)

# Veure permisos
ls -la /srv/compartit

# Estructura dels permisos: rwxrwxrwx
# Propietari | Grup | Altres
# r=4, w=2, x=1

# Canviar permisos (notació octal)
chmod 755 /srv/compartit     # rwxr-xr-x
chmod 644 /srv/arxiu.txt     # rw-r--r--
chmod 770 /srv/privat        # rwxrwx---

# Canviar permisos (notació simbòlica)
chmod u+x,g+w fitxer.sh
chmod o-rwx carpeta/
chmod a+r document.pdf       # a = tots (u+g+o)

# Canviar propietari i grup
chown pere:professors /srv/compartit
chown -R www-data:www-data /var/www/html

# Bits especials
chmod u+s executable    # SUID: s'executa amb permisos del propietari
chmod g+s /srv/grup     # SGID: fitxers nous hereten el grup de la carpeta
chmod +t /tmp           # Sticky bit: només el propietari pot esborrar els seus fitxers

ACL a Linux (permisos avançats)

# Instal·lar eines ACL
sudo apt install acl -y

# Assignar ACL a un usuari
setfacl -m u:pere:rwx /srv/compartit
setfacl -m g:professors:rx /srv/compartit

# ACL per defecte (hereten els fitxers nous)
setfacl -d -m u:pere:rwx /srv/compartit

# Veure ACL
getfacl /srv/compartit

# Eliminar una ACL
setfacl -x u:pere /srv/compartit

# Eliminar totes les ACL
setfacl -b /srv/compartit

4.2. Compartir carpetes

Windows Server: carpetes compartides

# Crear una carpeta i compartir-la
New-Item -ItemType Directory -Path "C:\Compartit\Professors"

# Compartir la carpeta
New-SmbShare `
    -Name "Professors" `
    -Path "C:\Compartit\Professors" `
    -Description "Carpeta del professorat" `
    -FullAccess "THOS\GG_Professors" `
    -ReadAccess "THOS\GG_Alumnes"

# Veure carpetes compartides
Get-SmbShare

# Modificar permisos d'un recurs compartit
Grant-SmbShareAccess -Name "Professors" -AccountName "THOS\pgarcia" -AccessRight Full -Force

# Eliminar un recurs compartit
Remove-SmbShare -Name "Professors" -Confirm:$false

# Connectar una unitat de xarxa (des d'un client)
net use Z: \\SERVIDOR\Professors /persistent:yes
New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\SERVIDOR\Professors" -Persist

Permisos combinats (NTFS + recurs compartit):

El permís efectiu quan s’accedeix per xarxa és la intersecció (el més restrictiu) entre els permisos del recurs compartit i els permisos NTFS.

Linux: Samba (compartir amb Windows)

# Instal·lar Samba
sudo apt install samba samba-common-bin -y

# Configuració principal: /etc/samba/smb.conf
sudo nano /etc/samba/smb.conf
[global]
   workgroup = WORKGROUP
   server string = Servidor Samba
   security = user
   map to guest = bad user
   log file = /var/log/samba/log.%m
   max log size = 50

# Carpeta pública (accessible per tothom)
[public]
   comment = Carpeta pública
   path = /srv/samba/public
   browsable = yes
   read only = no
   guest ok = yes
   create mask = 0664
   directory mask = 0775

# Carpeta privada (requereix autenticació)
[professors]
   comment = Carpeta de professors
   path = /srv/samba/professors
   valid users = @professors
   browsable = yes
   read only = no
   create mask = 0660
   directory mask = 0770
# Crear les carpetes
sudo mkdir -p /srv/samba/public /srv/samba/professors
sudo chmod 0775 /srv/samba/public
sudo chown root:professors /srv/samba/professors
sudo chmod 0770 /srv/samba/professors

# Crear un usuari Samba (ha d'existir com a usuari Linux)
sudo useradd -M -s /sbin/nologin pere
sudo smbpasswd -a pere
sudo smbpasswd -e pere   # Activar el compte Samba

# Verificar la configuració
testparm

# Reiniciar Samba
sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd

# Veure connexions actives
smbstatus
# Accedir a un recurs Samba des de Linux
sudo apt install smbclient cifs-utils -y

# Llistar recursos d'un servidor
smbclient -L //192.168.1.10 -U pere

# Muntar un recurs Samba
sudo mount -t cifs //192.168.1.10/professors /mnt/professors \
    -o username=pere,password=secret,uid=1000,gid=1000

# Muntar permanentment (afegir a /etc/fstab)
//192.168.1.10/professors /mnt/professors cifs credentials=/etc/samba/.credentials,uid=1000,gid=1000,_netdev 0 0

4.3. NFS (Network File System) – Linux

# Servidor NFS
sudo apt install nfs-kernel-server -y

# Configurar exports: /etc/exports
/srv/nfs/dades    192.168.1.0/24(rw,sync,no_subtree_check)
/srv/nfs/public   *(ro,sync,no_subtree_check)

# Aplicar canvis
sudo exportfs -ra
sudo systemctl restart nfs-kernel-server

# Veure exports actius
showmount -e localhost
# Client NFS – Linux
sudo apt install nfs-common -y

# Muntar el recurs
sudo mount -t nfs 192.168.1.10:/srv/nfs/dades /mnt/dades

# Muntatge permanent (/etc/fstab)
192.168.1.10:/srv/nfs/dades /mnt/dades nfs defaults,_netdev 0 0

Client NFS – Windows Server

Windows Server inclou un client NFS que permet muntar exports NFS de servidors Linux.

# Instal·lar el client NFS
Install-WindowsFeature NFS-Client

# Muntar un recurs NFS com a unitat de xarxa
# (des de línia d'ordres, cmd clàssic)
mount \\192.168.1.10\srv\nfs\dades Z:

# Desmuntar
umount Z:

# Muntatge permanent via PowerShell (unitat persistent)
New-PSDrive -Name "Z" `
    -PSProvider FileSystem `
    -Root "\\192.168.1.10\srv\nfs\dades" `
    -Persist

Nota sobre permisos: per defecte, el client NFS de Windows accedeix amb UID/GID 0 (root anònim). Si el servidor NFS té root_squash activat (valor per defecte), cal configurar el mapatge d’usuaris al servidor o usar no_root_squash en entorns de laboratori:

# /etc/exports al servidor Linux (entorn de laboratori)
/srv/nfs/dades  192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)

4.4. Impressores compartides en xarxa

Windows Server: compartir una impressora

# Instal·lar el rol de servidor d'impressió
Install-WindowsFeature Print-Server -IncludeManagementTools

# Afegir una impressora
Add-Printer -Name "HP-Sala-Professors" `
            -DriverName "HP Universal Printing PCL 6" `
            -PortName "IP_192.168.1.200"

# Compartir la impressora
Set-Printer -Name "HP-Sala-Professors" -Shared $true -ShareName "HP-Professors"

# Assignar permisos d'impressió
$sd = Get-Printer -Name "HP-Sala-Professors" -Full | Select-Object -ExpandProperty PermissionSDDL
# (gestió avançada des de la consola gràfica: Administrador d'impressió)

Linux: CUPS (Common Unix Printing System)

# Instal·lar CUPS
sudo apt install cups -y

# Permetre accés des de la xarxa local
sudo nano /etc/cups/cupsd.conf
# Canviar: Listen localhost:631 → Port 631
# Afegir a les seccions <Location />:
#   Allow from 192.168.1.0/24

sudo systemctl restart cups

# Accedir a la interfície web d'administració
# http://ip_servidor:631

# Des de línia d'ordres
lpstat -v                           # Veure impressores
lpr -P HP-Professors fitxer.pdf     # Imprimir
lpq -P HP-Professors                # Veure la cua
lprm -P HP-Professors 5             # Cancel·lar un treball

4.5. Sistema d’arxius distribuït (DFS)

El DFS (Distributed File System) de Windows Server permet agrupar carpetes compartides de múltiples servidors sota un únic espai de noms unificat, i opcionalment replicar-ne el contingut entre servidors.

Components

Component Descripció
DFS Namespace Espai de noms virtual que agrupa carpetes compartides de diversos servidors sota un únic camí (\\domini\recursos).
DFS Replication (DFSR) Replica automàticament el contingut entre servidors per a alta disponibilitat i redundància.

Instal·lació i configuració

# Instal·lar el rol DFS
Install-WindowsFeature FS-DFS-Namespace, FS-DFS-Replication -IncludeManagementTools

# Crear un nou espai de noms de domini
New-DfsnRoot `
    -Path "\\thos.local\Recursos" `
    -TargetPath "\\SERVIDOR\Recursos" `
    -Type DomainV2

# Afegir una carpeta a l'espai de noms
New-DfsnFolder `
    -Path "\\thos.local\Recursos\Professors" `
    -TargetPath "\\SERVIDOR\Professors"

# Afegir un segon servidor com a destí (redundància)
New-DfsnFolderTarget `
    -Path "\\thos.local\Recursos\Professors" `
    -TargetPath "\\SERVIDOR2\Professors"

# Llistar espais de noms
Get-DfsnRoot

# Llistar carpetes d'un espai de noms
Get-DfsnFolder -Path "\\thos.local\Recursos\*"

Replicació DFS

# Crear un grup de replicació
New-DfsReplicationGroup -GroupName "Replicacio_Professors"

# Afegir membres al grup
Add-DfsrMember -GroupName "Replicacio_Professors" `
    -ComputerName "SERVIDOR", "SERVIDOR2"

# Crear una carpeta replicada
New-DfsReplicatedFolder `
    -GroupName "Replicacio_Professors" `
    -FolderName "Professors"

# Establir el membre primari (font inicial de dades)
Set-DfsrMembership `
    -GroupName "Replicacio_Professors" `
    -FolderName "Professors" `
    -ComputerName "SERVIDOR" `
    -ContentPath "C:\Compartit\Professors" `
    -PrimaryMember $true

Set-DfsrMembership `
    -GroupName "Replicacio_Professors" `
    -FolderName "Professors" `
    -ComputerName "SERVIDOR2" `
    -ContentPath "C:\Compartit\Professors" `
    -PrimaryMember $false

# Comprovar l'estat de la replicació
Get-DfsrState -GroupName "Replicacio_Professors"

Des del client, l’accés es fa sempre pel camí UNC \\thos.local\Recursos\Professors de l’espai de noms. El DFS s’encarrega de redirigir al servidor disponible.

4.6. Scripts de shell (Linux)

L’automatització de tasques d’administració a Linux es fa habitualment amb scripts de shell (Bash). Vegeu la referència completa a proferamon.com/tic/scripts.html.

5. Monitoratge i ús del sistema operatiu en xarxa

5.1. Arrencada del sistema operatiu

Procés d’arrencada Linux (systemd)

BIOS/UEFI → Bootloader (GRUB2) → Nucli (kernel) → initramfs → systemd (PID 1) → target (runlevel)
# Veure l'objectiu (target) actual
systemctl get-default

# Canviar l'objectiu per defecte
sudo systemctl set-default multi-user.target    # Mode text (servidors)
sudo systemctl set-default graphical.target     # Mode gràfic

# Targets equivalents als runlevels de SysV
# poweroff.target  = 0  (aturada)
# rescue.target    = 1  (mode usuari únic)
# multi-user.target = 3 (multi-usuari, xarxa, sense GUI)
# graphical.target = 5  (multi-usuari, xarxa, amb GUI)
# reboot.target    = 6  (reinici)

# Veure el temps d'arrencada
systemd-analyze
systemd-analyze blame         # Serveis que triguen més
systemd-analyze critical-chain

Procés d’arrencada Windows Server

UEFI/BIOS → MBR/GPT → Bootloader (bootmgr) → Selecció del SO (BCD) → winload.exe → ntoskrnl.exe → smss.exe → winlogon.exe
# Veure els registres d'arrencada
Get-EventLog -LogName System -Source "Microsoft-Windows-Kernel-Boot" -Newest 20

# Eines de diagnosi d'arrencada
msconfig        # Configuració del sistema (GUI)
bcdedit         # Editar la configuració d'arrencada
bootrec /fixmbr  # Reparar el MBR (des de WinRE)

5.2. Diagnosi de fallades en l’arrencada

Linux: problemes comuns

# Accedir al mode de recuperació (rescue)
# Al menú GRUB: seleccionar "Advanced options" → "recovery mode"
# O afegir al kernel: systemd.unit=rescue.target

# Comprovar el sistema d'arxius (arrel en mode lectura)
sudo fsck -y /dev/sda1

# Veure errors de l'arrencada
journalctl -b         # Logs de l'arrencada actual
journalctl -b -1      # Logs de l'arrencada anterior
journalctl -b -p err  # Només errors

# Veure serveis que han fallat
systemctl --failed
systemctl status nom_servei

Windows Server: eines de diagnosi

# Veure errors al visor d'esdeveniments
Get-EventLog -LogName System -EntryType Error -Newest 50

# Comprovar fitxers de sistema danyats
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth

# Comprovar el disc
chkdsk C: /f /r

5.3. Monitoratge del rendiment

Linux: eines de monitoratge

# Ús de CPU i memòria en temps real
top
htop              # Versió millorada (apt install htop)

# Ús del disc
df -h             # Espai de les particions
du -sh /var/*     # Espai ocupat per directori
iotop             # Processos amb més E/S de disc (apt install iotop)

# Activitat de la xarxa
nethogs           # Ample de banda per procés (apt install nethogs)
iftop             # Tràfic per interfície (apt install iftop)
ss -s             # Resum de connexions

# Informació del sistema
free -h           # Ús de memòria
vmstat 1 10       # Estadístiques del sistema cada segon (10 vegades)
mpstat -P ALL 1   # Ús de CPU per nucli

# Logs del sistema
journalctl -f                     # Seguiment en temps real
journalctl -u nginx --since today # Logs d'un servei concret
tail -f /var/log/syslog
# Instal·lar eines addicionals
sudo apt install sysstat -y

# Activar la recollida de dades (sysstat)
sudo systemctl enable sysstat
sudo systemctl start sysstat

# Informe d'activitat del sistema
sar -u 1 5    # CPU
sar -r 1 5    # Memòria
sar -d 1 5    # Disc
sar -n DEV 1 5 # Xarxa

Windows Server: eines de monitoratge

Eines gràfiques principals:

Eina Accés Descripció
Administrador de tasques Ctrl+Shift+Esc o taskmgr CPU, memòria, disc, xarxa en temps real per procés.
Monitor de rendiment perfmon Comptadors de rendiment configurables, registre d’historial.
Administrador de serveis services.msc Inici, aturada i configuració de serveis.
Visor d’esdeveniments eventvwr Logs del sistema, seguretat i aplicació.
Administrador del servidor servermanager Visió global de rols, serveis i alertes.
Windows Admin Center Navegador web (port 443) Administració moderna des del navegador, sense RDP.
Escriptori remot mstsc / RDP port 3389 Accés remot a l’escriptori gràfic.
# Processos: CPU i memòria
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10

# Aturar un procés per nom
Stop-Process -Name "notepad" -Force

# Ús de memòria del sistema
Get-WmiObject -Class Win32_OperatingSystem |
    Select-Object @{N="Total(MB)";E={[math]::Round($_.TotalVisibleMemorySize/1024)}},
                  @{N="Lliure(MB)";E={[math]::Round($_.FreePhysicalMemory/1024)}}

# Ús del disc
Get-PSDrive -PSProvider FileSystem |
    Select-Object Name, @{N="Usat(GB)";E={[math]::Round($_.Used/1GB,1)}},
                        @{N="Lliure(GB)";E={[math]::Round($_.Free/1GB,1)}}

# Ús de la xarxa per adaptador
Get-NetAdapterStatistics | Select-Object Name, ReceivedBytes, SentBytes

# Consultar el visor d'esdeveniments per errors recents
Get-EventLog -LogName System -EntryType Error -Newest 20 |
    Select-Object TimeGenerated, Source, Message

Get-EventLog -LogName Security -Newest 20 |
    Select-Object TimeGenerated, EventID, Message

# Serveis en execució
Get-Service | Where-Object {$_.Status -eq "Running"} | Sort-Object DisplayName

# Iniciar / aturar / reiniciar un servei
Start-Service   -Name "wuauserv"
Stop-Service    -Name "wuauserv"
Restart-Service -Name "wuauserv"

# Activar l'Escriptori remot
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" `
    -Name "fDenyTSConnections" -Value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

# Connectar-se remotament des de la línia d'ordres
mstsc /v:192.168.1.10

5.4. Gestió de processos i serveis

Linux: gestió de serveis amb systemd

# Operacions bàsiques
sudo systemctl start   nom_servei
sudo systemctl stop    nom_servei
sudo systemctl restart nom_servei
sudo systemctl reload  nom_servei   # Recarrega la configuració sense reiniciar
sudo systemctl status  nom_servei

# Habilitar/deshabilitar l'inici automàtic
sudo systemctl enable  nom_servei
sudo systemctl disable nom_servei

# Llistar tots els serveis
systemctl list-units --type=service
systemctl list-units --type=service --state=failed

# Gestió de processos
ps aux                          # Llistar tots els processos
ps aux | grep nginx
kill -15 PID                    # Finalitzar amablement (SIGTERM)
kill -9 PID                     # Forçar finalització (SIGKILL)
killall nginx                   # Matar tots els processos amb aquest nom

Linux: automatització de tasques (cron)

# Editar el crontab de l'usuari actual
crontab -e

# Format: minut hora dia_mes mes dia_setmana ordre
# Exemples:
# 0 2 * * * /usr/local/bin/backup.sh        # Cada dia a les 02:00
# */15 * * * * /usr/local/bin/comprova.sh   # Cada 15 minuts
# 0 8 * * 1 /usr/bin/informe_setmanal.sh    # Cada dilluns a les 08:00
# 30 23 1 * * /usr/bin/informe_mensual.sh   # Dia 1 de cada mes a les 23:30

# Crontab del sistema
sudo nano /etc/crontab
# Format afegeix el camp d'usuari:
# 0 2 * * * root /usr/local/bin/backup.sh

# Scripts en directoris especials
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/

Windows Server: automatització (Tasques programades)

# Crear una tasca programada
$action  = New-ScheduledTaskAction -Execute "PowerShell.exe" `
           -Argument "-File C:\Scripts\backup.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At "02:00"
$settings = New-ScheduledTaskSettingsSet -RunOnlyIfNetworkAvailable

Register-ScheduledTask `
    -TaskName "BackupDiari" `
    -Action $action `
    -Trigger $trigger `
    -Settings $settings `
    -RunLevel Highest `
    -User "SYSTEM"

# Llistar tasques programades
Get-ScheduledTask | Where-Object {$_.State -ne "Disabled"}

# Executar una tasca manualment
Start-ScheduledTask -TaskName "BackupDiari"

# Eliminar una tasca
Unregister-ScheduledTask -TaskName "BackupDiari" -Confirm:$false

5.5. Interpretació de la configuració del sistema

# Linux: fitxers de configuració clau del sistema
/etc/hostname           # Nom del host
/etc/hosts              # Resolució estàtica de noms
/etc/resolv.conf        # Servidors DNS
/etc/network/interfaces # Configuració de xarxa (Debian clàssic)
/etc/netplan/*.yaml     # Configuració de xarxa (Ubuntu 18+)
/etc/fstab              # Muntatge automàtic de sistemes d'arxius
/etc/ssh/sshd_config    # Configuració del servidor SSH
/etc/sudoers            # Permisos d'escalada de privilegis

# Exemple: configuració de xarxa estàtica amb Netplan
sudo nano /etc/netplan/00-installer-config.yaml
network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: no
      addresses:
        - "192.168.1.10/24"
      nameservers:
        addresses: 
        - 8.8.8.8
        - 8.8.4.4
      routes:
      - to: "default"
        via "192.168.1.1"
# Aplicar la configuració de Netplan
sudo netplan apply

# Configuració de xarxa a Windows Server (PowerShell)
New-NetIPAddress `
    -InterfaceAlias "Ethernet" `
    -IPAddress "192.168.1.10" `
    -PrefixLength 24 `
    -DefaultGateway "192.168.1.1"

Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses ("8.8.8.8","8.8.4.4")

6. Integració de sistemes operatius lliures i propietaris

6.1. Escenaris heterogenis

En entorns reals és habitual trobar una barreja de sistemes operatius:

Escenaris heterogenis

L’objectiu és que tots els sistemes puguin:

6.2. Samba com a controlador de domini (AD DC)

Samba 4 pot actuar com a controlador de domini Active Directory compatible amb Windows, cosa que permet que clients Windows i Linux s’uneixin al domini.

# Instal·lar Samba4 com a AD DC (Debian)
sudo apt install samba krb5-config winbind -y

# Configurar el domini
sudo samba-tool domain provision \
    --use-rfc2307 \
    --realm=THOS.LOCAL \
    --domain=THOS \
    --server-role=dc \
    --dns-backend=SAMBA_INTERNAL \
    --adminpass='P@ssw0rd!'

# Iniciar Samba
sudo systemctl unmask samba-ad-dc
sudo systemctl enable samba-ad-dc
sudo systemctl start samba-ad-dc

# Verificar
samba-tool domain info 127.0.0.1

6.3. Unir un client Windows a un domini Samba/AD

# Configurar el DNS del client apuntant al servidor AD
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses "192.168.1.10"

# Unir el client al domini (GUI: Sistema → Propietats → Canviar)
# O per PowerShell:
Add-Computer `
    -DomainName "thos.local" `
    -Credential (Get-Credential) `
    -Restart

6.4. Unir un client Linux al domini AD (sssd + realmd)

# Instal·lar les eines necessàries
sudo apt install realmd sssd sssd-tools samba samba-common-bin -y

# Descobrir el domini
realm discover thos.local

# Unir el client al domini
sudo realm join thos.local -U Administrator 

# Verificar
realm list

# Iniciar sessió amb un usuari del domini
su - pgarcia@thos.local
id pgarcia@thos.local

# Permetre login sense especificar el domini (opcional)
sudo nano /etc/sssd/sssd.conf
# use_fully_qualified_names = False
sudo systemctl restart sssd

# Permetre que els usuaris del domini tinguin directori home automàticament
sudo pam-auth-update --enable mkhomedir

6.5. Compartir fitxers entre Windows i Linux (Samba)

# Exemple complet: carpeta compartida autenticada per AD

# /etc/samba/smb.conf (servidor Samba membre del domini AD)
[global]
   workgroup = THOS
   realm = THOS.LOCAL
   security = ADS
   kerberos method = secrets and keytab

[dades_comunes]
   comment = Dades comunes del centre
   path = /srv/samba/dades
   valid users = @"THOS\GG_Professors", @"THOS\GG_Alumnes"
   write list = @"THOS\GG_Professors"
   read only = no
   create mask = 0664
   directory mask = 0775
   inherit permissions = yes
# Des d'un client Linux: accedir a un recurs Windows
# Muntar un recurs compartit de Windows Server
sudo mount -t cifs //192.168.1.20/Professors /mnt/professors \
    -o username=pgarcia,domain=THOS,uid=$(id -u),gid=$(id -g)

# Accedir amb smbclient
smbclient //192.168.1.20/Professors -U THOS/pgarcia

6.6. Accés a impressores des de sistemes heterogenis

Compartir una impressora CUPS amb Windows

# /etc/cups/cupsd.conf: habilitar compartir impressores
BrowseLocalProtocols dnssd
ServerAlias *

# Activar la compartició
cupsctl --share-printers

# Les impressores CUPS apareixeran als clients Windows automàticament
# si el firewall permet el port 631 (IPP) i 5353 (mDNS)

Accedir a una impressora Windows des de Linux

# Instal·lar el client d'impressió
sudo apt install cups-client -y

# Afegir la impressora Windows (SMB)
sudo lpadmin -p HP-Professors \
    -E \
    -v smb://THOS/pgarcia:password@SERVIDOR/HP-Professors \
    -m everywhere

# Definir com a impressora per defecte
sudo lpadmin -d HP-Professors

6.7. Seguretat en entorns heterogenis

Firewall a Linux (ufw)

# Activar el firewall
sudo ufw enable
sudo ufw status verbose

# Regles bàsiques per a un servidor de fitxers/domini
sudo ufw allow ssh                    # SSH (port 22)
sudo ufw allow 139/tcp                # NetBIOS (Samba)
sudo ufw allow 445/tcp                # SMB (Samba)
sudo ufw allow 88/tcp                 # Kerberos
sudo ufw allow 88/udp
sudo ufw allow 389/tcp                # LDAP
sudo ufw allow 636/tcp                # LDAPS (LDAP segur)
sudo ufw allow 53/tcp                 # DNS
sudo ufw allow 53/udp
sudo ufw allow from 192.168.1.0/24 to any port 631  # CUPS (xarxa local)

# Bloquejar una IP
sudo ufw deny from 10.0.0.5

# Veure les regles numerades
sudo ufw status numbered

# Eliminar una regla
sudo ufw delete 3

Firewall a Windows Server (PowerShell)

# Veure les regles actives
Get-NetFirewallRule | Where-Object {$_.Enabled -eq "True"} |
    Select-Object DisplayName, Direction, Action

# Crear una regla per permetre el tràfic SMB
New-NetFirewallRule `
    -DisplayName "Permetre SMB entrant" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 445 `
    -Action Allow

# Bloquejar un port
New-NetFirewallRule `
    -DisplayName "Bloquejar Telnet" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 23 `
    -Action Block

Bones pràctiques de seguretat en entorns heterogenis

Versions d’aquest document

Domini Públic (CC0)