Treball amb fitxers

Els sistemes de fitxers disposen d’una sèrie de mecanismes que permeten treballar-hi. Assignar permisos, crear enllaços, cercar informació o identificar el programari instal·lat són tasques comunes que cal dur a terme quan es disposa d’un sistema de fitxers o més.

Permisos

Una característica molt important de la qual han de disposar els sistemes operatius és la seguretat. En els sistemes multiusuari, tots els fitxers i directoris tenen un propietari i uns permisos que en garanteixen la seguretat. Qui ha treballat en sistemes monousuari del tipus DOS coneix el problema del manteniment dels fitxers: qualsevol altre usuari els pot eliminar, ja que no hi ha proteccions adequades. Aquesta classe de problemes no es poden produir en els sistemes multiusuari com Windows 7 o Linux, ja que apareix el concepte de propietari d’un fitxer o directori, juntament amb els privilegis d’accés que s’assignen a aquest propietari.

Permisos a Windows

Windows permet marcar els fitxers com a només lectura, un mecanisme bàsic de seguretat que fa que els fitxers no puguin ser modificats.

En els sistemes Windows anteriors a Windows Vista, la gestió de permisos que es podia fer sobre els fitxers era molt bàsica. A partir d’aquesta versió es va afegir una gestió més completa que prevé la modificació accidental o intencional de fitxers o directoris per part d’usuaris que no en siguin el propietari. Per tant, estableix que per poder accedir a aquests fitxers, modificar-los o eliminar-los cal prendre’n possessió i disposar els privilegis adequats.

Gestió de permisos

Per fer modificacions sobre el propietari d’un fitxer o directori cal que, dins les “Propietats” d’aquest, mostrar la pestanya de “Seguretat”, tal com es mostra en la figura.

Figura Pestanya de seguretat

Un cop aquí, cal prémer el botó “Editar” per poder afegir nous usuaris als quals assignar permisos concrets (figura).

Figura Finestra d’edició d’usuaris i permisos

En la finestra d’edició es poden afegir o treure usuaris del fitxer (figura).

Figura Afegir usuaris

Un cop s’ha afegit un nou usuari al fitxer, el sistema permet que marquem els privilegis respecte d’aquest recurs, que es mostren en la figura i poden ser:

Figura Assignació de privilegis
  • Lectura: permet visualitzar el fitxer o carpeta, és a dir, proporciona els permisos necessaris perquè el fitxer no sigui ocult a l’usuari.
  • Lectura i execució: permet l’obertura i l’execució de fitxers.
  • Mostrar el contingut d’una carpeta: permet obrir i veure el contingut d’un directori.
  • Escriptura: atorga els permisos d’escriptura i modificació sobre un fitxer o directori.
  • Modificació: concedeix els permisos necessaris per modificar fitxers o directoris.
  • Permisos especials: en aquest bloc es troben permisos com sincronitzar un fitxer, canviar els permisos, canviar el propietari…
  • Control total: atorga tots els permisos disponibles.

Permisos a Linux

Un dels mecanismes de control d’accés més utilitzat és el sistema de permisos tradicionals d’Unix. Tots els derivats d’Unix (i sistemes compatibles amb POSIX) com Linux o Mac OS X suporten aquest sistema i l’utilitzen per defecte. Malgrat això, hi ha altres sistemes de permisos com les llistes de control d’accés o ACL, utilitzades en els sistemes Windows i que es poden implementar també a Linux.

Propietari d'un fitxer o directori

Un usuari és, per defecte, propietari dels arxius i directoris que crea i pot establir els permisos que vulgui sobre aquests per a la resta dels usuaris del sistema.

Cada usuari té assignat un número identificador anomenat identificador d’usuari (UID o user id). Aquest número apareix en el tercer camp del fitxer /etc/passwd i es fa servir per diferenciar els usuaris en el sistema, de manera que no hi hagi confusió entre qui fa les coses i qui n’és el propietari.

El sistema operatiu crea una sèrie de fitxers en el moment de la instal·lació que, per defecte, tenen assignat un propietari. Per això podem trobar, entre d’altres, els propietaris següents instal·lats d’una manera predeterminada al sistema: root, bin, sys, lp, uucp, etc.

Hi ha la possibilitat de canviar el propietari d’un fitxer mitjançant l’ordre chown. Té la sintaxi següent:

chown [opcions] nou_propietari fitxer

on, nou_propietari és el nom de l’usuari al qual se li assignarà el fitxer i fitxer, el camí al fitxer que es vol canviar d’usuari. Aquesta ordre només es pot executar amb el superusuari. Una de les opcions més interessants d’aquesta ordre és -R, que aplica el canvi de propietari d’una manera recursiva a un directori.

Exemple de canvi de propietari

Es canvia el propietari del fitxer /var/www/index.html:

# chown rsala /var/www/index.html

S’aplica un canvi de propietari d’una manera recursiva a /var/www/web1/:

# chown -R jlantunez /var/www/web1/

Grup assignat a un fitxer o directori

Els usuaris poden ser propietaris d’un fitxer o més, però, addicionalment, els fitxers i directoris tenen assignat un grup propietari.

Tots els usuaris de Linux pertanyen, com a mínim, a un grup. Aquesta relació de pertinença es reflecteix en el quart camp del fitxer /etc/passwd, que indica l’identificador del grup principal de cada usuari (GID o group id). Tots els grups del sistema, juntament amb els identificadors corresponents, es troben definits al fitxer /etc/group.

Per consultar a quins grups pertany el vostre usuari podeu executar l’ordre groups.

La resta de grups als quals pertany un usuari es mostren al mateix fitxer /etc/group, en el quart camp. Per a cada grup del sistema, en aquest quart camp, hi ha un llistat d’usuaris que pertanyen de manera secundària al grup indicat.

