# 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](https://learn.microsoft.com/es-es/windows-server/get-started/hardware-requirements?tabs=cpu&pivots=windows-server-2025)

| 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](https://ubuntu.com/server/docs/reference/installation/system-requirements/#system-requirements)

| 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

- Consultar la **HCL** (*Hardware Compatibility List*) del fabricant del SO.
- Verificar que els controladors dels dispositius (xarxa, RAID, etc.) estan suportats.
- Comprovar les versions del firmware (BIOS/UEFI) i actualitzar si cal.


## 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

```nano
/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)

```bash
# 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

- **Desktop Experience (GUI):** inclou l'escriptori gràfic complet. Més recursos, menys segura.
- **Server Core:** sense GUI, administrada per PowerShell/línies d'ordres. Menys superfície d'atac.
- **Nano Server:** imatge mínima per a contenidors i entorns cloud.

### Debian/Ubuntu Server

- **Instal·lació interactiva:** l'instal·lador guia pas a pas (ncurses).
- **Instal·lació desatesa (preseed):** automatitzada amb un fitxer de resposta.
- **Netinstall:** descarrega els paquets des d'Internet durant la instal·lació.


## 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
<?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)

```bash
# 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
```

```bash
# 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:**

- **VirtualBox** (lliure, multiplataforma)
- **VMware Workstation / ESXi** (propietari)
- **KVM/QEMU** (Linux, integrat al nucli)
- **Hyper-V** (Windows, inclòs a Windows Server)
- **IsardVDI** Plataforma de virtualització d'escriptoris (VDI, Virtual Desktop Infrastructure) de codi obert, desenvolupada a Catalunya, orientada principalment a entorns educatius.

### Configuració recomanada d'una MV per a servidor

```nano
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

```bash
# 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
```

```powershell
# 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

```bash
# 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
```

```powershell
# 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](https://proferamon.com/tic/basics.html#gestió-dusuaris-i-grups)

```bash
# 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). |

```bash
# 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

```powershell
# 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**:
   - Camp *Ruta del perfil:* `\\SERVIDOR\Perfils$\%username%`

### Perfils a Linux (PAM + directori home)

```bash
# 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

```bash
# 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):**

```nano
Accounts (usuaris) → Global groups → Domain Local groups → Permissions
```

```powershell
# 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:**

- **Objectes:** representació dels recursos (usuari, equip, grup, impressora…).
- **Atributs:** propietats de cada objecte (nom, correu, contrasenya…).
- **Esquema:** defineix quins tipus d'objectes i atributs existeixen.
- **Arbre:** jerarquia d'objectes organitzada com un arbre de directoris.
- **Bosc:** conjunt d'arbres de directoris que comparteixen esquema i catàleg global.

### Protocols estàndard

- **LDAP** (*Lightweight Directory Access Protocol*): protocol estàndard per accedir i modificar un directori.
- **Kerberos:** protocol d'autenticació segura basat en tikets.
- **DNS:** essencial per a la resolució de noms en un domini AD.

### 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

```powershell
# 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

```nano
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

```nano
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ó.

```powershell
# 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

```powershell
# 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. |

```powershell
# 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)

```bash
# 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):

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

### Gestió de GPO amb PowerShell

```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ó

```powershell
# 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)

```bash
# 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)

```bash
# 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

```powershell
# 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)

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

# Configuració principal: /etc/samba/smb.conf
sudo nano /etc/samba/smb.conf
```

```ini
[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
```

```bash
# 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
```

```bash
# 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](https://proferamon.com/tic/nfs.html) (Network File System) – Linux

```bash
# 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
```

```bash
# 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.

```powershell
# 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:
>
> ```bash
> # /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

```powershell
# 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)

```bash
# 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ó

```powershell
# 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

```powershell
# 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](https://proferamon.com/tic/scripts.html) (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](https://proferamon.com/tic/scripts.html).



# 5. Monitoratge i ús del sistema operatiu en xarxa

## 5.1. [Arrencada](https://proferamon.com/tic/arrencada.html) del sistema operatiu

### Procés d'arrencada Linux ([systemd](https://proferamon.com/tic/arrencada.html#quina-difer%C3%A8ncia-hi-ha-entre-systemd-sysvinit-i-openrc-com-a-sistemes-dinit))

```nano
BIOS/UEFI → Bootloader (GRUB2) → Nucli (kernel) → initramfs → systemd (PID 1) → target (runlevel)
```

```bash
# 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

```nano
UEFI/BIOS → MBR/GPT → Bootloader (bootmgr) → Selecció del SO (BCD) → winload.exe → ntoskrnl.exe → smss.exe → winlogon.exe
```

```powershell
# 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](https://proferamon.com/tic/journalctl.html#què-és-journalctl) en l'arrencada

### Linux: problemes comuns

```bash
# 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

```powershell
# 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

```bash
# Ú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
```

```bash
# 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. |

```powershell
# 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

```bash
# 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](https://proferamon.com/tic/at_cron.html#cron-tasques-periòdiques))

```bash
# 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)

```powershell
# 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

```bash
# 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
```

```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"
```

```bash
# 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](https://proferamon.com/tic/imatges/0224/022401.png)

L'objectiu és que tots els sistemes puguin:

- **Compartir fitxers** independentment del SO.

- **Autenticar-se** de forma centralitzada.

- **Compartir impressores.**

- **Tenir seguretat** controlada.


## 6.2. Samba com a controlador de domini ([AD DC](https://proferamon.com/tic/samba-ad-dc.html))

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.

```bash
# 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

```powershell
# 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](https://proferamon.com/tic/samba-ad-dc.html#unió-de-clients-linux-al-domini) (sssd + realmd)

```bash
# 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)

```bash
# 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
```

```bash
# 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

```bash
# /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

```bash
# 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](https://proferamon.com/tic/iptables.html) (ufw)

```bash
# 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)

```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

- Usar **SSH** (port 22) en lloc de Telnet per a l'administració remota de Linux.
- Usar **RDP amb NLA** (*Network Level Authentication*) per a Windows.
- Aplicar el **principi de mínim privilegi**: cada usuari/servei té sols els permisos imprescindibles.
- Mantenir els sistemes **actualitzats** (pegats de seguretat).
- Usar **contrasenyes fortes** i autenticació de dos factors quan sigui possible.
- **Xifrar** les comunicacions: LDAPS en lloc de LDAP, SMB 3.x amb xifratge activat.
- **Registrar** els accessos i revisar els logs periòdicament.
- Realitzar **còpies de seguretat** regulars i verificar-ne la restauració.

#### Versions d'aquest document

+ HTML - [0224.html](https://proferamon.com/tic/0224.html)
+ PDF - [0224.pdf](https://proferamon.com/tic/docs/0224.pdf)
+ ODT - [0224.odt](https://proferamon.com/tic/odt/0224.odt)
+ MD - [0224.md](https://proferamon.com/tic/md/0224.md)

[Domini Públic (CC0)](https://creativecommons.org/publicdomain/zero/1.0/deed.ca)

