Instal·lació i configuració programari de base i gestió de fitxers

Imatge portada

Índex

Conceptes bàsics

Quan treballem amb discs i sistemes de fitxers, és important entendre com s’organitza la informació dins del dispositiu d’emmagatzematge. Cada nivell (físic, lògic i del sistema operatiu) té les seves pròpies unitats i funcions.

La mida del bloc y cluster així com el sistema de fitxers pot ser diferent a cada particio del disc.

Si llistem amb fdisk -l per trobar la nostra partició

Particio fdisk mida block

Podem observar que la mida del sector es 512 bytes

Amb el temps i l’ús, els arxius es creen, esborren i modifiquen contínuament. Aixó pot fer que els blocs es distribueixin de manera dispersa al disc.

La fragmentació interna és quan es desaprofita espai del disc perquè els blocs són massa grans per al que s’ha de guardar dintre. Problema comú del FAT32.

Exemple: un fitxer de 8 bytes ocupa un bloc de 4096 bytes: tenim 4088 bytes desaprofitats.

Per mirar la mida del bloc de la partició podem usar tune2fs, filtrar per Block

Informe tune2fs

Per a la fragmentacio externa amb la comanda “e4defrag” ens indica si una partició fa falta fragmentar.

Informe e4defrag

En cas de haver desfragmentar, traiem el paràmetre -c

Fragmentant

Sistemes de fitxers habituals:

Per poder gestionar correctament un disc, primer cal dividir-lo o organitzar-lo lògicament. Que són:

Abans d’utilitzar una partició ( o en la propia fabricació del dispositiu d’enmagatzematge). Cal aplicar un formatat, és a dir, preparar-la amb un sistema de fitxers concret. N’hi han de 3 tipus:

Podem veure l’espai desaprofitat amb una simple prova.

Escrivint un text com “Bon dia” que són 8 bytes reals i en el sistema ocupa 4096 bytes (la mida d’un bloc).

echo "Bon dia" > hola

Bytes arxiu text pla 8 Bytes reals

Això significa que hi ha fragmentació interna de 4096 − 8 = 4088 bytes, és a dir, espai desaprofitat dins del bloc.

Formes de formatar

Fent servir GPARTED i la linia de comandes, formatare dues particions a EXT4 i NTFS respectivament. Intentant canviar la mida del bloc si ho permet l’eina.

Amb GPARTED

És una eina visual per crear, eliminar o formatar particions.

Els passos a seguir són:

  1. Iniciem l’eina i Seleccionem el disk dalt a la dreta
Logo GPARTED Prompt contrasenya root per iniciar com root GPARTED
GPARTED iniciat Gparted seleccionant disc
  1. Creem nova taula particions GPT

Gparted creació taula particions 1 Gparted creació taula particions 2

  1. Creem nova partició i la formatem a EXT4

GParted creacio particio1 - 1 GParted creacio particio1 - 2 Gparted partició 1 creada

  1. Repetim el pas anterior pero a format NTFS i fem clic en Aplicar totes les operacions

GParted creacio particio2 GParted aplicar totes les operacions GParted aplicar totes les operacions > Aplicar Aplicar > Cerrar

  1. Comprovem que les dues particions és troben creades

GParted comprovacions particions creades

Via linia comandes

Amb fdisk podem crear i modificar particions manuals.

Posterior d’identificar el disc amb el paràmetre -l, he creat una partició nova primaria fins al sector 204600

Creant particio 1 fdisk

I una altra en el que resta, comprovem amb fdisk que ho tenim creat.

Creant particio 2 fdisk Comprovació particions creadesfdisk

Posteriorment, amb mkfs.ext4 -b 2048 /dev/sdb1estem formatant amb una mida de block diferent a la partició 1

Formatant particio 1 mida bloc 2048 i en EXT4

I podem comprovar amb tune2fs -l /dev/sdb1 | grep Block

Comprovació mida bloc tune2fs

I a l’altra partició com a NTFS per a que Windows ho reconegui mkfs.ntfs /dev/sdb1

Formatant particio 2 a NTFS

En el GParted podem comprovar que es troben les particions

Comprovació particions en GParted

Muntatge

Per treballar amb aquestes particions les hem de muntar, per això, se sol realitzar el següent:

He creat les dues carpetes a on muntare cadascun de les particions

Creació carpetes muntatge

Afegim un arxiu per a despres de muntar, comprovar que no es trobara dintre.

Creació arxius pre-muntatge

Montem “temporalment” amb mount -t ext4 /dev/sdb1 /mnt/particio-linux, i afegim un arxiu dintre

Muntatge temporal partició 1 EXT4

En reiniciar no tornem a veure l’arxiu, de fet ni es troba muntat.

Comprovació post muntatge i reinici, l'arxiu no es troba

Si volem fer-ho permanent, ho afegim al /etc/fstab, la linia que he afegit ha sigut

/dev/sdb1   /mnt/particio-linux   ext4   defaults   0  1

El fitxer de **/etc/fstab ** indica què s’ha de muntar automàticament en iniciar el sistema i com s’ha de fer.

Cada línia descriu una partició o dispositiu amb sis camps separats per espais o tabulacions:

Afegir muntatge a inici sistema amb fstab

Ara en reiniciar, es guarda el muntatge i veiem l’arxiu

Comprovació post muntatge i reinici, l'arxiu es troba

Gestió de processos

Els processos són programes en execució dins del sistema. Cada procés té un PID (Process ID), un usuari propietari i pot estar en diferents estats (actiu, en espera, aturat…). El sistema operatiu planifica i reparteix el temps de CPU entre ells.

Eines bàsiques per gestionar-los:

A nivell pràctic, cada procés hereta permisos de l’usuari que l’ha iniciat i pot estar vinculat a un servei o a una sessió d’usuari.

Ara veurem com fer-les servir minimament.

Amb pstree

Paràmetre Funció

Paràmetre Funció
-p Mostra el PID de cada procés.
-u Mostra l’usuari propietari de cada procés.
-h Ressalta el procés actual (útil quan es filtra).
-n Ordena processos per PID dins de cada arbre.
-a Mostra els arguments complets del procés (cmdline).