Quan s’instal·la el sistema operatiu, es creen una sèrie de grups per defecte com root, bin, sys, mail, uucp, adm, other. Típicament, l’administrador del sistema és qui s’encarrega de fer els canvis de grups sobre fitxers o directoris, però un usuari pot canviar de grup un fitxer si també pertany al grup al qual s’està assignant el fitxer.

L’ordre chgrp permet fer canvis de grup sobre fitxers i directoris.

chgrp [opcions] nou_grup fitxer

on nou_grup és el grup al qual s’assigna el fitxer. Un cop més, es disposa d’una opció recursiva (-R) per a l’ús de l’ordre amb el contingut de directoris.

Gestió dels permisos

Els permisos d’un fitxer o directori són el conjunt de privilegis que té un usuari o grup d’usuari sobre aquest.

Aquests privilegis es determinen a partir de dos nivells:

  • Cada fitxer té associats un propietari i un grup propietari. Amb aquests dos elements queden definides les tres entitats que poden interaccionar-hi: l’usuari propietari (u), el grup (g) i la resta d’usuaris del sistema (o).
  • Per a cada usuari s’estableixen tres possibles modes d’accés: lectura (r), escriptura (w), execució (x).

La interpretació dels tres modes d’accés és diferent segons si es tracta d’un fitxer o un directori. La taula mostra com s’interpreten els fitxers per a permisos i directoris.

Taula: Interpretació dels permisos per a fitxers i directoris.
Mode Fitxer Directori
Lectura (r) Permet llegir el contingut del fitxer. Permet llistar el contingut del directori.
Escriptura (w) Permet modificar el contingut del fitxer. Permet afegir elements al directori, canviar-ne el nom o eliminar-los.
Execució (x) Permet executar el fitxer. Permet accedir al directori.

Amb això, si executeu l’ordre ls -l en qualsevol directori, entendreu el significat dels caràcters que apareixen al principi de cada línia:

$ls -l /etc
total 1092
drwxr-xr-x  3 root    root       4096 2010-08-16 11:48 acpi
-rw-r--r--  1 root    root       2981 2010-08-16 11:34 adduser.conf
drwxr-xr-x  2 root    root       4096 2010-08-16 11:51 alternatives
-rw-r--r--  1 root    root        395 2010-03-05 03:29 anacrontab
drwxr-xr-x  6 root    root       4096 2010-08-16 11:40 apm
drwxr-xr-x  3 root    root       4096 2010-08-16 11:47 apparmor
drwxr-xr-x  7 root    root       4096 2010-08-16 11:51 apparmor.d
drwxr-xr-x  4 root    root       4096 2010-08-16 11:50 apport
drwxr-xr-x  6 root    root       4096 2011-03-01 12:18 apt
-rw-r-----  1 root    daemon      144 2010-03-05 03:35 at.deny
...
drwxr-xr-x  2 root    root       4096 2010-08-16 11:47 xulrunner-1.9.2
-rw-r--r--  1 root    root        645 2010-04-15 09:59 zsh_command_not_found

El primer caràcter mostra el tipus de fitxer amb el qual es treballa. Les opcions més típiques que trobareu en aquest espai són les següents:

  • -: arxiu convencional.
  • d: directori.
  • l: enllaç simbòlic.

Pel que fa a la resta de caràcters, es poden subdividir en tres grups:

  • Els tres primers, que fan referència al mode d’accés de l’usuari propietari del fitxer.
  • Els tres següents, que indiquen el mode d’accés del grup propietari del fitxer.
  • Els últims, que es refereixen al mode d’accés de la resta d’usuaris del sistema.

En la figura podeu veure que el directori acpi pertany a l’usuari i grup root, té permisos de lectura, escriptura i execució per al propietari i lectura i execució per al grup i la resta d’usuaris del sistema. El fitxer adduser.conf, que pertany al grup i usuari root, té permisos de lectura i escriptura per al propietari i permisos de lectura per al grup i la resta d’usuaris del sistema.

Figura Exemples de permisos

Aplicació dels permisos

L’assignació dels permisos és una de les eines que proporciona el sistema Linux per gestionar la seguretat de la informació.

Els únics usuaris que poden modificar els permisos dels arxius o directoris són l’usuari root, el propietari del fitxer o directori i el propietari del directori on són els fitxers o directoris.

Val a dir que en qualsevol moment un usuari pot canviar els permisos dels fitxers dels quals és propietari. Per fer-ho disposa de l’ordre chmod:

chmod [opcions] permisos fitxers

Els permisos poden ser assignats de dues maneres:

  • Simbòlicament: se segueix la sintaxi qui operació permisos, on:
    • qui: és l’entitat o entitats a les quals volem assignar el permís: u (usuari), g (grup), o (altres), a (tots).
    • operació: es pot afegir un mode (+), treure un mode (-) o assignar un conjunt de modes eliminant qualsevol configuració prèvia (=).
    • permisos: és el conjunt de permisos que es volen concedir a les entitats indicades, mitjançant l’operació especificada.
  • Numèricament: es representen els diversos modes d’accés mitjançant tres nombres en notació octal, en què el permís de lectura és un 4, el d’escriptura un 2 i el d’execució un 1. Vegeu la taula per obtenir una correspondència completa dels permisos en octal.
Taula: Valors en octal dels permisos
Permís Valor octal
0
–x 1
-w- 2
-wx 3
r– 4
r-x 5
rw- 6
rwx 7

Exemples d'assignació de permisos

Es llista el fitxer amb els permisos inicials:

$ ls -l alfa
-rw-r--r-- 1 estudiant estudiant 0 2011-03-09 10:01 alfa

S’afegeixen els tres modes a l’usuari i al grup:

$ chmod ug+rwx alfa
$ ls -l alfa
-rwxrwxr-- 1 estudiant estudiant 0 2011-03-09 10:01 alfa

Es treu a tots els usuaris el mode d’execució:

$ chmod a-x alfa
$ ls -l alfa
-rw-rw-r-- 1 estudiant estudiant 0 2011-03-09 10:01 alfa

