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.
Un cop aquí, cal prémer el botó “Editar” per poder afegir nous usuaris als quals assignar permisos concrets (figura).
En la finestra d’edició es poden afegir o treure usuaris del fitxer (figura).
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:
- 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.
| 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.
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.
| 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.
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.
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.
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.
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).
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).
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.
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).
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.
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.
Cerca d'informació a Linux
Ubuntu incorpora una eina potent de cerca de fitxers, situada al menú “Aplicacions”, dins de l’opció “Accessoris” (figura).
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.
| 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.
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.
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).
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:
- 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.
- 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.
- 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

