Per filtrar un procés podem usargrep

PSTree filtrar per usuari

Aqui podem veure els processos de root i tambe filtrant per la terminal

PSTree en root PSTree en root, filtrant per la terminal amb grep

ps Aquesta comanda, mostra informació sobre una selecció dels processos actius. Si volem una actualització repetitiva de la selecció i la informació mostrada, hauriem de usar top en comptes d’això.

Alguns dels parametres mes comuns són:

Psaux

Podem filtrar per obtenir les terminals que l’usuari fa servir amb ps aux | grep usuari | grep tty

Aixó, mostra els processos d’un usuari concret que s’estan executant en terminals.

psaux filtrant per usuari per obtenir la terminal

Si volem matar un proces, podem fer servir kill, te diversos modes de terminar:

Tipus de Kill Senyal Descripció Comanda
Kill suau SIGTERM Demana al procés finalitzar netament kill PID
Kill forçat SIGKILL Mata immediatament, sense netejar recursos kill -9 PID
Recarregar config SIGHUP Demana al procés que recarregui la configuració kill -1 PID
Pausa SIGSTOP Pausa l’execució del procés kill -STOP PID
Continuar SIGCONT Continua un procés pausat kill -CONT PID
Interrupció Ctrl-C SIGINT Senyal d’interrupció (Ctrl+C) kill -2 PID
Abortar SIGABRT Senyal d’error abortat, sovint genera core dump kill -6 PID

Aqui tenim un exemple obrint xclock al fons amb el “&” i matant-lo suau, mentres comprovem amb ps aux que s’ha mort.

Kill xclok & - background

També tenim dos altres comandes mes simples i que ens permeten buscar pel nom del procés, que són:

Nota: si estem en interficie grafica, podem usar xprop (necessites usar servidor X (Xorg)) per obtenir les propietats d’una finestra, que inclou també el PID. I matar la ventana amb xkill

Pgrep i pkill

xprop i xkill

Per altra banda també tenim la comanda pidof que en retorna el PID del programa.

pidof

Amb top Poden veure els processos en temps real, del que mes consumeix a menys

Top

Quan executem top, veiem un resum del sistema i una llista de processos amb diferents columnes:

Inclou informació global del sistema:

Columna Significat
PID Identificador únic del procés.
USER Usuari que ha iniciat el procés.
PR Prioritat del procés (valors negatius = més prioritat).
NI Nice value: ajust de prioritat (-20 a +19).
VIRT Memòria virtual total utilitzada pel procés.
RES Memòria física (RAM) real utilitzada.
SHR Memòria compartida amb altres processos.
S Estat del procés (S = sleeping, R = running, Z = zombie…).
%CPU Percentatge de CPU que consumeix.
%MEM Percentatge de RAM que consumeix.
TIME+ Temps total de CPU consumit.
COMMAND Nom o ruta del procés executable.

Respecte als estats, podem troba:

Mes informació els tipus estats: https://tldp.org/LDP/tlk/kernel/processes.html

Com usar-lo

Matar amb top

El numero negatiu en PR es que te major prioritat, no podem augmentar o disminui. Si augmentem el NI, disminueix la prioritat.

Per a donar mes prioritat a un proces que s’esta executant, usem renice -n -19 -p xclock &

Renice test

A on:

Nota: Els valors de bondat van de -20 (el més favorable al procés) a 19 (el menys favorable al procés). Segon el manual En cas posar-ho superior al limit, es mante a 0

Per llançar-los directament nou processos amb una prioritat determinada usem sudo nice -n -18 xclock

que tambe podem canviar novament… Aqui podem veure varies comprovacions del nices, inclos mirant els limits a quin valor posat. Ha posat 39 al valor negatiu mes petit (-20) i 1 al més gran (0)

Comprovacions nice i renice

I en l’altra terminal observem la prioritat amb htop.

HTOP comprovacio nice i renice

Nota: podem observar que el PRI és ligerament diferent, aixó es perque eines com htop, btop, recalculen la prioritat per mostrar la forma més intuïtiva; Mentre que top o ps , mostren la prioritat real del kernel (/proc/[pid]/stat)

Detallets respecte als processos

A Linux, un procés es pot executar en primer pla (foreground) o segon pla (background).

En una comanda que hem executat, amb CRTL+Z podem aturar momentaniament (durant el que duri la sessió) un procés. I podem observar que es troba com “treball” de fons amb jobs veiem els processos en segon pla/stop que hem posat

Nota: - (actual) i + (previ) són marcadors especials de treball, que indiquen prioritat per a certes operacions del shell.

Control + Z + jobs

La comanda fg per tornar/ reanudar un treball (per defecte a primer pla)

Jobs i fg

També tenim bg reanuda un proces susp (STOP) en segon pla.

Bg proves

Respecte a iniciar processos directament en segon pla, per tenir lliure la terminal.

Segon pla amb &

El htop es el top en esteroides amb colors i més visual i interactiu.

HTOP

El btop el mateix per més modern i en més animacions.

BTOP interficie, buscant amb / al sleep previ

Copies de seguretat i automatització tasques

Teoria copies seguretat

Una còpia de seguretat (còpia de seguretat) és una còpia de dades pensada per a la recuperació en cas de pèrdua, corrupció o desastre. S’emmagatzema de forma independent de l’origen (idealment en un altre lloc/servidor/servei cloud), i sovint segueix polítiques de retenció, versions i proves de restauració.

Tipus comuns: completa, incremental i diferencial. | Tipus de còpia | Què copia? | Velocitat | Espai ocupat | Avantatges | Inconvenients | |—————-|————|———–|————–|————|—————-| | Completa | Totes les dades cada vegada | Lenta | Molt | Molt segura i fàcil de restaurar | Necessita més temps i espai | | Incremental | Només els canvis des de l’última còpia (de qualsevol tipus) | Molt ràpida | Poc | Estalvia molt espai i temps | Restauració més lenta (cal la completa + totes les incrementals) | | Diferencial | Canvis des de l’última còpia completa | Ràpida | Mitjà | Restauració més simple que incremental | Cada dia ocupa més espai fins a la següent completa |