A l’usuari, se li treu el permís de lectura; al grup, se li afegeix el d’escriptura, i a la resta, se li treu el de lectura:

$ chmod u-r,g+w,o-r alfa
$ ls -l alfa
--w-rw---- 1 estudiant estudiant 0 2011-03-09 10:01 alfa

S’assigna (eliminant tot el que hi ha prèviament) el permís d’escriptura al grup:

$ chmod g=w alfa
$ ls -l alfa
--w--w---- 1 estudiant estudiant 0 2011-03-09 10:01 alfa

S’assigna el permís 421:

$ chmod 421 alfa
$ ls -l alfa
-r---w---x 1 estudiant estudiant 0 2011-03-09 10:01 alfa

S’assigna el permís 775:

$ chmod 775 alfa
$ ls -l alfa
-rwxrwxr-x 1 estudiant estudiant 0 2011-03-09 10:01 alfa

Permisos per defecte

Quan es crea un nou fitxer o directori, se li assignen uns permisos per defecte. Típicament, aquests permisos són 644 per als fitxers i 755 per als directoris, però aquesta configuració es pot modificar.

L’ordre umask permet establir els permisos que s’assignen per defecte als nous arxius o directoris creats. La instrucció umask treballa amb valors en octal:

$ umask valor

El permís d'execució

Linux mai no assignarà el permís d’execució a un fitxer si no s’indica explícitament, ja que fer això esdevindria un problema de seguretat. Per això, les màscares es calculen des de 777 per a directoris i des de 666 per a fitxers.

Si no s’indica cap valor, es mostren els permisos assignats per defecte actualment. L’ordre umask fixa la màscara en octal, indicant quins permisos no es volen per defecte per als elements creats. En el cas dels directoris, aquests permisos es restaran de 777 i en el dels fitxers es restarà de 666.

Exemple de permisos

Es mostra la màscara definida actualment:

$ umask
0022

La màscara és 022; per això, típicament, els fitxers tenen 644 com a permisos (666 - 022) i els directoris, 755 (777 - 022).

Es canvia la màscara a 027:

$ umask 027

Es crea un nou fitxer i directori i se’n llisten els permisos:

$ mkdir hola
$ echo "hola" > hola.txt
$ ls –l
...
drwxr-x--- 2 estudiant estudiant  4096 2011-03-27 21:41 hola
-rw-r----- 1 estudiant estudiant     5 2011-03-27 21:41 hola.txt
...

El nou directori té permisos 750 i el nou fitxer, 640.

El valor de la màscara assignada només té vigor en el terminal i sessió actual; per això s’acostuma a assignar de manera permanent per mitjà d’algun fitxer de perfil com /etc/profile o ~/.bash_rc.

Permisos especials

A més dels permisos 644 per als fitxers i 755 per als directoris, hi ha tres permisos especials a Linux:

  • El bit SUID (set user id). S’utilitza conjuntament amb el bit d’execució sobre fitxers i indica al sistema operatiu que el fitxer marcat amb aquest permís s’ha d’executar amb els permisos del propietari del fitxer, i no pas amb els permisos de l’usuari que l’està executant. Es materialitza com una s en el bit d’execució de l’entitat d’usuari. Si no hi ha permís d’execució, es mostra com a S.
  • El bit SGID (set group id). Té el mateix funcionament que el SUID, però aplicat a grups; per això es mostra com una s en el bit d’execució de l’entitat de grup.
  • El bit sticky. Per esborrar un fitxer només es necessita tenir permís d’escriptura sobre el directori que el conté. En alguns casos pot interessar que només el pugui esborrar el propietari d’un fitxer: aquesta és la utilitat del bit sticky. Quan un directori té activat aquest bit, només els pot esborrar el propietari dels fitxers que conté. S’indica com una t al bit d’execució dels altres usuaris (o T, si no hi ha activada l’execució).

Els permisos especials es poden assignar de manera octal o utilitzant notació simbòlica. Vegeu un esquema complet dels valors octals dels permisos en la figura.

Figura Valors dels permisos en Linux

Exemples de permisos especials

S’assignen l’SUID i l’SGID simbòlicament:

# chmod u+s fitxer_executable
# chmod g+s fitxer_executable

Es poden assignar també numèricament:

# chmod 4755 fitxer_executable
# chmod 2755 fitxer_executable

S’assigna el bit sticky a un directori:

# chmod u+t directori_compartit
# chmod 1777 directori_compartit

Gestió de permisos bàsics a la interfície gràfica

L’assignació de permisos a dos nivells que s’ha fet en aquest apartat també es pot dur a terme per mitjà de la interfície gràfica. Per fer-ho, cal prémer el botó dret del ratolí sobre l’arxiu o directori en qüestió i seleccionar l’opció “Propietats” (figura). En aquesta pantalla, si aneu a la pestanya “Permisos”, podreu assignar els privilegis bàsics que hem vist anteriorment.

Figura Propietats d’un fitxer, permisos

Enllaços

Quan es treballa amb fitxers, de vegades és necessari poder accedir a un fitxer des de diverses localitzacions. Els enllaços permeten que un arxiu existeixi en diverses localitzacions del sistema sense duplicar informació, amb les possibles incoherències que això pot generar. Tots els sistemes operatius actuals disposen d’algun mecanisme d’enllaçat, tot i que la nomenclatura utilitzada sigui lleugerament diferent segons el sistema.

Gràcies als enllaços es poden assignar noms o camins alternatius que simplifiquin el treball amb fitxers que tenen camins més complexos.

Enllaços a Windows

A Windows hi ha tres tipus d’enllaços: enllaços forts, enllaços simbòlics i unions. En els tres casos, l’ordre que cal fer servir és mklink, una eina específica per a la creació de diversos tipus d’enllaços.

Enllaços simbòlics

