Cicle formatiu: Sistemes Microinformàtics i Xarxes (SMX)
Durada: 198 h (132 h centre + 66 h empresa)
Entorn: Windows Server 2025 + Ubuntu Server
Abans d’instal·lar qualsevol sistema operatiu de servidor cal verificar que el maquinari compleix els requisits mínims i recomanats.
| 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) |
| 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 |
| 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. |
/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)
| 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. |
# 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/sda1El 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># 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.cfgLes màquines virtuals (MV) permeten practicar sense maquinari físic addicional.
Eines de virtualització habituals:
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)
# 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# 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# 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 contrasenyaFitxers 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:::# 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| 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) |
\\SERVIDOR\Perfils$\\SERVIDOR\Perfils$\%username%# 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# 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/groupTipus 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"| 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. |
| 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. |
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:
| 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) |
# 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àticamentAlternativament, des d’Administrador del servidor → Agregar roles y características → Active Directory Domain Services.
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
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
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# 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"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# 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)"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.
| 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. |
Les GPO s’apliquen en aquest ordre (l’última té prioritat):
Local → Site → Domain → Organizational Unit (de la OU pare a la filla)
# 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"# 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"| 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 |
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 |
| 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.
# 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# 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# 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" -PersistPermisos 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.
# 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# 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 0Windows 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" `
-PersistNota sobre permisos: per defecte, el client NFS de Windows accedeix amb UID/GID 0 (root anònim). Si el servidor NFS té
root_squashactivat (valor per defecte), cal configurar el mapatge d’usuaris al servidor o usarno_root_squashen 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)
# 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ó)# 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 treballEl 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.
| 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·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\*"# 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\Professorsde l’espai de noms. El DFS s’encarrega de redirigir al servidor disponible.
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.
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-chainUEFI/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)# 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# 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# Ú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 # XarxaEines 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# 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# 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/# 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# 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.yamlnetwork:
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")En entorns reals és habitual trobar una barreja de sistemes operatius:
L’objectiu és que tots els sistemes puguin:
Compartir fitxers independentment del SO.
Autenticar-se de forma centralitzada.
Compartir impressores.
Tenir seguretat controlada.
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# 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# 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# 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# /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)# 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# 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# 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