Ejemples: | Tipus de còpia | Exemple de còpies fetes | Si perds un fitxer el dijous, què necessites per recuperar-lo? | Explicació senzilla | |—————-|————————–|—————————————————————|———————-| | Completa | Dilluns (completa), Dimarts (completa), Dimecres (completa) | La còpia completa de dimecres | Cada dia tens una còpia total nova. Només agafes l’última (la de dimecres) i ho tens tot fins ahir. | | Incremental | Dilluns (completa), Dimarts (incremental), Dimecres (incremental) | Dilluns + Dimarts + Dimecres | Es necessita la cadena: la completa de dilluns i totes les incrementals fins al dimecres, perquè cadascuna només guarda els petits canvis del dia. | | Diferencial | Dilluns (completa), Dimarts (diferencial), Dimecres (diferencial) | Dilluns + Dimecres | La diferencial de cada dia conté tots els canvis des de dilluns. Per això només cal la completa i l’última diferencial. |


Dintre dels sistemes d’emmagatzematge, tenim els RAID, que d’unir diversos discs perquè treballin junts.

Important: RAID no és una còpia de seguretat. Si esborrem fitxers o entra un virus, RAID replicarà l’error a tots els discs.


Una imatge (disk image) És una còpia exacta (portable) de tot un disc o partició: sistema operatiu, programes, configuracions i dades. Serveix per clonar equips o restaurar-ho tot tal qual estava.

Un snapshot És una captura puntual de l’estat d’un sistema de fitxers o d’un dispositiu de blocs que normalment depèn de la tecnologia d’emmagatzematge (LVM, ZFS, Btrfs, VM snapshots, etc.). És ràpid de crear i sovint és incremental: només registra els canvis des del moment del snapshot. Els snapshots són ideals per a punts de recuperació ràpids o per a proves, però solament són segurs com a còpia de seguretat si s’emmagatzemen fora del mateix suport físic (un snapshot local no protegeix contra fallades del mateix disc).

Diferències clau (resum):

La còpia de seguretat guarda les teves dades en un lloc segur per recuperar-les, la imatge del disc copia tot el sistema exactament tal com és, i el snapshot és una foto ràpida de l’estat actual per tornar enrere però no és segur si es guarda al mateix disc.

Nota: no confiar només en snapshots locals com a única protecció; implementar una estratègia que combini snapshots per recuperacions ràpides i còpies de seguretat fora del lloc per a desastres.

Practica comandes backup

Previ a les practiques hem afegit dos discos d’1 GB i formatat (fdisk)

Discos VirtualBox Particionat

cp

És una copia simple no intel·ligent, només transfereix fitxers localment, es molt simple d’utilitzar però no optimitzar.

Per a comanda cp, podem comprovar que la copia es simple i el que esborrem de la font original no afecta la la nova: El paràmetre -R és per realitzar la copia recursivament.

cd Documents
mkdir prova
touch prova2

cd /var
mkdir copies
mount -t ext4 /dev/sdb1 /var /copies