Els enllaços simbòlics es coneixen generalment com a enllaços directes a Windows. Per crear un enllaç directe a un fitxer o directori per mitjà de la interfície gràfica, cal clicar amb el botó dret del ratolí l’element del qual es vol crear un enllaç i seleccionar l’opció “Crear acceso directo”. Podeu veure aquesta interacció en la figura.

Figura Creació d’un enllaç simbòlic des de la interfície gràfica

Gràficament, els enllaços simbòlics mostren una petita fletxa que els distingeix. Els enllaços directes tenen una dependència directa dels elements que enllacen: si desapareix o s’esborra el fitxer original, els enllaços queden inutilitzables.

Es poden crear enllaços simbòlics tant a fitxers com a directoris. La sintaxi per a la creació d’enllaços per mitjà de la línia d’ordres és:

> mklink [/d] enllaç original

Enllaços

Els enllaços es poden crear indicant el fitxer original com a ruta relativa o absoluta. En cas que s’indiqui una ruta relativa, si es mou l’enllaç de lloc, sense traslladar també l’original, quedarà trencat.

Cal utilizar l’opció /d quan es crea un enllaç simbòlic a un directori, ja que l’opció per defecte fa referència a fitxers.

Exemple d'enllaços simbòlics

Es crea un enllaç simbòlic del fitxer fitxer.txt com a simbolic.txt.

  > mklink simbolic.txt fitxer.txt
vínculo simbólico creado para simbolic.txt <<===>> fitxer.txt

Si es llista, es pot observar que el sistema el marca com a enllaç simbòlic:

  > dir simbolic.txt
 El volumen de la unidad C no tiene etiqueta.
 El número de serie del volumen es: 5465-4679

 Directorio de C:\Users\Estudiant\Desktop

25/03/2011  13:00    <SYMLINK>      simbolic.txt [fitxer.txt]
               1 archivos              0 bytes
               0 dirs  49.751.465.984 bytes libres

Es crea un enllaç simbòlic al directori C:\Windows com a Win:

  > mklink /d Win C:\Windows
vínculo simbólico creado para Win <<===>> C:\Windows

Enllaços forts

Un enllaç fort de Windows és la representació que té el sistema de fitxers per a un fitxer que té més d’un camí dins un mateix volum per poder-hi arribar. Per crear un enllaç fort cal utilitzar l’ordre següent:

> mklink /h enllaç original

Si es modifica qualsevol dels fitxers, tant si és l’original com l’enllaçat, els canvis afecten tots dos fitxers, ja que físicament constitueixen un únic arxiu. No obstant això, els atributs que s’assignen a cadascun dels fitxers només afecten el fitxer al qual se li han assignat. Per exemple, si es marca un fitxer com a només lectura, només afectarà aquest fitxer específicament, no la resta de fitxers. Si s’elimina el fitxer original, l’enllaç o enllaços forts no es veuen afectats i romanen accessibles.

Windows només permet crear enllaços forts de fitxers, sempre que estiguin emmagatzemats en el mateix volum que els originals.

Exemple d'enllaços forts

Es crea un enllaç fort del fitxer test.txt com a test2.txt.

  > mklink /h test2.txt test.txt
Vínculos permanentes creados por test2.txt <<===>> test.txt

Quan es llisten, els enllaços forts no apareixen diferenciats, ja que, tant el fitxer original com l’enllaç, són igualment vàlids envers el sistema i només representen dos camins diferents per accedir a una mateixa informació.

Unions

A Windows, els enllaços forts entre directoris s’anomenen unions (junctions). La sintaxi per a la creació d’unions és la següent:

> mklink /j enllaç original

Les unions s’assemblen als enllaços forts entre fitxers, però tenen algunes diferències, com ara:

  • Es permet la creació d’unions entre directoris de diversos volums, sempre que aquests volums siguin locals.
  • Si s’elimina el fitxer original, la unió queda inservible.

A la pràctica, l’única diferència que hi ha entre un enllaç simbòlic a un directori i una unió és que, en el cas de l’enllaç simbòlic, quan s’accedeix a un directori, l’explorador de fitxers es trasllada al directori original. En canvi, en la unió, l’explorador de fitxers roman al directori-enllaç.

Exemple d'unions

Es crea la unió del directori F:\Music com a mèdia.

  > mklink /j media F:\Music
Unión creada para media <<===>> F:\Music

Si es fa un llistat, apareix la unió reflectida:

  > dir me*
 El volumen de la unidad C no tiene etiqueta.
 El número de serie del volumen es: 5465-4679

 Directorio de C:\Users\Estudiant\Desktop

25/03/2011  13:10    <JUNCTION>     media [F:\Music]
               0 archivos              0 bytes
               1 dirs  49.750.876.160 bytes libres

Enllaços a Linux

Per explicar el concepte dels enllaços a Linux, cal conèixer com s’emmagatzemen el fitxers en aquests sistemes i què és un node d’identificació (inode).

Un node d’identificació és l’estructura interna que utilitza el sistema operatiu Linux per emmagatzemar la informació sobre els seus fitxers. Els nodes d’identificació contenen metadades importants del fitxer com poden ser el propietari i grup propietari del fitxer, el mode d’accés d’aquest, les marques de temps del fitxer, etc. Els nodes d’identificació s’identifiquen per un número de node d’identificació, que és únic.

Dins la llista d’informació emmagatzemada per un node d’identificació no apareixen ni el nom del fitxer, que és emmagatzemat pel directori que el conté, ni el seu contingut, que és referenciat mitjançant punters a blocs de disc.

Enllaços forts

Un enllaç fort, de manera anàloga a la representació en els sistemes Windows, és una correspondència entre un nom de fitxer i un número de node d’identificació.

Això vol dir que podem tenir fitxers amb noms diferents o iguals (situats en directoris distints) que tenen el mateix número de node d’identificació; per tant, els continguts dels fitxers enllaçats seran els mateixos però físicament només ocuparan espai una vegada. A més, com que aquests fitxers comparteixen el node d’identificació, tindran les mateixes metadades (dades de modificació, permisos…).

En el moment en què es crea un enllaç fort a un fitxer, desapareix el concepte de fitxer original i tots els fitxers tenen la mateixa importància davant les dades emmagatzemades a disc. Els canvis realitzats en el fitxer original o en qualsevol dels enllaços els afectaran a tots. No obstant això, eliminar qualsevol dels fitxers no afectarà la resta.

Malauradament, els enllaços forts tenen una sèrie de limitacions, com ara la creació d’enllaços a directoris, que no està permesa, o la impossibilitat de crear enllaços entre sistemes de fitxers diferents.

Per crear enllaços forts s’utilitza l’ordre ln.

$ ln fitxer_original enllaç

on fitxer_original és el fitxer del qual es vol crear l’enllaç i enllaç, el nom de l’enllaç creat.

Nombre d'enllaços en directoris

Quan es crea un nou directori, automàticament, el nombre d’enllaços d’aquest és dos. Aquests dos enllaços són el mateix nom del directori i el . que conté el directori.

Com a efecte col·lateral, augmenta el nombre d’enllaços del directori pare del directori creat, ja que es crea el fitxer .. dins del nou directori, que és un enllaç fort al directori pare.

Exemples d'enllaços forts

Es crea el fitxer original.txt i es consulta, mitjançant l’ordre ls -li, el node d’identificació (primera columna) i el nombre d’enllaços (tercera columna) que té:

$ touch original.txt
$ ls -li original.txt
266713 -rw-r--r-- 1 estudiant estudiant 0 2011-03-20 12:38 original.txt

Es crea un nou enllaç i s’observa que comparteix el node d’identificació i augmenta el nombre d’enllaços:

$ ln original.txt nou1.txt
$ ls -li original.txt
266713 -rw-r--r-- 2 estudiant estudiant 0 2011-03-20 12:38 original.txt
$ ls -li nou1.txt
266713 -rw-r--r-- 2 estudiant estudiant 0 2011-03-20 12:38 nou1.txt

Es crea un segon enllaç i se’n consulta la informació mitjançant l’ordre stat:

$ ln original.txt nou2.txt
$ stat nou2.txt 
  File: «nou2.txt»
  Size: 0         	Blocks: 0          IO Block: 4096   fitxer ordinari buit
Device: 801h/2049d	Inode: 266713      Links: 3
Access: (0644/-rw-r--r--)  Uid: ( 1000/estudiant)   Gid: ( 1000/estudiant)
Access: 2011-03-20 12:38:47.741553869 +0100
Modify: 2011-03-20 12:38:47.741553869 +0100
Change: 2011-03-20 12:39:55.225537690 +0100

Habitualment, els enllaços forts es confonen amb les còpies, però amb els enllaços, els continguts només s’emmagatzemen una sola vegada al disc. A més, si es modifica el contingut o les metadades (permisos, marques de temps…) de qualsevol dels enllaços, aquests canvis es veuen reflectits sobre tots els fitxers, cosa que no passa amb les còpies.

Enllaços simbòlics

L’altre tipus d’enllaç suportat per Linux són els enllaços simbòlics. Aquests enllaços són més flexibles que els forts: es poden crear enllaços simbòlics a fitxers i directoris i es poden enllaçar entre diversos sistemes de fitxers.

Internament, un enllaç simbòlic s’implementa com un nou fitxer (amb el seu node d’identificació corresponent) que apunta cap a un altre fitxer.

Atès que els enllaços simbòlics disposen de nodes d’identificació independents dels fitxers o directoris als quals apunten, si s’esborra el fitxer original, l’enllaç queda trencat. D’altra banda, si s’esborra el mateix enllaç, el fitxer original no es veu afectat.

Per crear enllaços simbòlics s’utilitza l’ordre ln -s.

$ ln -s original enllaç

on original és el fitxer o directori del qual es vol crear l’enllaç i enllaç, el nom de l’enllaç creat.

Exemples d'enllaços simbòlics

Es crea un nou enllaç, ara simbòlic, al fitxer original.txt i es consulten, mitjançant l’ordre ls -li, els nombres de node d’identificació i d’enllaços:

$ ls -li original.txt
266713 -rw-r--r-- 3 estudiant estudiant 0 2011-03-20 12:38 original.txt
$ ln -s original.txt nouS.txt
$ ls -li original.txt nouS.txt 
278808 lrwxrwxrwx 1 estudiant estudiant 12 2011-03-20 19:08 nouS.txt -> original.txt
266713 -rw-r--r-- 3 estudiant estudiant  0 2011-03-20 12:38 original.txt

Aquest tipus d’enllaços es poden crear fàcilment des de la interfície gràfica, fent clic amb el botó dret sobre el fitxer o directori al qual se li vol generar un enllaç i seleccionant l’opció “Crea un enllaç”, tal com podeu veure en la figura.

Figura Crear un enllaç amb l’explorador de fitxers

Cerca d'informació

Els avenços recents en la cerca d’informació a Internet han fet que la localització immediata d’informació i arxius sigui tan simple que l’usuari, quan ha de localitzar qualsevol element, prefereix fer una cerca abans que recórrer el camí per trobar-lo.

Els sistemes operatius s’han fet ressò d’aquesta tendència, amb la qual cosa la cerca d’informació s’ha convertit en un dels pilars principals d’aquests sistemes.

Cerca d'informació a Windows

Una de les grans aportacions de Windows 7 ha estat una millora qualitativa en la cerca d’informació. Gràcies a la cerca de Windows es poden trobar fitxers, programes, missatges d’una manera instantània. No cal saber el nom o la localització dels arxius, només cal escriure alguna paraula relacionada amb la capsa de cerca del menú Inici per trobar els elements organitzats per tipus (figura).

Figura Capsa de cerca del menú Inici