cp -R /home/ubuntu-cire/Documents/* /var/copies
ls copies
touch /home/ubuntu-cire/Documents/hola
rm -r /home/ubuntu-cire/Documents/prova
cp -R /home/ubuntu-cire/Documents/hola

ls copies/

Copia amb CP

rsync

És una eina intel·ligent que només copia els fitxers modificats i la sincronització pot ser local o en remot (via SSH). Amb rsync si esborrem algo a l’origen perdem a la copia

mkdir /home/ubuntu-cire/Documents/adeu
rm /home/ubuntu-cire/Documents/hola
rsync -av --delete /home/ubuntu-cire/Documents /var/copies

Copia amb rsync

dd

És una eina per a clonar discos o particions i no es intel·ligent, copia tots els sectors.

dd if=/dev/sdb1 of=/dev/sdc1 bs=1M status=progress

Per exemple, en la següent comprovació, he fet una copia dels sectors del sdb1 al sdc1 i comprovat el checksum (un valor únic de l’arxiu per a verificar integritat de dades), que és igual.

DD Test + checksum

Recomanació curta: per backups regulars i sincronització usa rsync; per clonar imatges bit-a-bit o migrar discos usa dd (o ddrescue per discos danyats). Sempre provar amb –dry-run (rsync) i verificar checksums (dd).

Quotes de disc

Les quotes de disc limiten l’espai i el nombre d’inodes que un usuari o un grup pot utilitzar en un sistema de fitxers. Permeten evitar que un usuari esgoti tot el disc i poden definir límits “soft” (temporals, amb període de gràcia) i “hard” (absoluts).

El paquet habitual s’anomena quota (i les seves comandes principals són quotacheck, quotaon, edquota, repquota, quota). A sistemes amb XFS és habitual usar xfs_quota.


Nota:


Durant aquesta practica hem usat:

equota -u usuari –> veure quotes d’un usuari setquota -u usuari –> establir quotes d’un usuari repquota /dev/sdc1 –> informe quotes de tots els usuaris el que ocupen

quotaon /mnt/dades –> activar quotes quotaoff /mnt/dades –> desactivar quotes quotacheck -cug /mnt/dades –> crear arxius per a quotes d’usuari i grup si no estan per defecte

setquota -T -u primer 1296000 1296000 /mnt/dades –> establir temps de gràcies a 1 usuari i en segons (el dies) setquota -t –> modificar el període de gràcia per a tots per defecte

Amb dd hem anat creat arxius simple fent servir copiant de l’arxiu especial zero: dd if=/dev/zero of=nom_arxiu bs=1K count=800

Aquesta és la configuració bàsica que hem seguit:

  1. Instal·lar el paquet:

Quota installation

  1. Afegir opcions al /etc/fstab per la partició (exemple per ext4): /dev/sdc1 / ext4 defaults,usrquota,grpquota 0 0

Configuració fstab usrquota i grpquota

  1. Muntar la partició o reiniciar: sudo mount -a

Muntatge i creació

  1. Activar les quotes amb sudo quotaon -av

I les podem desactivar amb quotaoff

Activar i desactivar quotes amb quotaon i quotaoff

Podem comprovar si un usuari te quota amb quota -u usuari

Comprovació quota amb quota i el paràmetre -u

  1. Assignar límits a un usuari o grup: sudo edquota -u nom_usuari

    (editar soft/hard blocks i inodes)

Quan executem sudo edquota -o usuari apareix un bloc similar a:

Filesystem  blocks  soft  hard  grace  files  soft  hard  grace
/dev/sda1   20480   10000 12000        512    100   150
Columna Significat Comportament / Notes
Filesystem Dispositiu o punt de muntatge on s’apliquen les quotes Exemples: /dev/sda1, /home
blocks (ús) Espai utilitzat actualment per l’usuari ≤ soft: dins del límit.
soft < blocks ≤ hard: permès, entra en gràcia.
> hard: bloqueig d’escriptura.
soft (límit tou) Llindar d’avís; en superar-lo comença la gràcia Si és 0 → cap límit tou configurat.
hard (límit dur) Límite absolut, no superable Si s’arriba o supera, les escriptures fallen fins reduir l’ús.
grace Temps restant del període de gràcia Actiu quan se supera soft.
Si expira, el sistema actua com si s’hagués superat hard.
files (inodes) Fitxers/directoris utilitzats per l’usuari Igual que blocks:
≤ soft: correcte.
soft < files ≤ hard: en gràcia.
> hard: no es poden crear més fitxers.

Edició quota amb edquota

  1. Per consultar informes: sudo repquota -a i quota -u nom_usuari

Consulta informe primer arxiu dd

I finalment accedim a l’usuari, creem un arxiu amb algun tamany (jo he fet de 1K) i comprovem amb repquota que ha consumit

Comprovacio soft limit

I al crear el segon de 1K, superem el soft, pero no el hard aixi que encara podem seguir.

Imatge 1 Imatge 2
Arribant al soft Arribant al hard

Per establir un període de gràcia específic per a un usuari, utilitzem

setquota -T -u primer 1296000 1296000 /mnt/dades

La primera columna de numeros són blocks (15 dies) i la segona inodes (15 també)

alt text

Per establir el període de gràcia per a tots els usuaris, utilitzem setquota -t 259200 259200 -a

Estableix el període per a tots

Finalment desactivem les quotes i l’usuari pot seguir escrivint.

Desactivant les quotes, pot seguir escrivint

Practica programes backups

Previament tinc un disc dur d’1GB per a guardar les proves.

A banda del ja mencionat Timeshif en el sprint 1, n’hi han molts més programes que tenen caracteristiques diferents, com:

Jo per a la prova he fet servir duplicati, primer he descarregat amb wget el binari .deb i instal·lat

wget -q https://updates.duplicati.com/stable/duplicati-2.2.0.1_stable_2025-11-09-linux-x64-gui.deb
dpkg -i duplicati-2.2.0.1_stable_2025-11-09-linux-x64-gui.deb

Instalacio duplicati

Després d’instal·lar, he accedit i seguit els següents passos:

  1. Preparat les carpetes de prova
mkdir duplicati-test
cp -r Descargas Documentos duplicati-test/

Preparació entorn

  1. He creat el backup complet (primer backup)

Accedint mitjançant web al port 8200, afegint ja des de l’inici una contrasenya

Passphrase duplicati

Seguidament he anat fent el següent:

Que seria l’equivament a:

duplicati-cli backup "file:///mnt/particio-backups" ~/duplicati-test
Fer clic a Add a new backup General backup setting screen 1
Backup destionation Source data
Schedule Other options
  1. Per no haver d’esperar, l’he executat, ha tardat 0.3 segons amb 14.27 Kib de pes

I efectivament, s’ha fet la copia en la ruta, amb compressió + encryptació AES de les dades.

Mostrant la duració i pes de la copia feta+ que s'ha fet amb AES

També si mirem en Restore que si estan llistats els arxiu.

Mostrant llista copia en Restore

Per a veure la “copia incremental”, simplement he afegit una altra carpeta a l’origen i tornat a executar la copia, observem que la mida no varia tant, perque sóls ha enregistrat els canvis.

Movent carpetes arxius Executant de nou la copia
Mostrant les dues copies en Restore  

He fet un canvi en un dels arxius del mateix, i esborat un arxiu, per mostrar que en la recuperació tenim l’arxiu novament i el canvi és manté

Canvi text en arxiu i esborrar Recuperació part 1 - seleccionar arxius
Recuperació part 2 - opcions de restauració Recuperació finalitzada
Compració recuperació  

Teoria automatització scripts, cron i anacron

Són dos eines de automatització per a executar tasques periodiques.

Cron vs anacron cron executa tasques programade en una data i hora especifiques, si el sistema esta apagat, la tasca es perd.

anacron Ideal per a tasques periodiques, a on o cal una data i hora especifiques, normalment s’utitlitza per a tasques de manteniment del sistema.

I no requereix que el sistema estiqui obert, perqué quan s’obrigue, s’executara, no es perd la tasca com al cron

Pràctica automatització

cron

La configuració de l’arxiu /etc/crontab, afecta a tots els usuaris. Les seves columnes són:

# .---------------- minut (0 - 59)
# |  .------------- hora (0 - 23)
# |  |  .---------- dia del mes (1 - 31)
# |  |  |  .------- mes (1 - 12) O bé jan,feb,mar,apr ...
# |  |  |  |  .---- dia de la setmana (0 - 6) (Diumenge = 0 o 7) O bé sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  *  usuari  comanda

Configuració /etc/crontab

Valors especials de cron

A més de la sintaxi normal amb minut hora dia mes dia_setmana, cron permet algunes paraules clau predeterminates per simplificar la programació de tasques comunes:

Valor Que fa Exemple
@reboot Executa la tasca una sola vegada al arrencar el sistema @reboot /home/usuari/inici.sh
@yearly o @annually Cada any, equivalent a 0 0 1 1 * @yearly /home/usuari/backup.sh
@monthly Cada mes, equivalent a 0 0 1 * * @monthly /home/usuari/llistat.sh
@weekly Cada setmana, equivalent a 0 0 * * 0 @weekly /home/usuari/neteja.sh
@daily o @midnight Cada dia, equivalent a 0 0 * * * @daily /home/usuari/alerta.sh
@hourly Cada hora, equivalent a 0 * * * * @hourly /home/usuari/actualitza.sh

Prova feta a classe

Per a configurar la tasca a un usuari especific, executem:

crontab -e -u usuari

Edició contrab usuari

Edició contrab usuari 2

En /etc/cron.* tenim carpetes que els scripts que posem, anacron els executara

Carpetes cron

La prova que hes fet es un script simple que faci copia de segurat del directori Descargas a Documentos a les 13:35

Prova cron a les 13:35

I podrem comprovar en la hora i minut, és fa i els arxius estan.

Comprovació funcionament cron


La meva propia prova

La meva propia prova que he fet és executar una alterta cada 2 min, per recordar guardar el que sigui.

Configuració cron Comprovació alerta Comprovació log alerta

anacron

Prova feta a classe

Per a realitzar la mateixa prova amb l’anacron, seria el mateix, afegint-hi l’escript en /etc/cron.daily/ sense l’extensió .sh

Prova anacron

Editat l’arxiu /etc/anacrontab , per a canviar els minuts en que tarda en executar a 1 minut (la segona columna)

Edició configuració anacrontab

L’arxiu té les següents opcions:

periode_en_dies   retard   identificador   comanda
  1. period: cada quants dies s’ha d’executar la tasca.

Exemples:

  1. delay minuts d’espera després d’arrencar el sistema abans d’executar la tasca.
  2. job-id: identificador de la tasca (per als logs i el control d’execució).
  3. command: comanda o script que s’ha d’executar.

I finalment hem d’eliminar la marca del cron.daily per a que torni a executar en aquest dia.

En /var/spool/anacron/cron.daily

Creació cron daily

I posterior a reiniciar, ja l’ha executat novament.

Comprovació cron


La meva propia prova

Per a l’anacron he fet que en inicia, recopili informació del sistema: -Temps d’arrencada del PC -Estat actual de rendiment -Dades verificables i objectives

Fent ús del següent script:

#!/bin/bash

LOG="$HOME/INFORMACIO.log"

{
  echo "===== $(date) ====="
  systemd-analyze
  systemd-analyze blame
  uptime -p
  free -h
  df -h /
} >> "$LOG"

L’he guardat al cron.daily i en el anacrontab, modificada la primera entrada del run-parts per a que s’executi al minut d’iniciar.

Configuració anacron

Posterior d’esborrar la marca de que s’ha executat cron ja i en reinicar, podem veure l’arxiu.

Esborrar imprempta i reinici

Comprovació anacron funciona recopilació sistema

Gestió d’usuaris i grups i permisos

La seguretat en Linux es basa en usuaris i grups, que determinen qui pot accedir o modificar arxius i processos.

Tipus d’usuaris

Grups Un grup agrupa diversos usuaris amb permisos comuns sobre arxius o directoris. Cada usuari pertany a:

Els grups permeten definir permisos col·lectius, per exemple, donar accés a una carpeta compartida sense fer-ho usuari per usuari.

Fitxer Funció principal
/etc/passwd Llista tots els usuaris definits al sistema.
/etc/shadow Desa les contrasenyes xifrades dels usuaris.
/etc/group Conté la llista de grups i els seus membres.
/etc/gshadow Desa contrasenyes i administradors dels grups.

Directoris i fitxers importants

En Linux, la informació d’usuaris i grups està centralitzada en fitxers de configuració de text dins /etc.

Directoris importants

/etc/skel

El directori /etc/skel (de skeleton) conté els fitxers i carpetes base que es copien automàticament al directori personal de qualsevol nou usuari creat al sistema.

Quan executem adduser o useradd -m, el contingut d’aquest directori es replica dins de /home/nom_usuari, garantint que cada compte disposi d’un entorn mínim de configuració per a la shell i altres programes.

1. Proves del skel A mode d’exemple, la prova mes simple que podem fer es crear una carpeta/ arxiu que vulguem que tots els usuaris tinguin. I podrem observar que als nous usuaris, tenen aquesta carpeta.

Proves SKEL

2. Proves .bash_logout

En sortir, potser a l’usuari l’interessa que és moguin Captures, Baixades a una carpeta de sessió, que identifica quantes vegades ha entrat i sortit (per si l’hi agrada tindreu net cada vega).

Això, ho he aconseguit afegint unes quantes linies en aquest arxiu

ORIGEN="$HOME/Imágenes/Capturas de pantalla/"
DESTI="$HOME/sessions/session_$(date +%d_%Y)"
mkdir -p "$DESTI"
mv "$ORIGEN"/* "$DESTI"

Així es troba l’estructura previ a sortir.

Configuració logout, previ sortir

I aquesta es l’estructura més neta:

Comprovació .bash_logout

3. Proves .profile Una de les coses que un usuari podria valorar, és que en iniciar sessió , se l’obrir el navegador, hi han molts formes de fer-ho-

Configuració .profile

I podem comprovar que s’obri.

Comprovació profile

4. Proves .bashrc Com a admin, per a quedar amigables amb l’usuaris, podriem fer que en obrir la terminal s’envie una notificació deien “Un gran poder, convella una gran responsabilitat”. I també podem afegir una eina que és cowsay (una vaca ASCII) amb fortune (frases de fortuna)

Ho podem fer, fent ús notify-send

notify-send "Un gran poder, convella una gran responsabilitat"
cowsay $(whoami)
Descripció Captura
Configuració test .bashrc Configuració test .bashrc
Comprovació test .bashrc Comprovació test .bashrc

D’aquesta forma cada cop que s’obri una terminal amb bash, li surten els missatges.

Fitxers usuaris i grups

El comportament per defecte en la creació i gestió d’usuaris es defineix en diversos fitxers de configuració del sistema.

Aquests controlen paràmetres com l’UID inicial, el directori personal, els permisos predeterminats, la caducitat de contrasenyes o el grup primari assignat.

Els principals són:

Ara veurem algunes proves que podem fer.

Arxiu /etc/login.defs En aquest arxiu podem configurar coses respecte a la contrasenya de l’usuari, com la duració.

Un test simple es limitar els dies màxims abans de canviar la contrasenya (PASS_MAX_DAYS) i el maxim de canvi en un dia PASS_MIN_DAYS.

Configuració login.def

Podem comprovar que tenim 3 dies abans que caduqui la contrasenya, això, en una empresa ho podriem realitzar mensualment.

Comprovació 3 dies caducitat login.defs

I també que al intentar canviar la contrasenya amb passwd, per corroborar que efectivament no permet després del 1r intent

Nota: un altre usuari li pot canviar la contrasenya si es troba al mateix sistema sense les limitacions d’esperar

Comprovació limit canvi contrasenya login.defs

Arxiu /etc/adduser.conf Podriem afegir que tinguin permisos de root, afegit la opció de ADD_EXTRA_GROUPS, més EXTRA_GROUPS a on posem root

Configuració adduser

Podem comprovar que és troba al grup de superusuaris

Comprovació adduser sudo

Arxiu /etc/default/useradd Podriem canviar el $HOME per a que el posi a una carpeta muntada, que perfectament podria ser un recurs xarxa muntat del servidor. Així els perfils d’usuari es troben guardats ahi.

HOME=/mnt/particio-linux

Configuració i comprovacions useradd

Arxiu /etc/passwd

Conté tots els usuaris del sistema i la informació bàsica de cadascun.

Cada línia té 7 camps separats per ::

nom_usuari : x : UID : GID : GECOS : directori_home : shell
Camp Descripció
nom_usuari Nom identificatiu de l’usuari.
x Indicador que la contrasenya es troba a /etc/shadow.
UID Identificador únic incremental de l’usuari (els de sistema solen ser <1000).
GID Identificador incremental del grup principal.
GECOS Informació opcional (nom complet, telèfon, etc.).
directori_home Carpeta personal (p. ex. /home/usuari).
shell Intèrpret d’ordres per defecte (p. ex. /bin/bash, /usr/sbin/nologin).

Captura /etc/passwd

Podem identificar que és usuari que podem iniciar sessió per:

grep bash /etc/passwd

Arxiu /etc/group

Defineix els grups del sistema i els usuaris que en formen part. I no hi podem veure l’administrador, ell es troba al gshadow.

Te el següent format:

nom_grup : x : GID : membres
Camp Descripció
nom_grup Nom del grup.
x Referència al fitxer /etc/gshadow.
GID Identificador únic del grup.
membres Llista d’usuaris separats per comes.

Captura /etc/group acortat

Arxiu /etc/shadow Fitxer restringit a root, conté les contrasenyes xifrades i paràmetres de caducitat.

Te el següent format:

usuari : contrasenya_xifrada : últim_canvi : mínim : màxim : avís : inactiu : caducitat : reserva
Camp Significat
usuari Nom d’usuari.
contrasenya_xifrada Hash SHA‑512 o indicador: ! (bloquejat) o * (sense login).
últim_canvi Dies des de l’1/1/1970 de l’últim canvi de contrasenya.
mínim/màxim Dies mínims/màxims entre canvis de contrasenya.
nom_grup : contrasenya_xifrada : administradors : membres
Camp Descripció
nom_grup Nom del grup.
contrasenya_xifrada Normalment ! (sense contrasenya).
administradors Usuaris amb permís per afegir o eliminar membres.
membres Usuaris que pertanyen al grup.

Captura gshadow, excloent (-v) els bloquejats amb grep:

Captura gshadow excloent

Comandes bàsiques / gestió

En sistemes GNU/Linux, la gestió d’usuaris i grups es pot fer tant des de terminal com gràficament (en entorns com GNOME o KDE). Per obtenir ajuda sobre qualsevol comanda podem utilitzar:

man comanda
# o
comanda --help

Exercis

Crear usuari amb useradd

Com podem crear un usuari completament amb useradd, lo maxim possible?

Amb la comanda:

sudo useradd -m -s /bin/bash -c "Merda que s'actualitza cada dia i peta" -p $(openssl passwd -6) windows10

Paràmetres importants:

Creació usuari exercici exemple windows10

Canvia nom usuari

Quina comanda o comandes hem de fer servir per canviar el nom d’usuari correctament.

# Per canviar el nom d'usuari
sudo usermod -l nou_nom antic_nom

# Per canviar el nom del grup
sudo groupmod -n nou_nom antic_nom

# Per canviar carpeta personal, movent el contingut
sudo usermod -d /home/nou_nom -m nou_nom #

He canviat el nom de windows10 a windows11, el 10 ja no rep actualitzacions, ja es bon sistema.

Canvi de windows10 a windows11, marcant tots els canvi

Gestió bàsica d’usuaris i grups

En distribucions basades en Ubuntu, la configuració gràfica permet afegir o eliminar usuaris bàsics des del panell de Configuració **> **Sistema > Usuaris.

| Accedir a configuracio > Sistema > usuaris | Opcions d'usuaris nous | | —————————————————————————————– | ——————————————————————— |

També tenim l’utilitat que ve en instal·lar gnome-system-tools. Que permet un poquet més.

Gnome system Tools

Encara que és més comú fer servir comandes, que veurem a continuació.

Adduser/ addgroup

La forma més habitual i senzilla és amb:

sudo adduser nomusuari

Aquesta comanda és interactiva, demana contrasenya i opcionalment nom complet, telèfon, etc.

Creacio usuari cire

Després de crear-lo, podem comprovar el resultat a /etc/passwd o amb id:

Comprovar en passwd la creacio de cire

I veure que s’ha creat automàticament:

I tambe el seu grup:

Comprovar en group la creacio de cire

També podrem iniciar sessió gràficament amb aquest usuari.

Comprovar inici sessió cire 1 Comprovar inici sessió cire 2


addgroup

És la versió més amigable de groupadd, disponible a Ubuntu i derivades.

sudo addgroup nomgrup

Creacio grup alumnes i comprovacio que es troba

useradd/ groupadd

A banda de la posterior comanda, aquesta serveix per crear els usuaris sense demanar-nos (preguntar-nos) en l’entrada estàndard (Standard Input), ens ho permet configurar practicament amb els paràmetre.

La creació d’un usuari directe sense paràmetres amb useradd usuari no crea la carpeta d’usuari, si que crea l’usuari, grup. I assigna l’interpret SH (Dash Shell), en sistemes anteriors es possibles que assigne el Bourne Shell (sh també), que és antic i lent.

sudo useradd nomusuari

Creacio Jesus amb useradd

Podem canviar l’interpret amb la comanda usermod i el paràmetre -s

sudo usermod -s /bin/bash nomusuari

Canvi d'interpret Jesus

Per a la carpeta d’usuari, primer l’hauriem de crear amb mkdir i canviar els permisos amb chown

sudo mkdir /home/nomusuari
sudo chown -R nomusuari:nomusuari /home/nomusuari

Creació $HOME Jesus

Finalment hem d’assignar contrasenya a l’usuari, per a poder accedir-hi, podem comprovar al shadow que no n’hi ha. Això ho podem realitzat amb passwd

sudo passwd nomusuari

Afegir contrasenya jesus

En resum, per crear un usuari amb useradd minim hem d’afegir, ja sigui amb els paràmetres o nosaltres manualment:

També podem iniciar sessió amb su, encara que no compta com inici grafic.

Login amb su a jesus Login gràfic jesus
Login amb su a jesus Login gràfic jesus

Login gràfic jesus

En cás de voler bloquejar un usuari ho podem fer amb el paràmetre -L amb usermod, al passwd identifiquem que és troba bloquejat per l’exclamació a l’inici !

sudo usermod -L nomusuari

o

sudo passwd -l nomusuari

Les dues comandes són diferents tecnicament.

Amb usermod -L bloquejar el compte complet.

Encara que ambdós casos és pot continuar accedint si utilitza altres mètodes (per exemple, claus SSH).

En tots dos casos casos, a /etc/shadow apareixerà un ! davant del hash.

Per desbloquejar és el paràmetre -U

usermod -U nomusuari
passwd -u nomusuari
Bloquejant i desploquejant amb usermod -L i -U Bloquejant i desploquejant passwd -l i -u
Amb usermod Amb passwd

En l’inic gràfic amb els dos mètodes, sortiria el següent error de “Fallada autenticació en contrasenya”: De fet ni sortirá l’usuari, l’haurem de posar nosaltres

Fail login amb contrasenya jesus

Nota: els usuaris creats, per defecte no tenen permisos admin (sudo), com podem observar.


groupadd serveix per crear un grup nou al sistema. Observarem el /etc/group que

sudo groupadd nomgrup

Algunes opcions simples són:

Opció Descripció
-g GID Assigna un GID concret al grup
-r Crea un grup de sistema (UID/GID baixos, <1000)

Exemples:

# Acció Comanda / Notes
1 Creació grup simple sudo groupadd alumnes2, segueix l’ordre GID anterior
2 GID específic sudo groupadd -g 1500 alumnes3, el GID és 1500
3 Grup de sistema sudo groupadd -r alumne4, en el arxiu groups, el GID es inferior als 1000, al ser de sistema

Creació grups i comprovació grups

usermod / grupmod

Previament mencionat, permeten modificar propietats usuaris i grup existents Tenen la següent estructura:

sudo usermod [opcions] nomusuari
sudo groupmod [opcions] nomgrup

Alguns exemples d’ús (a banda dels ja mostrats) són:

sudo usermod -aG sudo nomusuari   # afegir a un grup
sudo usermod -d /nou/home -m nomusuari  # canviar carpeta personal, movent el contingut

Afegit a jesus a grup root i modificant $HOME

adduser / gpasswd

El mètode més simple per afegir l’usuari a un grup és amb adduser, el primer paràmetre es el nom d’usuari i el segon el del grup.

sudo adduser nomusuari nomgrup

Afegint usuari cire a grup alumnes

L’altre metode és amb el paràmetre -a amb gpasswd

sudo gpasswd -a nomusuari nomgrup

Afegint usuari cire i jesus a grup alumnes2

També está sudo usermod -aG, previament mencionat.

userdel/ grupdel

Podem esborrar amb userdel, si afegim el paràmetre -r per esborrar “recursivament”, sense l’opció no esborra la carpeta $HOME de l’usuari.

sudo userdel nomusuari
sudo userdel -r nomusuari
Sense el paràmetre Amb el paràmetre
userdel sense recursiu userdel amb recursiu

Per borrar un grup podem simplement amb grupdel o delgroup

Eliminacio completa jesus

sudo groupdel nomgrup

Eliminació basica amb delgroup i groupdel

També podem fer servir deluser amb --remove-all-files (per sols arxiu) o --remove-home. Normalment si esborrem un usuari, és problable que vulguem tots els seus arxius repartits en el sistema fora.

sudo deluser --remove-all-files --remove-home nomusuari

Eliminació d'usuari amb deluser

chage

La comanda chage ens permet visualitzar i modificar les polítiques de caducitat i expiració d’usuaris.

Una prova que podem fer és la de forçar que caduqui la contrasenya. Aixó en el cás d’un despit d’empleat, és possible que ho hàgim de fer.

Acció Captura
Execució chage -E 0 Execució chage -E 0
Comprovació compte bloquejat Comprovació compte bloquejat

Per traure la caducitat seria chage -E -1

Hi ha un altre interessant que és el -d que posa la data de caducitat de la contrasenya a 0. Obligant a que en el proxim inici de sessió, es canvïi.

per si volem fer rotació contrasenya a un usuari en específic.

Comprovació canvi contrasenya

Permissos

En sistemes UNIX, els permisos fan part del sistema. Sense ells no podem visualitzar, alterar o executar fitxers, entrar en directoris o llistar-ne el contingut. És basen en tres atributs fonamentals:

Nota: si surt - és que no te permissos

La seva estructura es la següent:

Estructura permissos

[d/-][rwx][rwx][rwx]
│    │    │    └── Altres (others)
│    │    └──────── Grup
│    └───────────── Propietari (owner)
└────────────────── Tipus: d = directori, - = fitxer

A banda existeixen permissos especials, com:

SUID, user + s (pecial)

Un fitxer amb SUID sempre s’executa com a l’usuari propietari del fitxer, independentment de si l’usuari passa l’ordre. Si el propietari del fitxer no té permisos d’execució, fa servir una S majúscula aquí.

Important: A la majoria de distribucions Linux modernes, SUID en scripts de shell no funcionen per seguretat. En executables binaris sí funciona. Així que en un script .sh normal, es faria servir usuari actual. Font: https://linuxvox.com/blog/suid-not-working-with-shell-script/

SUID Test, no va i actua com l'usuari actual

SGID, other + t (sticky)

Sticky bit, other + t (sticky) L’últim permís especial s’ha anomenat bit fix. Aquest permís no afecta els fitxers individuals. A nivell de directori, restringeix l’eliminació de fitxers. Només el propietari (i root) d’un fitxer pot eliminar el fitxer dins d’aquest directori.

Tots estos permissos (ja sigui els octal o en forma llegible) i grups podem canviarlos amb chmod e chown.

Per defecte el sistema operatius tenen uns permissos teorics base de fitxer i directoris, per exemple en Ubuntu:

Nota: no s’apliquen directament perquè serien massa permissius (tothom podria llegir, escriure o entrar a tot).

Dit alló, posteriorment fan servir el umask (user file-creation mode mask), que és un número octal de quatre dígits. Aixó per obtenir permisos finals.

Es pot calcular el resultat final de dues formes diferents:

1. Restant el permís teòric amb el umask, per exemple: 2. Convertint en binari i realitzant l’operació AND
666 - 022 = 644 (rw-r–r–) permisos base (666): 110 110 110
umask (0022): 000 010 010
NOT umask (0022): 111 101 101

Nota: el pimer digit (0 en aquest cás) del umask indica el permís especials (previament mencionat)

Per exemple en Ubuntu s’aplica 0002 a l’usuari per defecte i 0022 pel root, resulta en que els fitxers tinguin 644 (666-022).

Ho podem comprovar en la comanda umask

Captura comprovació umask usuario normal i root

ICACLS

Les ACL són representacions de permisos per a elements del sistema d’arxius, que extienden els permisos natius POSIX. Donar excempcions.

Per comprovar els permissos ACL que hi ha, ho podem obtenir amb getfacl, per exemple a la carpeta numeros

Getfacl 1

En cas per exemple no voler que el segon no accedeixi a la carpeta, podem afegit una exempció restrictiva amb setfacl

setfacl -m user:segon:--- numeros

Afegit acl amb setacl

I podem comprovar que el segon no pot accedir.

Comprovació que no podem accedir

Amb setfacl -b numerò resetjem els permissos

Reset i comprovació permissos

Exercici

Podem realizar algunes proves, per mostrar aixó abans he preparat l’entorn:

  1. He creat el grup paloma amb els integrants nick, deivy. I crear els usuaris ferran e cire
groupadd palomes
useradd -m -G palomes -p $(openssl passwd -6 'alumne99') nick
useradd -m -G palomes -p $(openssl passwd -6 'alumne99') deivy
useradd -m -p $(openssl passwd -6 'alumne99') ferran
useradd -m -p $(openssl passwd -6 'alumne99') cire

Creació usuaris i grup palomes

  1. Creat una carpeta i una arxiu dintre que sera comuna entre els cuatre.
mkdir palomes
echo "Palomas torcaces estofadas" > sopar.txt

Creació carpeta comuna

A continuació hem de posar els permissos correctes, de forma que és compleixi aixó:

chown -R nick:palomes palomes
chmod 750 palomes

chgrp palomes palomes ## També podem canviar el grup amb chgrp grup directori

Comprovació permissos

En un altre contexte a on vulguessim una carpeta colaborativa a on los del grup puguin pujar penjar coses pero no esborrar ni modificar lo dels altres, hauriem de usar el sticky bit. Per exemple:

chown -R nick:palomes palomes
chmod 1770 palomes

Comprovació permissos sticky

En la captura podem veure que els arxius creats, nomes els podem modificar i eliminar els propietaris.

Respecte a posar els permissos amb chmod, ho podem posar en la notació decimal o en lletres, les lletres serien:

Proves umask Respecte a l’umask per defecte, tenim diversos arxiu a on realitzar els canvis:

El primer i més util seria el temporal, que seria fer servir la comanda umask+ mascara, aquest canvi és solament durant la sessió actual de la SHELL

Nota: el que he fet és molt mala practica, podrien colar una comanda maliciosa a l’arxiu que he creat

Comprovació umask temporal

El segon (i permanent) seria en el login.defs, previament mencionat, d’aquesta forma, a qualsevol nou usuari, se li aplicara el umask als arxiu/carpetes que creïi.

Comprovació umask permanent login.defs

Per ultim, també tenim el .profile, amb el que sols canviariem en aquell usuari específic.

Comprovació .profile previ login umask

I aquesta hauria de ser la sortida (carpeta cc) Comprovació .profile post login umask, no va

Gestió avançada

TTY

La “terminal” que hem estat fent servir, realment no ho és, es una pseudoterminal, podem canviar a una més propera al concepte, que és la TTY, amb CTR-F2-F6

La TTY és una terminal física o virtual que permet interactuar directament amb el nucli de Linux

TTY 2 exemple