Per restringir la cerca als continguts d’un directori (i tot l’arbre de subdirectoris corresponent), només cal entrar al directori en concret i entrar el terme de cerca a la capsa de cerca, situada a la cantonada dreta de la finestra (figura).

Figura Capsa de cerca de qualsevol directori del sistema

El sistema de cerca de Windows manté un índex amb totes les paraules clau, associades amb els arxius i continguts d’aquests, tasques habituals del sistema, programes, pàgines web… Els sistema de cerca indexa automàticament la majoria de tipus de fitxers típics i no indexa els fitxers que no se cercaran habitualment (fitxers del sistema, per exemple). Quan s’hi introdueix una paraula, Windows només cerca en l’índex, no en els arxius reals del sistema.

Si es desplega la capsa de cerca es poden realitzar cerques avançades, tal com es pot observar en la figura.

Figura Quan es desplega la capsa de cerca s’obtenen filtres avançats de cerca

Els paràmetres de cerca es poden guardar per reutilitzar-los en el futur. Les cerques emmagatzemades es mostren al menú de favorits, al panell del lateral esquerre (figura).

Figura Cerca d’executables (*.exe) emmagatzemada i reutilitzada

Modificació dels paràmetres de cerca

En qualsevol moment es poden modificar les localitzacions que Windows indexa. Per fer-ho, cal anar a “Opciones de carpeta”, dins del menú “Herramientas” de qualsevol directori. En aquesta pantalla, a la tercera pestanya, hi ha les opcions de cerca de la figura.

Figura Opcions de cerca

També podeu cercar “Opciones de indización” a la barra de cerca. A la figura, figura i figura podeu veure les opcions més importants d’aquesta pantalla.

Figura Selecció de les ubicacions d’indexació
Figura Determinació dels paràmetres de cerca (accents, arxius xifrats, solució de problemes…)
Figura Selecció dels tipus d’arxiu que es mantindran a l’índex

Cerca d'informació a Linux

Ubuntu incorpora una eina potent de cerca de fitxers, situada al menú “Aplicacions”, dins de l’opció “Accessoris” (figura).

Figura Cerca de fitxers d’Ubuntu

Aquest programa permet la construcció senzilla de filtres de temps, de mida, d’usuari o de grup, entre d’altres. A més, totes les finestres de l’explorador de fitxers Nautilus disposen d’un botó de cerca que permet localitzar elements dins del directori que s’estigui visualitzant. Malgrat això, la potència real en les cerques dels sistemes Linux es troba al terminal, gràcies a les ordres find i locate.

L'ordre "find"

L’ordre find s’utilitza per localitzar fitxers. Aquesta instrucció és recursiva per defecte; per tant, buscarà en l’arbre complet del directori indicat. Quan no s’indica cap directori, l’ordre find cerca a partir del directori actual. La sintaxi de l’ordre és la següent:

$ find camí expressió

on camí és el camí absolut o relatiu del directori a partir del qual es realitzarà la cerca, i expressió és el conjunt de paràmetres de cerca que determinaran el fitxer o fitxers a localitzar.

Aquesta ordre realitza la cerca per força bruta, examinant tots els fitxers. Això fa que tingui un ús molt efectiu, però pot arribar a ser lent en alguns casos.

En la taula disposeu dels paràmetres més comuns de cerca de l’ordre find.

Taula: Opcions de l’ordre find
Paràmetre Utilitat
-atime [+-]n Cerca en funció de l’última vegada en què van ser accedits. n és un nombre de dies.
-ctime [+-]n Cerca en funció de l’última vegada en què es van produir canvis en el node d’identificació. n és un nombre de dies.
-group grup Permet indicar el grup propietari de l’element cercat
-links [+-]n Nombre d’enllaços forts de l’element cercat.
-mindepth n Cerca en els subdirectoris del camí indicat, a partir del nivell indicat.
-maxdepth n Cerca en els subdirectoris del camí indicat, fins al nivell indicat.
-mtime [+-]n Cerca en funció de l’última vegada en què es van produir canvis en el contingut del fitxer. n és un nombre de dies.
-name patró Patró de cerca per al nom (pot contenir comodins o metacaràcters). Si no s’utilitzen comodins, cercarà el nom exacte del fitxer.
-perm mode Indica el mode d’accés (en octal) al fitxer.
-size [+-]n Mida del fitxer, que per defecte s’indica en bytes (octets). Es poden utilitzar múltiples de les unitats (k, M, G).
-type tipus Tipus dels elements cercats: fitxers (f per a fitxer, d per a directori…)
-user usuari Permet indicar l’usuari propietari de l’element cercat.

En les opcions de la taula en què s’indica [+-] es pot filtrar per més dels elements indicats (+n), menys dels elements indicats (-n) o exactament els elements indicats (n).

Exemples de l'ordre find

Cercar els fitxers del directori actual i tot l’arbre de directoris que tinguin extensió *.txt:

$ find . -type f -name *.txt

Buscar els directoris de l’arrel del sistema:

$ find / -type d -maxdepth 1

Localitzar els fitxers del directori de l’usuari actual i el primer nivell de subdirectoris que ocupin més de 100 kilobytes i tinguin el mode d’accés 644.

$ find ~ -maxdepth 2 -type f -size +100k -perm 644

Trobar els fitxers que són propietat d’un usuari al directori /tmp i tots els seus subdirectoris als quals no s’hagi accedit en els últims tres dies.

$ find /tmp -type f -user estudiant -atime +3

L’ordre find permet l’execució d’accions amb els resultats de la cerca mitjançant el paràmetre -exec seguit de la instrucció que s’ha d’executar. Per poder fer referència a cadascun dels resultats de la cerca es fan servir les claus {}.

Exemple de l'ordre find

Cercar els fitxers ordinaris del directori actual i tot l’arbre de directoris corresponents que tinguin extensió *.txt i copiar-los al directori text:

$ find . -type f -name *.txt -exec cp {} text \;

Trobar els directoris del directori actual i tot l’arbre de directoris corresponent amb permisos 777 i canviar-los a 755:

$ find . -type d -perm 777 -exec chmod 755 {} \;

L'ordre "locate"

L’eina locate funciona d’una manera similar a find si es vol localitzar un fitxer pel nom, però té dues grans diferències respecte de l’anterior:

  • Les opcions de locate són molt menys completes que les de find. Generalment, només s’utilitza per cercar fitxers pel nom.
  • Locate utilitza una base de dades que s’actualitza gràcies a una tasca programada (típicament s’executa cada nit, però es pot forçar aquesta actualització amb l’ordre updatedb, que cal executar com a superusuari). Per aquest motiu, hi pot haver inconsistències entre la base de dades i el contingut real del sistema de fitxers. D’altra banda, gràcies a la base de dades, la cerca amb aquesta eina és molt més ràpida que amb find.

La sintaxi de l’ordre és la següent:

$ locate [opcions] patró

Observeu l’exemple següent:

Exemple de l'ordre locate

Cercar tots els fitxers d’extensió *.txt:

$ locate *.txt

Identificació del programari instal·lat

En molts casos, cal consultar quin programari hi ha instal·lat en una màquina. Tant Windows com Linux disposen d’eines per a la gestió del programari instal·lat a la màquina que, entre altres funcionalitats, permeten la instal·lació, desinstal·lació, comprovació o actualització del programari.

Identificació del programari instal·lat a Windows

Per identificar el programari instal·lat a Windows cal anar al menú d’Inici i entrar a “Panel de control > Programas > Programas y características”.

A la pantalla de la figura, podreu filtrar el programari mostrat (gràcies a la capsa de cerca) o consultar les actualitzacions realitzades sobre el programari ja instal·lat, amb l’opció “Ver actualizaciones instaladas”. La pantalla permet també organitzar la informació en funció de qualsevol de les columnes per tal de fer una consulta més personalitzada.

Figura Programes i característiques

Identificació del programari instal·lat a Linux

El sistema operatiu Ubuntu 10.04 incorpora dues eines gràfiques de gestió de programari:

  • El centre de programari d’Ubuntu (situat al menú d’Aplicacions, figura).
  • El gestor de paquets Synaptic (que es troba al menú Sistema > Administració, figura).

La interfície de treball de totes dues aplicacions és força similar, tot i que el gestor de paquets Synaptic proporciona una interfície de treball més completa que permet identificar més bé el programari instal·lat i la selecció dels paquets que s’han d’instal·lar.

Figura Centre de programari d’Ubuntu
Figura Gestor de paquets Synaptic

El gestor de paquets Synaptic permet llistar els paquets per:

  • Secció: l’àmbit al qual pertany (administració del sistema, ciència, editors…).
  • Estat: com es troba el paquet (instal·lat, actualitzable, no instal·lat…).
  • Origen: la font de programari de la qual prové el paquet.
  • Filtres personalitzats: filtres que es poden definir al menú Paràmetres > Filtres.
  • Resultats de cerca: buscar una paraula concreta i treballar amb aquests resultats.

La pantalla de personalització de filtres (figura) permet establir paràmetres sobre l’estat del paquet, la secció on s’inclou aquest o restriccions concretes sobre qualsevol camp d’informació del paquet, com ara el nom o la versió d’aquest. Aquests filtres es poden emmagatzemar per fer-ne un ús posterior (el programa proporciona una sèrie de filtres ja preinstal·lats).

Figura Creació de filtres amb el gestor de paquets Synaptic

Identificació del programari instal·lat mitjançant la línia d'ordres

El sistema de paquets d’Ubuntu disposa d’una base de dades centralitzada que conté els paquets instal·lats, entre molta altra informació. Aquesta base de dades és accessible tant a la interfície gràfica com per mitjà de la línia d’ordres. L’eina que dóna accés a les dades és dpkg i, tot i que per poder instal·lar programari a Linux cal ser superusuari, totes les instruccions que es treballaran en aquest apartat es poden executar com a usuari convencional, ja que només es realitzen consultes sobre la base de dades de paquets.

Obtenir informació completa sobre un paquet determinat

Per mostrar informació general sobre un paquet instal·lat, cal utilitzar l’ordre següent:

$ dpkg -s nom_paquet

Aquesta ordre retorna informació molt interessant sobre els paquets; per exemple, el mantenidor que té o aspectes com la mida, la versió, les dependències i la descripció. A més, mostra l’estat en què es troba aquest paquet dins el sistema (si està instal·lat, si no ho està…).

Exemple d'obtenció d'informació d'un paquet

Es consulta la informació del paquet vlc.

$ dpkg -s vlc
Package: vlc
Status: install ok installed
Priority: optional
Section: video
Installed-Size: 3792
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Version: 1.0.6-1ubuntu1.5
Replaces: vlc-nox (<< 1.0.4-2)
Provides: mp3-decoder
Depends: vlc-nox (= 1.0.6-1ubuntu1.5), libaa1 (>= 1.4p5), libc6 (>= 2.8), libdbus-1-3 (>= 1.0.2), libfreetype6 (>= 2.2.1), libfribidi0 (>= 0.19.2), libgcc1 (>= 1:4.1.1), libgl1-mesa-glx | libgl1, libglib2.0-0 (>= 2.12.0), libgtk2.0-0 (>= 2.8.0), libnotify1 (>= 0.4.5), libnotify1-gtk2.10, libqtcore4 (>= 4:4.6.1), libqtgui4 (>= 4:4.6.1), libsdl-image1.2 (>= 1.2.5), libsdl1.2debian (>= 1.2.10-1), libstdc++6 (>= 4.2.1), libtar, libvlccore2 (>= 1.0.0~rc1), libx11-6 (>= 0), libxcb-keysyms1 (>= 0.3.6), libxcb1 (>= 0), libxext6 (>= 0), libxinerama1, libxv1, libxxf86vm1, zlib1g (>= 1:1.2.3.3.dfsg), ttf-dejavu-core
Recommends: vlc-plugin-pulse (= 1.0.6-1ubuntu1.5)
Suggests: mozilla-plugin-vlc, videolan-doc
Description: multimedia player and streamer
 VLC is the VideoLAN project's media player. It plays MPEG, MPEG2, MPEG4,
 DivX, MOV, WMV, QuickTime, mp3, Ogg/Vorbis files, DVDs, VCDs, and multimedia
 streams from various network sources.
 .
 VLC can also be used as a streaming server that duplicates the stream it
 reads and multicasts them through the network to other clients, or serves
 them through HTTP.
 .
 VLC has support for on-the-fly transcoding of audio and video formats, either
 for broadcasting purposes or for movie format transformations. Support for
 most output methods is provided by this package, but features can be added
 by installing additional audio plugins (vlc-plugin-pulse, vlc-plugin-sdl)
 or video plugins (vlc-plugin-sdl, vlc-plugin-ggi, vlc-plugin-svgalib). There
 is also a web browser plugin in the mozilla-plugin-vlc package.
Homepage: http://www.videolan.org/vlc/
Original-Maintainer: Debian multimedia packages maintainers <pkg-multimedia-maintainers@lists.alioth.debian.org>
Llistar els paquets associats a un patró

Per obtenir el llistat complet de paquets que segueixen un patró cal utilitzar l’ordre següent:

$ dpkg -l patró

El patró és un paràmetre opcional. Si no s’indica, llistarà tots i cadascun dels paquets disponibles a la base de dades de paquets del sistema.

Exemple de llistat de paquets associats a un patró

Es llisten tots els paquets que acompleixen el patró gnome*.

$ dpkg -l gnome*
  Desired=Unknown/Install/Remove/Purge/Hold
  | Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
  |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
  ||/ Nom                 Versió             Descripció
  +++-=====================================
  ii  gnome-about         1:2.30.2-0ubuntu1   The GNOME about box
  ii  gnome-accessibility 2.30.0-0ubuntu1     accessibility themes for the GNOME   desktop
  un  gnome-accessibility <cap>               (no hi ha cap descripció disponible)
  un  gnome-admin         <cap>               (no hi ha cap descripció disponible)
  un  gnome-app-install   <cap>               (no hi ha cap descripció disponible)
  ii  gnome-applets       2.30.0-0ubuntu2     Various applets for the GNOME panel - binary files
ii  gnome-applets-data  2.30.0-0ubuntu2     Various applets for the GNOME panel   - data files
  ii  gnome-bluetooth     2.30.0-0ubuntu3     GNOME Bluetooth tools
  ...

La desinstal·lació a Debian

El sistema de paquets Debian, que utilitza Ubuntu, distingeix dos tipus de desinstal·lació: eliminació i purgat. La primera fa una eliminació del paquet, però manté totes les configuracions que ha introduït l’usuari. El purgat elimina qualsevol configuració que s’hagi fet sobre el paquet. En funció de les intencions que es tinguin respecte d’un paquet es pot optar per una opció o per l’altra.

Si s’observa la sortida d’aquesta instrucció, les tres primeres columnes fan referència a l’estat en què es troba el paquet indicat. En concret:

  1. Estat de selecció: quan es treballa amb paquets des d’eines com el gestor de paquets Synaptic, s’assigna un estat de selecció que pot ser:
    • Unknown: l’estat de selecció és desconegut.
    • Install: el paquet està marcat per ser instal·lat.
    • Remove: el paquet està marcat per ser esborrat.
    • Purge: el paquet està marcat per ser purgat.
    • Hold: el paquet està marcat per mantenir-se bloquejat i no ser actualitzat.
  2. Estat actual: indica l’estat real del paquet dins el sistema:
    • Not installed: el paquet no es troba instal·lat en el sistema.
    • Installed: el paquet està instal·lat.
    • Configuration files: el paquet està desinstal·lat, però els seus fitxers de configuració romanen en el sistema.
    • Unpacked: el paquet s’ha desempaquetat i està preparat per ser instal·lat.
    • Failed configuration: s’ha produït un error durant la configuració del paquet.
    • Half installed: s’ha produït un error durant la configuració del paquet.
  3. Condicions d’error: únicament si hi ha un error amb el paquet, el resultat apareix en aquesta columna:
    • Reinstallation required: el paquet necessita ser reinstal·lat.

Mostrar informació sobre els fitxers associats a un paquet

Quan s’estudia la relació entre fitxers i paquets les consultes acostumen a ser dues:

  • Conèixer el llistat de fitxers instal·lats per un paquet.
  • Saber quin paquet o paquets va instal·lar un fitxer concret.

Per conèixer quins fitxers ha instal·lat (o requerit) un paquet concret, cal utilitzar l’ordre dpkg -L.

$ dpkg -L paquet

I, per obtenir la informació contrària, cal emprar l’ordre dpkg -S.

$ dpkg -S patro_o_fitxer

Aquesta segona instrucció permet la utilització de patrons amb comodins, de manera que es pugui fer referència a un conjunt determinat de fitxers.

Exemples sobre la manera de conèixer els fitxers associats a un paquet

Es llista el conjunt de paquets instal·lats (o requerits) pel paquet vlc.

$ dpkg -L vlc
/.
/usr
/usr/bin
/usr/bin/qvlc
...
/usr/share/man/man1/qvlc.1.gz
/usr/share/man/man1/svlc.1.gz
/usr/share/bug/vlc

Es consulta quin paquet ha instal·lat el fitxer /usr/bin/svlc:

$ dpkg -S /usr/bin/svlc
vlc: /usr/bin/svlc
Anar a la pàgina anterior:
Exercicis d'autoavaluació
Anar a la pàgina següent:
Activitats