360
Administració de sistemes GNU/Linux Josep Jorba Esteve Remo Suppi Boldrito PID_00157327

Administració de sistemes GNU/Linux

  • Upload
    uab

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Administracióde sistemesGNU/LinuxJosep Jorba EsteveRemo Suppi Boldrito PID_00157327

GNUFDL • PID_00157327 Administració de sistemes GNU/Linux

Josep Jorba Esteve Remo Suppi Boldrito

Enginyer superior d’Informàtica.Doctor enginyer d’Informàticaper la UAB. Professor dels Estudisd’Informàtica, Multimèdia i Teleco-municacions de la UOC, Barcelona.

Enginyer de Telecomunicaci-ons. Doctor en Informàtica per laUAB. Professor del Departamentd'Arquitectura de Computadorsi Sistemes Operatius, UniversitatAutònoma de Barcelona, Espanya.

Primera edició: setembre 2010© Josep Jorba Esteve, Remo Suppi BoldritoTots els drets reservats© d'aquesta edició, FUOC, 2010Av. Tibidabo, 39-43, 08035 BarcelonaDisseny: Manel AndreuRealització editorial: Eureca Media, SLDipòsit legal: B-33.176-2010

© 2010, FUOC. Es garanteix el permís per a copiar, distribuir i modificar aquest document segons els termes de la GNU FreeDocumentation License, Version 1.2 o qualsevol altra de posterior publicada per la Free Software Foundation, sense seccionsinvariants ni textos de la coberta anterior o posterior. Hi ha una còpia de la llicència en l'apartat "GNU Free DocumentationLicense" d'aquest document.

GNUFDL • PID_00157327 Administració de sistemes GNU/Linux

Els autors agraeixen a la Fundació per a la Universitat

Oberta de Catalunya el finançament de la primera edició

d'aquesta obra, emmarcada en el màster internacional de

Programari lliure ofert per la institució citada.

GNUFDL • PID_00157327 5 Administració de sistemes GNU/Linux

Introducció

Els sistemes GNU/Linux han aconseguit un grau de maduresa significativa,

que els fan perfectament vàlids per a integrar-los en qualsevol ambient de tre-

ball, tant a l'escriptori del PC personal, com al servidor d'una gran organitza-

ció.

L'objectiu principal que ens proposem en aquest curs és la introducció al món

de l'administració dels sistemes GNU/Linux.

Aprendrem com podem proporcionar des de GNU/Linux els serveis necessaris

a diferents ambients d'usuaris i màquines. El camp d'estudi de l'administració

de sistemes és de dimensions molt àmplies i variat pel que fa als coneixements

que són necessaris. Hi ha moltes tasques diferents per fer, amplis problemes

per tractar, i hem de disposar de grans coneixements de maquinari i progra-

mari; així mateix, tampoc hi sobra una mica de psicologia per a tractar amb

els usuaris finals dels sistemes.

El curs no pretén abordar una distribució GNU/Linux particular, però se n'han

escollit un parell de significatives, pel seu ampli ús, per a tractar els exemples

de tasques: Debian i Fedora.

Pel que fa al camp de l'administració, s'intentarà gestionar des del nivell més

baix possible, normalment des de la línia d'ordres i els fitxers de configuració.

Es comentaran, si escau, eines de més alt nivell, però cal anar amb compte

amb aquestes últimes, ja que solen ser fortament dependents de la distribució

utilitzada i fins i tot de la versió; a més, aquestes eines solen variar funciona-

litats entre versions. L'administració de baix nivell sol ser molt més dura, però

coneixem amb què estem operant i on podem obtenir els resultats; a més, ens

aporta molts més coneixements extra, i un control precís sobre les diferents

tecnologies utilitzades.

Les distribucions escollides han estat les últimes disponibles de Debian (o com-

patibles, com les variants d'Ubuntu) i Fedora (o compatibles, com diferents

versions comercials de Red Hat, o de comunitat com CentOS); aquestes (Debi-

an i Fedora) són les més utilitzades en el moment de confeccionar aquests ma-

terials. La distribució Debian és un paradigma dins del moviment open sour-

ce, perquè no pertany a cap empresa i està confeccionada bàsicament per les

aportacions dels voluntaris distribuïts per tot el món. Debian, a més, integra

gairebé exclusivament programari lliure (se'n poden afegir d'altres a part). A

més, un gran nombre de distribucions amb èxit important (com les variants

d'Ubuntu, que de fet han superat Debian com a ús en escriptori) tenen Debian

com a distribució base.

GNUFDL • PID_00157327 6 Administració de sistemes GNU/Linux

Nota

Principals distribucions i empreses comentades en el text:

http://www.debian.org/

http://www.ubuntu.com/

http://www.canonical.com/

http://fedoraproject.org/

http://www.redhat.com/

http://www.centos.org/

http://www.novell.com/linux/

http://www.opensuse.org/

Red Hat és una de les empreses més solvents en el panorama comercial, i per

això és potser la que atorga més suport a escala empresarial (mitjançant serveis

de pagament), mitjançant les seves distribucions comercials de Red Hat En-

terprise Linux (també hi ha variants lliures alternatives com CentOS). D'altra

banda, la seva entrada com a patrocinador ha permès ampliar els resultats del

projecte Fedora (i la consegüent distribució GNU/Linux), com a conjunt de

tests per a les seves distribucions posteriors, i un desenvolupament d'una àm-

plia comunitat que ha crescut al voltant seu. Aquest cas forma una interessant

experiència combinada de comunitat i empresa en el desenvolupament de la

distribució (com després s'ha vist amb l'ampliació a altres casos com Novell,

amb la seva versió comercial SUSE Linux i el seu projecte de comunitat Open-

SUSE). Per contra, en Debian el suport depèn dels voluntaris i del coneixement

compartit dels usuaris, i se centra en la seva comunitat, encara que en els úl-

tims temps també ha rebut el suport (no sense certs problemes en el procés)

de Canonical, desenvolupador d'Ubuntu.

Com que l'administració de sistemes és un camp tan ampli, aquest manual

només ens pretén introduir en aquest apassionant (i com no, també de vegades

frustrant) món. Veurem algunes de les tasques típiques, i com podem tractar

les problemàtiques que ens apareixen. Però l'administració és un camp que

s'aprèn dia a dia, amb el treball diari. I des d'aquí advertim que aquest manual

és un treball obert, que amb els seus encerts i els errors més que probables es

pot veure complementat amb els comentaris dels seus (sofridors) usuaris. De

manera que són benvinguts, per part dels autors, qualsevol tipus de comentaris

i suggeriments de millora d'aquests materials.

Comentem, finalment, que el contingut reflecteix l'estat de les distribucions

i de les eines d'administració en el moment de la seva confecció, o de les cor-

responents revisions o reedicions.

GNUFDL • PID_00157327 7 Administració de sistemes GNU/Linux

Continguts

Mòdul didàctic 1Introducció al sistema operatiu GNU/LinuxJosep Jorba Esteve

1. Programari lliure i open source

2. UNIX. Una mica d'història

3. Sistemes GNU/Linux

4. El perfil de l'administrador de sistemes

5. Tasques de l'administrador

6. Distribucions de GNU/Linux

7. Què veurem...

Mòdul didàctic 2Nivell d'usuariRemo Suppi Boldrito

1. Introducció al sistema GNU/Linux

2. Conceptes i ordres bàsiques

3. Instal·lació i arrencada de GNU/Linux (conceptes bàsics)

4. Configuracions bàsiques

5. L'entorn gràfic

Mòdul didàctic 3Programació d'ordres combinades (shell scripts)Remo Suppi Boldrito

1. Introducció: l'intèrpret d'ordres

2. Elements bàsics d'un shell script

Mòdul didàctic 4Migració i coexistència amb sistemes no LinuxJosep Jorba Esteve

1. Sistemes informàtics: ambients

2. Serveis en GNU/Linux

3. Tipologies d'ús

4. Migrar o coexistir

5. Taller de migració: anàlisi de casos d'estudi

Mòdul didàctic 5Administració localJosep Jorba Esteve

1. Eines bàsiques per a l'administrador

2. Distribucions: particularitats

3. Nivells d'arrencada i serveis

4. Observar l'estat del sistema

5. Sistema de fitxers

GNUFDL • PID_00157327 8 Administració de sistemes GNU/Linux

6. Usuaris i grups

7. Servidors d'impressió

8. Discos i gestió de filesystems

9. Programari: actualització

10. Feines no interactives

11. Taller: pràctiques combinades dels apartats

Mòdul didàctic 6Administració de xarxaRemo Suppi Boldrito

1. Introducció a TCP/IP (paquet TCP/IP)

2. Conceptes en TCP/IP

3. Com s'assigna una adreça d'Internet?

4. Com s'ha de configurar la xarxa?

5. Configuració del DHCP

6. Aliàsing d'IP

7. IP masquerade

8. NAT amb el nucli 2.2 o superiors

9. Com cal configurar una connexió DialUP i PPP?

10. Configuració de la xarxa mitjançant hotplug

11. Xarxa privada virtual (VPN)

12. Configuracions avançades i eines

GNUFDL • PID_00157327 9 Administració de sistemes GNU/Linux

GNU Free Documentation License

Version 1.3, 3 November 2008

Copyright ©2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.

<http://fsf.org/>

Everyone is permitted to copy and distribute verbatim copies of this license

document, but changing it is not allowed.

0.�PREAMBLE

The purpose of this License is to make a manual, textbook, or other functional

and useful document "free" in the sense of freedom: to assure everyone the

effective freedom to copy and redistribute it, with or without modifying it,

either commercially or noncommercially. Secondarily, this License preserves

for the author and publisher a way to get credit for their work, while not being

considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of

the document must themselves be free in the same sense. It complements

the GNU General Public License, which is a copyleft license designed for free

software.

We have designed this License in order to use it for manuals for free software,

because free software needs free documentation: a free program should come

with manuals providing the same freedoms that the software does. But this

License is not limited to software manuals; it can be used for any textual work,

regardless of subject matter or whether it is published as a printed book. We

recommend this License principally for works whose purpose is instruction

or reference.

1.�APPLICABILITY�AND�DEFINITIONS

This License applies to any manual or other work, in any medium, that con-

tains a notice placed by the copyright holder saying it can be distributed under

the terms of this License. Such a notice grants a world-wide, royalty-free licen-

se, unlimited in duration, to use that work under the conditions stated herein.

The "Document", below, refers to any such manual or work. Any member of

the public is a licensee, and is addressed as "you". You accept the license if

you copy, modify or distribute the work in a way requiring permission under

copyright law.

GNUFDL • PID_00157327 10 Administració de sistemes GNU/Linux

A "Modified Version" of the Document means any work containing the Docu-

ment or a portion of it, either copied verbatim, or with modifications and/or

translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the

Document that deals exclusively with the relationship of the publishers or

authors of the Document to the Document's overall subject (or to related mat-

ters) and contains nothing that could fall directly within that overall subject.

(Thus, if the Document is in part a textbook of mathematics, a Secondary Sec-

tion may not explain any mathematics.) The relationship could be a matter

of historical connection with the subject or with related matters, or of legal,

commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are desig-

nated, as being those of Invariant Sections, in the notice that says that the

Document is released under this License. If a section does not fit the above

definition of Secondary then it is not allowed to be designated as Invariant.

The Document may contain zero Invariant Sections. If the Document does

not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front-

Cover Texts or Back-Cover Texts, in the notice that says that the Document is

released under this License. A Front-Cover Text may be at most 5 words, and

a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, repre-

sented in a format whose specification is available to the general public, that is

suitable for revising the document straightforwardly with generic text editors

or (for images composed of pixels) generic paint programs or (for drawings)

some widely available drawing editor, and that is suitable for input to text

formatters or for automatic translation to a variety of formats suitable for in-

put to text formatters. A copy made in an otherwise Transparent file format

whose markup, or absence of markup, has been arranged to thwart or discou-

rage subsequent modification by readers is not Transparent. An image format

is not Transparent if used for any substantial amount of text. A copy that is

not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII wit-

hout markup, Texinfo input format, LaTeX input format, SGML or XML using

a publicly available DTD, and standard-conforming simple HTML, PostScript

or PDF designed for human modification. Examples of transparent image for-

mats include PNG, XCF and JPG. Opaque formats include proprietary formats

that can be read and edited only by proprietary word processors, SGML or

XML for which the DTD and/or processing tools are not generally available,

and the machine-generated HTML, PostScript or PDF produced by some word

processors for output purposes only.

GNUFDL • PID_00157327 11 Administració de sistemes GNU/Linux

The "Title Page" means, for a printed book, the title page itself, plus such fo-

llowing pages as are needed to hold, legibly, the material this License requires

to appear in the title page. For works in formats which do not have any title

page as such, "Title Page" means the text near the most prominent appearance

of the work's title, preceding the beginning of the body of the text.

The "publisher" means any person or entity that distributes copies of the Do-

cument to the public.

A section "Entitled XYZ" means a named subunit of the Document whose tit-

le either is precisely XYZ or contains XYZ in parentheses following text that

translates XYZ in another language. (Here XYZ stands for a specific section

name mentioned below, such as "Acknowledgements", "Dedications", "Endor-

sements", or "History".) To "Preserve the Title" of such a section when you mo-

dify the Document means that it remains a section "Entitled XYZ" according

to this definition.

The Document may include Warranty Disclaimers next to the notice which

states that this License applies to the Document. These Warranty Disclaimers

are considered to be included by reference in this License, but only as regards

disclaiming warranties: any other implication that these Warranty Disclaimers

may have is void and has no effect on the meaning of this License.

2.�VERBATIM�COPYING

You may copy and distribute the Document in any medium, either commer-

cially or noncommercially, provided that this License, the copyright notices,

and the license notice saying this License applies to the Document are repro-

duced in all copies, and that you add no other conditions whatsoever to tho-

se of this License. You may not use technical measures to obstruct or control

the reading or further copying of the copies you make or distribute. However,

you may accept compensation in exchange for copies. If you distribute a large

enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you

may publicly display copies.

3.�COPYING�IN�QUANTITY

If you publish printed copies (or copies in media that commonly have printed

covers) of the Document, numbering more than 100, and the Document's

license notice requires Cover Texts, you must enclose the copies in covers that

carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front

cover, and Back-Cover Texts on the back cover. Both covers must also clearly

and legibly identify you as the publisher of these copies. The front cover must

present the full title with all words of the title equally prominent and visible.

GNUFDL • PID_00157327 12 Administració de sistemes GNU/Linux

You may add other material on the covers in addition. Copying with changes

limited to the covers, as long as they preserve the title of the Document and

satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you

should put the first ones listed (as many as fit reasonably) on the actual cover,

and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering mo-

re than 100, you must either include a machine-readable Transparent copy

along with each Opaque copy, or state in or with each Opaque copy a compu-

ter-network location from which the general network-using public has access

to download using public-standard network protocols a complete Transparent

copy of the Document, free of added material. If you use the latter option,

you must take reasonably prudent steps, when you begin distribution of Opa-

que copies in quantity, to ensure that this Transparent copy will remain thus

accessible at the stated location until at least one year after the last time you

distribute an Opaque copy (directly or through your agents or retailers) of that

edition to the public.

It is requested, but not required, that you contact the authors of the Document

well before redistributing any large number of copies, to give them a chance

to provide you with an updated version of the Document.

4.�MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the

conditions of sections 2 and 3 above, provided that you release the Modified

Version under precisely this License, with the Modified Version filling the role

of the Document, thus licensing distribution and modification of the Modifi-

ed Version to whoever possesses a copy of it. In addition, you must do these

things in the Modified Version:

• A. Use in the Title Page (and on the covers, if any) a title distinct from that

of the Document, and from those of previous versions (which should, if

there were any, be listed in the History section of the Document). You may

use the same title as a previous version if the original publisher of that

version gives permission.

• B. List on the Title Page, as authors, one or more persons or entities res-

ponsible for authorship of the modifications in the Modified Version, to-

gether with at least five of the principal authors of the Document (all of its

principal authors, if it has fewer than five), unless they release you from

this requirement.

• C. State on the Title page the name of the publisher of the Modified Ver-

sion, as the publisher.

• D. Preserve all the copyright notices of the Document.

GNUFDL • PID_00157327 13 Administració de sistemes GNU/Linux

• E. Add an appropriate copyright notice for your modifications adjacent to

the other copyright notices.

• F. Include, immediately after the copyright notices, a license notice giving

the public permission to use the Modified Version under the terms of this

License, in the form shown in the Addendum below.

• G. Preserve in that license notice the full lists of Invariant Sections and

required Cover Texts given in the Document's license notice.

• H. Include an unaltered copy of this License.

• I. Preserve the section Entitled "History", Preserve its Title, and add to it

an item stating at least the title, year, new authors, and publisher of the

Modified Version as given on the Title Page. If there is no section Entitled

"History" in the Document, create one stating the title, year, authors, and

publisher of the Document as given on its Title Page, then add an item

describing the Modified Version as stated in the previous sentence.

• J. Preserve the network location, if any, given in the Document for public

access to a Transparent copy of the Document, and likewise the network

locations given in the Document for previous versions it was based on.

These may be placed in the "History" section. You may omit a network

location for a work that was published at least four years before the Do-

cument itself, or if the original publisher of the version it refers to gives

permission.

• K. For any section Entitled "Acknowledgements" or "Dedications", Preser-

ve the Title of the section, and preserve in the section all the substance

and tone of each of the contributor acknowledgements and/or dedicati-

ons given therein.

• L. Preserve all the Invariant Sections of the Document, unaltered in their

text and in their titles. Section numbers or the equivalent are not consi-

dered part of the section titles.

• M. Delete any section Entitled "Endorsements". Such a section may not be

included in the Modified Version.

• N. Do not retitle any existing section to be Entitled "Endorsements" or to

conflict in title with any Invariant Section.

• O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that

qualify as Secondary Sections and contain no material copied from the Do-

cument, you may at your option designate some or all of these sections as

invariant. To do this, add their titles to the list of Invariant Sections in the

Modified Version's license notice. These titles must be distinct from any other

section titles.

You may add a section Entitled "Endorsements", provided it contains nothing

but endorsements of your Modified Version by various parties–for example,

statements of peer review or that the text has been approved by an organiza-

tion as the authoritative definition of a standard.

GNUFDL • PID_00157327 14 Administració de sistemes GNU/Linux

You may add a passage of up to five words as a Front-Cover Text, and a passage

of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts

in the Modified Version. Only one passage of Front-Cover Text and one of

Back-Cover Text may be added by (or through arrangements made by) any

one entity. If the Document already includes a cover text for the same cover,

previously added by you or by arrangement made by the same entity you are

acting on behalf of, you may not add another; but you may replace the old

one, on explicit permission from the previous publisher that added the old

one.

The author(s) and publisher(s) of the Document do not by this License give

permission to use their names for publicity for or to assert or imply endorse-

ment of any Modified Version.

5.�COMBINING�DOCUMENTS

You may combine the Document with other documents released under this

License, under the terms defined in section 4 above for modified versions,

provided that you include in the combination all of the Invariant Sections

of all of the original documents, unmodified, and list them all as Invariant

Sections of your combined work in its license notice, and that you preserve

all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple

identical Invariant Sections may be replaced with a single copy. If there are

multiple Invariant Sections with the same name but different contents, make

the title of each such section unique by adding at the end of it, in parentheses,

the name of the original author or publisher of that section if known, or else

a unique number. Make the same adjustment to the section titles in the list of

Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the

various original documents, forming one section Entitled "History"; likewise

combine any sections Entitled "Acknowledgements", and any sections Entitled

"Dedications". You must delete all sections Entitled "Endorsements".

6.�COLLECTIONS�OF�DOCUMENTS

You may make a collection consisting of the Document and other documents

released under this License, and replace the individual copies of this License

in the various documents with a single copy that is included in the collection,

provided that you follow the rules of this License for verbatim copying of each

of the documents in all other respects.

GNUFDL • PID_00157327 15 Administració de sistemes GNU/Linux

You may extract a single document from such a collection, and distribute it

individually under this License, provided you insert a copy of this License into

the extracted document, and follow this License in all other respects regarding

verbatim copying of that document.

7.�AGGREGATION�WITH�INDEPENDENT�WORKS

A compilation of the Document or its derivatives with other separate and in-

dependent documents or works, in or on a volume of a storage or distribution

medium, is called an "aggregate" if the copyright resulting from the compilati-

on is not used to limit the legal rights of the compilation's users beyond what

the individual works permit. When the Document is included in an aggregate,

this License does not apply to the other works in the aggregate which are not

themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the

Document, then if the Document is less than one half of the entire aggregate,

the Document's Cover Texts may be placed on covers that bracket the Docu-

ment within the aggregate, or the electronic equivalent of covers if the Docu-

ment is in electronic form. Otherwise they must appear on printed covers that

bracket the whole aggregate.

8.�TRANSLATION

Translation is considered a kind of modification, so you may distribute trans-

lations of the Document under the terms of section 4. Replacing Invariant Sec-

tions with translations requires special permission from their copyright hol-

ders, but you may include translations of some or all Invariant Sections in

addition to the original versions of these Invariant Sections. You may include

a translation of this License, and all the license notices in the Document, and

any Warranty Disclaimers, provided that you also include the original English

version of this License and the original versions of those notices and disclai-

mers. In case of a disagreement between the translation and the original ver-

sion of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications",

or "History", the requirement (section 4) to Preserve its Title (section 1) will

typically require changing the actual title.

9.�TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as

expressly provided under this License. Any attempt otherwise to copy, modify,

sublicense, or distribute it is void, and will automatically terminate your rights

under this License.

GNUFDL • PID_00157327 16 Administració de sistemes GNU/Linux

However, if you cease all violation of this License, then your license from

a particular copyright holder is reinstated (a) provisionally, unless and until

the copyright holder explicitly and finally terminates your license, and (b)

permanently, if the copyright holder fails to notify you of the violation by

some reasonable means prior to 60 days after the cessation.

Moreover, your license from a particular copyright holder is reinstated perma-

nently if the copyright holder notifies you of the violation by some reasona-

ble means, this is the first time you have received notice of violation of this

License (for any work) from that copyright holder, and you cure the violation

prior to 30 days after your receipt of the notice.

Termination of your rights under this section does not terminate the licenses

of parties who have received copies or rights from you under this License. If

your rights have been terminated and not permanently reinstated, receipt of a

copy of some or all of the same material does not give you any rights to use it.

10.�FUTURE�REVISIONS�OF�THIS�LICENSE

The Free Software Foundation may publish new, revised versions of the GNU

Free Documentation License from time to time. Such new versions will be

similar in spirit to the present version, but may differ in detail to address new

problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the

Document specifies that a particular numbered version of this License "or any

later version" applies to it, you have the option of following the terms and

conditions either of that specified version or of any later version that has been

published (not as a draft) by the Free Software Foundation. If the Document

does not specify a version number of this License, you may choose any ver-

sion ever published (not as a draft) by the Free Software Foundation. If the

Document specifies that a proxy can decide which future versions of this Li-

cense can be used, that proxy's public statement of acceptance of a version

permanently authorizes you to choose that version for the Document.

11.�RELICENSING

"Massive Multiauthor Collaboration Site" (or "MMC Site") means any World

Wide Web server that publishes copyrightable works and also provides promi-

nent facilities for anybody to edit those works. A public wiki that anybody

can edit is an example of such a server. A "Massive Multiauthor Collaboration"

(or "MMC") contained in the site means any set of copyrightable works thus

published on the MMC site.

GNUFDL • PID_00157327 17 Administració de sistemes GNU/Linux

"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 licen-

se published by Creative Commons Corporation, a not-for-profit corporation

with a principal place of business in San Francisco, California, as well as future

copyleft versions of that license published by that same organization.

"Incorporate" means to publish or republish a Document, in whole or in part,

as part of another Document.

An MMC is "eligible for relicensing" if it is licensed under this License, and if

all works that were first published under this License somewhere other than

this MMC, and subsequently incorporated in whole or in part into the MMC,

(1) had no cover texts or invariant sections, and (2) were thus incorporated

prior to November 1, 2008.

The operator of an MMC Site may republish an MMC contained in the site

under CC-BY-SA on the same site at any time before August 1, 2009, provided

the MMC is eligible for relicensing.

ADDENDUM:�How�to�use�this�License�for�your�documents

To use this License in a document you have written, include a copy of the

License in the document and put the following copyright and license notices

just after the title page:

Copyright (C) YEAR YOUR NAME.

Permission is granted to copy, distribute and/or modify this

document under the terms of the GNU Free Documentation Li-

cense, Version 1.3 or any later version published by the Free

Software Foundation; with no Invariant Sections, no Front-

Cover Texts, and no Back-Cover Texts.

A copy of the license is included in the section entitled

"GNU Free Documentation License".

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, repla-

ce the "with ... Texts." line with this:

with the Invariant Sections being LIST THEIR TITLES, with

theFront-Cover Texts being LIST, and with the Back-Cover Texts

being LIST.

If you have Invariant Sections without Cover Texts, or some other combina-

tion of the three, merge those two alternatives to suit the situation.

GNUFDL • PID_00157327 18 Administració de sistemes GNU/Linux

If your document contains nontrivial examples of program code, we recom-

mend releasing these examples in parallel under your choice of free software

license, such as the GNU General Public License, to permit their use in free

software.

GNUFDL • PID_00157327 19 Administració de sistemes GNU/Linux

Bibliografia

[Bai03] Bailey, E. C. (2003). RedHat Maximum RPM. Ofereix una àmplia vi-

sió dels sistemes de paquets de programari de les distribucions Debian i Fedo-

ra/Red Hat.

[Ban] Banerjee, T. "Linux Installation Strategies HOWTO". The Linux Docu-

mentation Project. The Dot Gnu Project. http://www.gnu.org/software/dotgnu/

[Bar] Barrapunto. Notícies open source. <http://barrapunto.com>.

[Bas] Mike, G. "BASH Programming - Introduction HOWTO". The Li-

nux Documentation Project.http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-

Prog-Intro-COMO/. Ofereix una àmplia introducció (i conceptes avançats) a

la programació de shell scripts en Bash, i també nombrosos exemples.

Barnett, Bruce. "AWK". @ General Electric Company. http://

www.grymoire.com/Unix/Awk.html

"Big Admin: Script Examples". http://www.sun.com/bigadmin/scripts/

filter.jsp

[Bro01] Scott Bronson. "VPN PPP-SSH". The Linux Documentation Project,

2001.

[Bul] Bulma Linux User Group. Documentació general i comunitats d'usuaris.

http://bulmalug.net

[Cen] The Comunity ENTerprise Operatyng System. http://www.centos.org

[Cis00] Cisco. "TCP/IP White Paper", 2000. http://www.cisco.com

[Com01] Douglas Comer. TCP/IP Principios básicos, protocolos y arquitectura.

Prentice Hall, 2001.

[Coo] Cooper, M. (2006). "Advanced bash Scripting Guide". The Linux Do-

cumentation Project (guies). http://tldp.org/LDP/abs/html/index.html. Ofereix

una àmplia introducció (i conceptes avançats) a la programació de shell scripts

en Bash, i també nombrosos exemples.

[Debb] Comunitat Debian. "Distribució Debian". http://www.debian.org

[Deb] Debian. "Lloc de Seguretat de Debian". http://www.debian.org/secu-

rity/

[Debba] Debian. "Software Libre vs Software Abierto". http://

www.debian.org/intro/free.es.html

[Dis] Distrowatch. Distribucions Linux disponibles. Seguiment de les distri-

bucions GNU/Linux i novetats dels paquets de programari. I enllaços als llocs

de descàrrega de les imatges ISO dels CD/DVD de les distribucions GNU/Li-

nux. http://www.distrowatch.com

GNUFDL • PID_00157327 20 Administració de sistemes GNU/Linux

[Dra99] Joshua Drake. "Linux Networking". The Linux Documentation Pro-

ject, 1999.

[Fed] The Fedora Project. http://fedoraproject.org

[FHS] FHS Standard, 2003. http://www.pathname.com/fhs

[Fre] Freshmeat. Llista de projectes open source. http://freshmeat.org

[Fri02] Frisch, A. (2002). Essential System Administration. O'Reilly. Ad-

ministració de GNU/Linux i UNIX. Comenta de manera àmplia aspectes

d'administració local i gestió de sistemes d'impressió.

[FSF] FSF. Free Software Foundation i Projecte GNU. http://www.gnu.org

[Gar98] Bdale Garbee. TCP/IP Tutorial. N3EUA Inc., 1998.

Garrels, Machtelt. "Bash Guide for Beginners". http://tldp.org/LDP/Bash-

Beginners-Guide/html/index.html

"Man bash". http://www.gnu.org/software/bash/manual/bashref.html

[Gnu] Gnupg.org. GnuPG Web Site. http://www.gnupg.org/

[Gon] Gonzato, G. "From DOS/Windows to Linux HOWTO". The Linux Do-

cumentation Project.

[Gt] Taylor, G.; Allaert, D. "The Linux Printing HOWTO". The Linux Do-

cumentation Project. Ofereix informació actualitzada dels sistemes d'impressió

i la seva configuració, i també detalls d'algunes impressores. Per a detalls

concrets de models d'impressora i controladors, us podeu dirigir a: http://

www.linuxprinting.org/

[Hin00] Hinner, M. "Filesystems HOWTO". The Linux Documentation Project.

Informació sobre els diferents sistemes de fitxers disponibles i els esquemes de

creació de particions per a la instal·lació del sistema.

[His] HispaLinux. "Comunidad Hispana de Linux". Documentación general

y comunidades de usuarios. http://www.hispalinux.es

[IET] IETF. "Repositori de Request For Comment desenvolupats per la Internet

Engineering Task Force (IETF) en el Network Information Center (NIC)".

[Joh08] Johnson, Michael K. (1998). "Linux Information Sheet". The Linux

Documentation Project.

[KD00] Olaf Kirch; Terry Dawson. Linux Network Administrator's Guide.

[Knp] Distribución Knoppix. http://knoppix.org

GNUFDL • PID_00157327 21 Administració de sistemes GNU/Linux

[Koe] Koehntopp, K. "Linux Partition HOWTO". The Linux Documentation

Project. Informació sobre els diferents sistemes de fitxers disponibles i els es-

quemes de creació de particions per a la instal·lació del sistema.

[Law07] David Lawyer (2007). "Linux Módem". The Linux Documentation

Project.

[Lev] Levenez, Eric. "UNIX History". http://www.levenez.com/unix

Linux Journal. http://www.linuxjournal.com

Linux Magazine. http://www.linux-mag.com/

[lin03b] FHS Standard, 2003. http://www.pathname.com/fhs

[Linc] Linux Standards Base project. http://www.linux-foundation.org/en/LSB

[Log] LogCheck. http://logcheck.org/

[LPD] The Linux Documentation Project (LDP). Col·lecció de guies i manuals

que cobreixen qualsevol dels aspectes de GNU/Linux. Documentació general

i comunitats d'usuaris. http://www.tldp.org

[Mal96] Fred Mallett (1996). TCP/IP Tutorial. FAME Computer Education.

Mike G. "Programación en BASH - COMO de introducción".http://

es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/

[Mon] Monit. http://www.tildeslash.com/monit/

[Mor 03] Morill, D. (2003). Configuración de sistemas Linux. Anaya Multi-

media. Bona referència de configuració de sistemes Linux, amb alguns casos

d'estudi en diferents entorns; comenta diferents distribucions Debian i Red

Hat.

[Mou01] Gerhard Mourani (2001). Securing and Optimizing Linux: The Ulti-

mate Solution. Open Network Architecture, Inc.

[Mor03] Morill, D. (2003). Configuración de sistemas Linux. Anaya Multime-

dia.

[Nem06] Nemeth, E.; Snyder, G.; Hein, T. R. (2006). Linux Administra-

tion Handbook (2a. ed.). Prentice Hall. Tracta de manera àmplia la majoria

d'aspectes d'administració i és una bona guia genèrica per a qualsevol distri-

bució.

[New] Newsforge. Notícies open source. http://newsforge.org

[Nt3] NTFS-3g Project: NTFS-3G Read/Write Driver. http://www.ntfs-3g.org/

O'Reilly Associates (2000). Y como e-book (free) en Free Software Foundati-

on, Inc. http://www.tldp.org/guides.html

GNUFDL • PID_00157327 22 Administració de sistemes GNU/Linux

[OSDb] OSDN. Open Source Development Network. Comunitat de llocs web,

notícies, desenvolupaments, projectes, etc. http://osdn.com

[OSIa] OSI. Llista de llicències open source. http://www.opensource.org/licen-

ses/index.html

[OSIb] OSI (2003). "Open Source Definition". http://www.opensource.org/

docs/definition.php

[OSIc] OSI (2003). "Open Source Iniciative". http://www.opensource.org

[PPP00] Linux PPP. "Corwin Williams, Joshua Drake and Robert Hart". The

Linux Documentation Project, 2000.

[Pri] Pritchard, S. "Linux Hardware HOWTO". The Linux Documentation Pro-

ject.

[PS02] Enríquez, Ricardo; Sierra, Pío (2002). Open Source. Anaya Multi-

media.

[Qui01] Quigley, E. (2001). Linux shells by Example. Prentice Hall. Comenta

els diferents intèrprets de programació en GNU/Linux, i també les seves sem-

blances i diferències.

[Ran05] David Ranch. "Linux IP Masquerade" i John Tapsell. Masquera-

ding Made Simple . The Linux Documentation Project, 2005.

[Ray98] Raymond, Eric (1998). La catedral y el bazar. http://es.tldp.org/

Otros/catedral-bazar/cathedral-es-paper-00.html

[Ray02a] Raymond, Eric (2002). "UNIX and Internet Fundamentals". The

Linux Documentation Project.

[Rayb] Raymond, E. S. "The Linux Installation HOWTO". The Linux Docu-

mentation Project.

Red Hat Inc. "Distribución Red Hat". http://www.redhat.com

[Rid00] Daniel López Ridruejo. "The Linux Networking Overview". The

Linux Documentation Project, 2000.

Robbins, Arnold. "UNIX in a Nutshell" (3a. ed.). http://oreilly.com/catalog/

unixnut3/chapter/ch11.html

"The GNU awk programming language". http://tldp.org/LDP/Bash-Beginners-

Guide/html/chap_06.html

[Sal94] Salus, Peter H. (1994, novembre). "25 aniversario de UNIX". Byte

España (núm. 1).

Scientific Linux. http://www.scientificlinux.org

GNUFDL • PID_00157327 23 Administració de sistemes GNU/Linux

[Sam] Samba Project. http://samba.org

[Sama] Samba HOWTO and Reference Guide (Chapter Domain Con-

trol). http://samba.org/samba/docs/man/Samba-HOWTO-Collection/samba-

pdc.html

[Samb] Samba Guide (Chapter Adding Domain member Servers and Clients).

http://samba.org/samba/docs/man/Samba-Guide/unixclients.html

[Sec00] Andrés Seco (2000). "Diald". The Linux Documentation Project.

[Skob] Skoric, M. "Linux+WindowsNT mini-HOWTO". The Linux Documen-

tation Project.

[Sla] Slashdot. Lloc de notícies generals de la comunitat Open Source, informà-

tica i Internet. http://slashdot.org.

[SM02] Schwartz, M. i altes (2002). Multitool Linux - Practical Uses for Open

Source Software. Addison Wesley.

[Smb] Entrada Server Message Block a la Wikipedia. http://en.wikipedia.org/

wiki/Server_Message_Block

[Smi02] Smith, R. (2002). Advanced Linux Networking.

Addison Wesley. Administració de GNU/Linux i UNIX. Comenta de manera

àmplia aspectes d'administració local i gestió de sistemes d'impressió.

[Sob10] Sobell, M. G. (2010). A Practical Guide to Fedora and Red Hat Enterprise

Linux. Prentice Hall. És una bona guia d'administració local per a distribucions

Red Hat i Fedora.

[Sou] Sourceforge. Llista de projectes open source. http://sourceforge.org

[Sta02] Stallman, Richard (2002). "Discusión por Richard Stallman sobre

la relación de GNU y Linux". http://www.gnu.org/gnu/linux-and-gnu.html

[Ste07] French, S. "Linux CIFS Client Guide". http://us1.samba.org/samba/

ftp/cifs-cvs/linux-cifs-client-guide.pdf

[Stu] Stutz, M. "The Linux Cookbook: Tips and Techniques for Everyday

Use". The Linux Documentation Project (guies). És una àmplia introducció a les

eines disponibles en GNU/Linux.

[Sun 02] Sundaram, R. (2002). "The dosemu HOWTO". The Linux Docu-

mentation Project.

[Tan87] Tanenbaum, Andrew (1987). Sistemas operativos: diseño e imple-

mentación. Prentice Hall.

[Tan06] Tanenbaum, Andrew; Woodhull, Albert S. (2006). The Minix

Book: Operating Systems Design and Implementation (3a. ed.). Prentice Hall.

GNUFDL • PID_00157327 24 Administració de sistemes GNU/Linux

[Tri] Tripwire.com. Tripwire Web Site. http://www.tripwire.com/

[Ubn] Distribució Ubuntu. http://www.ubuntu.com

[Vas00] Alavoor Vasudevan (2000). "Modem-Dialup-NT". The Linux Docu-

mentation Project.

[War] Ward, I. "Debian and Windows Shared Printing mini-HOWTO". The

Linux Documentation Project. Wine Project. http://www.winehq.com/

[Wil02] Matthew D. Wilson (2002). "VPN". The Linux Documentation Pro-

ject.

[Wm02] Welsh, M. i altres (2002). Running Linux 4th edition. O'Reilly.

Administració de GNU/Linux i UNIX. Comenta de manera àmplia aspectes

d'administració local i gestió de sistemes d'impressió.

[Woo] Wood, D. "SMB HOWTO". The Linux Documentation Project.

[Xin] Xinetd Web Site. http://www.xinetd.org/

Introducció alsistema operatiuGNU/Linux Josep Jorba Esteve PID_00167521

GNUFDL • PID_00167521 Introducció al sistema operatiu GNU/Linux

© 2010, FUOC. Es garanteix el permís per a copiar, distribuir i modificar aquest document segons els termes de la GNU FreeDocumentation License, Version 1.2 o qualsevol altra de posterior publicada per la Free Software Foundation, sense seccionsinvariants ni textos de la coberta anterior o posterior. Hi ha una còpia de la llicència en l'apartat "GNU Free DocumentationLicense" d'aquest document.

GNUFDL • PID_00167521 Introducció al sistema operatiu GNU/Linux

Índex

Introducció.................................................................................................. 5

1. Programari lliure i open source..................................................... 7

2. UNIX. Una mica d'història............................................................... 13

3. Sistemes GNU/Linux.......................................................................... 22

4. El perfil de l'administrador de sistemes...................................... 26

5. Tasques de l'administrador............................................................. 31

5.1. Tasques d'administració local del sistema .................................. 31

5.2. Tasques d'administració de xarxa ............................................... 33

6. Distribucions de GNU/Linux........................................................... 36

6.1. Debian ......................................................................................... 41

6.2. Fedora .......................................................................................... 45

7. Què veurem.......................................................................................... 50

Activitats...................................................................................................... 53

Bibliografia................................................................................................. 54

GNUFDL • PID_00167521 5 Introducció al sistema operatiu GNU/Linux

Introducció

Els sistemes GNU/Linux [Joh98] ja no són una novetat; tenen una àmplia va-

rietat d'usuaris i d'àmbits de treball on són utilitzats.

El seu origen es remunta al mes d'agost de 1991, quan un estudiant finlandès

anomenat Linus Torvalds va anunciar, en el newsgroup comp.os.minix que ha-

via creat el seu propi nucli de sistema operatiu i el va oferir a la comunitat

de desenvolupadors perquè el provessin i suggerissin millores per a fer-lo més

utilitzable. Aquest seria l'origen del nucli (o kernel) del sistema operatiu que,

més tard, es diria Linux.

D'altra banda, l'FSF (Free Software Foundation), mitjançant el seu projecte

GNU, produïa des de 1984 programari que podia ser utilitzat lliurement, se-

gons el que Richard Stallman (membre de l'FSF) considerava programari lliure:

aquell del qual podem aconseguir les fonts (codi), estudiar-les i modificar-les,

i també redistribuir-lo sense que ens obliguin a pagar-hi. En aquest model, el

negoci no es troba en l'ocultació del codi, sinó en el programari complemen-

tari afegit, en l'adequació del programari als clients i en els serveis afegits, com

el manteniment i la formació d'usuaris (el suport que els oferim), ja sigui en

forma de material, llibres i manuals, o en cursos de formació.

La combinació (o suma) del programari GNU i del nucli Linux és la que ens

ha portat als actuals sistemes GNU/Linux. Actualment, tant els moviments

open source, des de diferents organitzacions (com l'FSF) i empreses com les que

generen les diferents distribucions Linux (Red Hat, Canonical Ubuntu, Man-

drake, Novell SUSE, etc.), passant per grans empreses (com HP, IBM o Sun,

que proporcionen suports o patrocinis), han donat una empenta molt gran

als sistemes GNU/Linux fins a situar-los al nivell de poder competir, i superar,

moltes de les solucions de propietat tancades existents.

Els sistemes GNU/Linux no són ja una novetat. El programari GNU es va

iniciar a mitjan dècada dels vuitanta, i el nucli Linux a començaments

dels noranta. Linux es recolza en tecnologia provada de UNIX, amb més

de quaranta anys d'història.

En aquest mòdul introductori veurem algunes idees generals dels movi-

ments open source i free software, i també una mica d'història de Linux i dels

seus orígens compartits amb UNIX, d'on ha heretat més de quaranta anys

d'investigació en sistemes operatius.

Nota

Podeu veure una còpia delmissatge de Linus i les re-accions inicials a http://groups.google.com/group/comp.os.minix/browse_thread/thread/76536d1fb451ac60/b813d52cbc5a044b.

GNUFDL • PID_00167521 7 Introducció al sistema operatiu GNU/Linux

1. Programari lliure i open source

Sota la idea dels moviments (o filosofies) del programari lliure i open source

[OSIc] [OSIb] (també anomenat de codi obert o programari obert), es troben di-

verses formes de programari que, encara que no són totes del mateix tipus, sí

que comparteixen moltes idees comunes.

La denominació d'un producte de programari com a codi obert compor-

ta, com a idea més important, la possibilitat d'accedir al seu codi font, i

la possibilitat de modificar-lo i redistribuir-lo de la manera que es con-

sideri convenient, subjectes a una determinada llicència de codi obert,

que ens dóna el marc legal.

Davant un codi de propietat, en el qual un fabricant (empresa de programari)

el tanca, ocultant-lo i restringint-se els drets a si mateix, sense donar possibili-

tat de fer cap adaptació ni canvis que no hagi fet ell prèviament, el codi obert

ofereix, entre altres consideracions:

1)�Accés�al�codi�font: ja sigui per estudiar-lo (ideal per a educació) o modifi-

car-lo, per corregir errors, adaptar-lo o afegir més prestacions.

2)�Gratuïtat (d'ús i possiblement de preu): normalment, el programari, ja sigui

en forma binària o en la forma de codi font, es pot obtenir lliurement o per

una mòdica quantitat en concepte de despeses d'empaquetament, distribució

i valors afegits. Això no treu que el programari no pugui ser distribuït comer-

cialment a un determinat preu fixat.

3)�Evitar�monopolis�de�programari�de�propietat: no dependre d'una única

opció o únic fabricant del nostre programari. Això és més important quan es

tracta d'una gran organització, ja sigui una empresa o un estat, que no pot (o

no li convindria) posar-se a les mans d'una única solució i passar a dependre'n

exclusivament.

4)�Un�model�d'avenç: no basat en l'ocultació d'informació, sinó en la com-

partició del coneixement (semblant al de la comunitat científica), per a acon-

seguir progressos de manera més ràpida, amb més qualitat, ja que les elecci-

ons preses estan basades en el consens de la comunitat, i no en els capricis

d'empreses desenvolupadores de programari de propietat.

Nota

[OSIc] OSI (2003). Open Sour-ce Iniciative.http://www.opensource.org[OSIb] OSI (2003). Open Sour-ce Definition.http://www.opensource.org/docs/definition.php

GNUFDL • PID_00167521 8 Introducció al sistema operatiu GNU/Linux

Crear programes i distribuir-los al costat del codi font no és nou. Ja des dels

inicis de la informàtica i en els inicis de la xarxa Internet s'havia fet així. Tan-

mateix, el concepte de codi obert com a tal, la definició i la redacció de les

condicions que havia de complir, daten de mitjan 1997.

Eric Raymond i Bruce Perens van ser els que van divulgar la idea. Raymond

[Ray98] va ser l'autor de l'assaig titulat La catedral i el basar, que parlava sobre

les tècniques de desenvolupament de programari utilitzades per la comunitat

Linux, encapçalada per Linus Torvalds, i la comunitat GNU de la Free Software

Foundation (FSF), encapçalada per Richard Stallman. Per la seva part, Bruce

Perens era en aquell moment el cap del projecte Debian, que treballava en la

creació d'una distribució de GNU/Linux integrada únicament amb programari

lliure.

Dues de les comunitats més importants són l'FSF, amb el seu projecte

de programari GNU, i la comunitat open source, el màxim exponent de

projecte del qual és Linux. GNU/Linux és el resultat de la unió dels seus

treballs.

Una distinció important entre les comunitats FSF i open source són les definici-

ons de codi obert (open source) i programari lliure (free software). [Deba] [PS02]

El programari�lliure (free software) [FSF] és un moviment que parteix de les

idees de Richard Stallman, que considera que cal garantir que els programes

estiguin a l'abast de tothom de manera gratuïta, que s'hi tingui accés lliure i

es puguin utilitzar segons el desig de cadascú. Una distinció important, que

va causar certes reticències a les empreses, és el terme free. En anglès, aquesta

paraula té el doble significat de 'gratuït' i 'lliure'. La gent de l'FSF buscava les

dues coses, però era difícil vendre tots dos conceptes a les empreses. La pre-

gunta típica era: com es podia guanyar diners amb això? La resposta va venir

de la comunitat Linux (amb Linus Torvalds al capdavant), quan va aconseguir

tenir un producte que encara no havia aconseguit la comunitat GNU i l'FSF en

aquells moments: un sistema operatiu complet lliure amb codi font disponi-

ble. En aquest moment va ser quan a una part de la comunitat se li va ocórrer

ajuntar les diferents activitats que hi havia en la filosofia del programari lliure

sota la nova denominació de codi obert (open source).

Open�source es va registrar com una marca de certificació, a la qual es podien

adherir els productes de programari que en respectessin les especificacions.

Això no va agradar a tothom; de fet, hi sol haver certa separació i controvèrsies

entre els dos grups de l'open source i l'FSF (amb GNU), encara que són més les

coses que els uneixen que les que els separen.

Nota

Podeu veure la versió espa-nyola de [Ray98] a http://es.tldp.org/Otros/catedral-ba-zar/cathedral-es-paper-00.html

GNUFDL • PID_00167521 9 Introducció al sistema operatiu GNU/Linux

En certa manera, per als partidaris del programari lliure (com l'FSF), el codi

obert (o open source) constitueix un pas en fals, ja que representa una certa

"venda" al mercat dels seus ideals, i deixa la porta oberta perquè es vagi fent

de propietat el programari que era lliure. Els partidaris de l'open source veuen

l'oportunitat de promocionar el programari que, d'una altra manera, estaria en

una utilització minoritària, mentre que amb la divulgació i la posada en comú

per a tothom, incloent-hi les empreses que vulguin participar en el codi obert,

es pot entrar amb suficient força per a plantar cara al programari de propietat.

La idea que persegueixen tant l'FSF com l'open source és la d'augmentar

la utilitat del programari lliure, oferint així una alternativa a les soluci-

ons úniques que volen imposar les grans empreses. Les diferències entre

totes dues filosofies són més ideològiques que pràctiques.

Una vegada establertes les idees bàsiques de la comunitat del codi obert, ar-

ribem al punt en què calia concretar de manera clara quins criteris havia de

complir un producte de programari per a considerar-se de codi obert. Calia te-

nir una definició de codi obert [OSIb], que inicialment va escriure Bruce Perens

el juny de 1997 com a resultat de comentaris dels desenvolupadors de la distri-

bució Debian Linux, i que posteriorment va ser reeditada (amb modificacions

menors) per l'organització OSI (Open Source Initiative). Aquesta organització

és l'encarregada de regular la definició i controlar les llicències de codi obert.

El codi obert està regulat per una definició pública, que s'utilitza com a

base de la redacció de les seves llicències de programari.

Un petit resum (interpretació) de la definició: un open source software [OSIb],

o programari de codi font obert, ha de complir els requisits següents:

1)�Es�pot�copiar,�regalar�o�vendre�a�tercers�el�programari, sense haver de

pagar-hi. Es permet copiar el programa.

2)�El�programa�ha�d'incloure�el�codi�font i n'ha de permetre la distribució

tant en forma compilada com en font. O, en tot cas, cal facilitar alguna manera

d'obtenir els codis font (per exemple, descàrrega des d'Internet). No és permès

ocultar el codi, o donar-lo en representacions intermèdies. Garanteix que es

poden fer modificacions.

3)�La�llicència�del�programari�ha�de�permetre�que�es�puguin�fer�modifi-

cacions i treballs que se'n derivin, i que llavors es puguin distribuir sota la

mateixa llicència que l'original. Permet reutilitzar el codi original.

GNUFDL • PID_00167521 10 Introducció al sistema operatiu GNU/Linux

4)�Es�pot�requerir�la�integritat�del�codi�de�l'autor, és a dir, les modificaci-

ons es poden presentar en forma de pegats (patchs) al codi original, o es pot

demanar que tinguin noms o números diferents dels originals. Això protegeix

l'autor de quines modificacions es puguin considerar com a seves. Aquest punt

depèn del que digui la llicència del programari.

5)�La�llicència�no�ha�de�discriminar�cap�persona�o�grup. No s'ha de restringir

l'accés al programari. Un cas a part són les restriccions per llei, com les de

les exportacions tecnològiques fora dels Estats Units a tercers països. Si hi ha

restriccions d'aquest tipus, cal esmentar-les.

6)�No�ha�de�discriminar�camps�laborals. El programari es pot utilitzar en

qualsevol ambient de treball, encara que no hi hagi estat pensat. Una altra

lectura és permetre finalitats comercials; ningú no pot impedir que el progra-

mari s'utilitzi amb finalitats comercials.

7)�La�llicència�és�aplicable�a�tothom que rebi el programa.

8)�Si�el�programari�forma�part�d'un�producte�més�gran,�ha�de�romandre

amb�la�mateixa�llicència. Això controla que no se separin parts per a formar

programari de propietat (de manera no controlada). En el cas del programari

de propietat, cal informar que hi ha parts de programari de codi obert (i quines

són).

9)�La�llicència�no�ha�de�restringir�cap�programari�incorporat�o�distribuït

conjuntament, és a dir, incorporar-lo no ha de representar cap barrera per a

un altre producte de programari distribuït conjuntament. Aquest és un punt

"polèmic", ja que sembla contradir-se amb l'anterior. Bàsicament, diu que qual-

sevol pot agafar programari de codi obert i afegir-lo al seu sense que afecti

les condicions de la llicència (per exemple, de propietat), encara que sí que,

segons el punt anterior, hauria d'informar que hi ha parts de codi obert.

10)�La�llicència�ha�de�ser�tecnològicament�neutra. No s'han d'esmentar mit-

jans de distribució únics, o excloure's possibilitats. Per exemple, no es pot li-

mitar (per llicència) que es faci la distribució en forma de CD, FTP o mitjançant

web.

La llicència que porti el programa ha de complir les especificacions anteriors

perquè el programa es consideri de codi obert. L'organització OSI s'encarrega

de comprovar que les llicències compleixen les especificacions. A la pàgina

web Open Source Licenses es pot trobar la llista de les llicències [OSIa]; unes

de les més famoses i utilitzades són les GPL (GNU public licenses).

Sota la GPL, el programari pot ser copiat i modificat, però les modificacions

s'han de fer públiques sota la mateixa llicència. I s'impedeix que el codi es

barregi amb codi de propietat, per a evitar així que el codi de propietat es faci

amb parts obertes. Hi ha una llicència LGPL que és pràcticament igual, però

Nota

Aquesta definició de codiobert no és per si mateixa unallicència de programari, sinómés aviat una especificació dequins requisits hauria de com-plir una llicència de programa-ri de codi obert.

Nota

[OSIa] OSI. Llista de llicènciesopen source.http://www.opensource.org/li-censes/index.html

GNUFDL • PID_00167521 11 Introducció al sistema operatiu GNU/Linux

permet que el programari amb aquesta llicència sigui integrat a programari de

propietat. Un exemple clàssic és la biblioteca (library) C de Linux (amb llicència

LGPL). Si fos GPL, només es podria fer servir per a desenvolupar programari

lliure, però amb la LGPL es permet usar-la per a desenvolupar programari de

propietat.

Molts projectes de programari lliure, o amb part de codi obert i part de propi-

etat, tenen la seva pròpia llicència: Apache (basada en la BSD), Mozilla (MPL i

NPL de Netscape), etc. Bàsicament, a l'hora de posar el programari com a open

source podem posar la nostra pròpia llicència que compleixi la definició ante-

rior (de codi obert), o podem escollir llicenciar sota una llicència ja establerta

o, com en el cas de la GPL, ens obliga que la nostra llicència també sigui GPL.

Una vegada vist el concepte de codi obert i les seves llicències, ens queda per

tractar fins�a�quin�punt�és�rendible�per�a�una�empresa�treballar�o�produir

codi�obert. Si no fos atraient per a les empreses, perdríem alhora tant un client

potencial com un dels principals productors de programari.

El codi obert és també atraient per a les empreses, amb un model de

negoci en què preval el valor afegit al producte.

En el codi obert hi ha diferents rendibilitats atraients amb vista a les empreses:

a) Per a les empreses desenvolupadores de programari, es crea un problema:

com és possible guanyar diners sense vendre un producte? Es gasten molts di-

ners per a desenvolupar un programa i després és necessari obtenir beneficis.

Bé, la resposta no és simple: no es pot aconseguir amb qualsevol programa-

ri, la rendibilitat es troba en el tipus de programari que pot generar beneficis

més enllà de la simple venda. Normalment, cal fer un estudi de si l'aplicació

es tornarà rendible en desenvolupar-la com a programari obert (la majoria sí

que ho farà), basant-se en les premisses que tindrem un descens de despesa

en desenvolupament (la comunitat ens ajudarà), reducció de manteniment

o correcció d'errors (la comunitat pot oferir això molt de pressa), i tenir en

compte l'augment del nombre d'usuaris que ens proporcionarà el codi obert,

i també les necessitats que tindran dels nostres serveis de suport o documen-

tació. Si la balança és positiva, llavors serà viable prescindir dels ingressos ge-

nerats per les vendes.

b) Augmentar la quota d'usuaris.

c) Obtenir més flexibilitat de desenvolupament; com més persones hi inter-

vinguin, més gent hi haurà per a detectar errors.

GNUFDL • PID_00167521 12 Introducció al sistema operatiu GNU/Linux

d) Els ingressos majoritàriament vindran pel costat del suport, la formació

d'usuaris i el manteniment.

e) En empreses que utilitzen programari cal considerar molts paràmetres a

l'hora d'escollir el programari per al desenvolupament de les tasques; es poden

tenir en compte coses com el rendiment, la fiabilitat, la seguretat, l'escalabilitat

i el cost monetari. I encara que sembla que el codi obert ja representa per si

mateix una elecció pel cost econòmic, cal dir que hi ha programari obert que

pot competir amb el de propietat en qualsevol dels altres paràmetres (o fins i

tot superar-lo). A més, cal vigilar molt amb les opcions o sistemes de propietat

d'un únic fabricant; no en podem dependre únicament (podem recordar casos,

en altres àmbits, com els vídeos Beta de Sony enfront el VHS, o en els PC

l'arquitectura MicroChannel d'IBM). Hem d'evitar l'ús de monopolis, amb el

que representen: falta de competència en els preus, serveis cars, manteniment

car, poca (o nul·la) varietat d'opcions, etc.

f) Per als usuaris particulars ofereix gran varietat de programari adaptat a tas-

ques comunes, ja que bona part del programari ha estat pensat i ha estat im-

plementat per persones que volien fer aquestes mateixes tasques però no tro-

baven el programari adequat. En el cas de l'usuari particular, un paràmetre

molt important és el cost del programari, però la paradoxa és que en l'usuari

domèstic és on es fa més ús de programari de propietat. Normalment, els usu-

aris domèstics fan ús de productes de programari amb còpies il·legals. Algunes

estadístiques recents indiquen índexs del 60-70% de còpies il·legals domèsti-

ques en alguns països. L'usuari sent que només per tenir l'ordinador domès-

tic PC ja té "dret" de disposar de programari per a usar-lo. En aquests casos

estem sota situacions "il·legals" que, encara que no han estat perseguides àm-

pliament, ho podrien ser, o bé s'intenten controlar per sistemes de llicències

(o activacions de productes). A més, això té uns efectes perjudicials indirectes

sobre el programari lliure, ja que si els usuaris fan un ús ampli de programari

de propietat, això obliga qui es vulgui comunicar amb ells, ja siguin bancs,

empreses o administracions públiques, a fer ús del mateix programari de pro-

pietat, i aquests sí que abonen les llicències dels productes. Una de les "bata-

lles" més importants per al programari lliure és la possibilitat que capti els usu-

aris domèstics, el que es denomina mercat desktop (o escriptori), referit a l'ús

domèstic o d'oficina en les empreses.

g) Finalment, els estats, com a cas particular, poden obtenir beneficis impor-

tants del programari de codi obert, ja que poden disposar de programari de

qualitat a preus "ridículs" comparats amb l'enorme despesa de llicències de

programari de propietat (milers o desenes de milers). A més que el programari

de codi obert permet integrar fàcilment les aplicacions, cal tenir en compte

qüestions culturals (de cada país) com, per exemple, la llengua. Aquest últim

cas és bastant problemàtic, ja que en determinades regions, estats petits amb

llengua pròpia, els fabricants de programari de propietat es neguen a adaptar

les seves aplicacions, o insten que els paguin per fer-ho.

Nota

Les còpies il·legals domèsti-ques també són denominadesde vegades còpies pirates.

GNUFDL • PID_00167521 13 Introducció al sistema operatiu GNU/Linux

2. UNIX. Una mica d'història

Com a antecessor dels nostres sistemes GNU/Linux [Sta], recordarem una mica

la història de UNIX [Sal94] [Lev]. En origen, Linux es va pensar com un clon

de Minix (una implementació acadèmica de UNIX per a PC) i d'algunes idees

desenvolupades en els UNIX de propietat. Però al seu torn, es va desenvolupar

en codi obert, i amb orientació als PC domèstics. Veurem, en aquest apartat

dedicat a UNIX, i en el següent, dedicat a GNU/Linux, com aquesta evolució

ens ha portat fins als sistemes GNU/Linux actuals, que poden competir amb

qualsevol UNIX de propietat i que estan disponibles per a un ampli nombre

d'arquitectures de maquinari, des del simple PC fins als supercomputadors.

Linux pot ser utilitzat en un ampli rang de màquines. En la llista

TOP500 dels supercomputadors més ràpids es poden trobar diversos

supercomputadors amb GNU/Linux: per exemple, el MareNostrum, al

Barcelona Supercomputing Center, un clúster dissenyat per IBM, amb

10.240 CPU PowerPC/Cell amb sistema operatiu GNU/Linux (adaptat

per als requisits d'aquestes màquines). En les estadístiques de la llista

podem observar que els supercomputadors amb GNU/Linux ocupen, en

general, més d'un 75% de la llista.

El UNIX es va iniciar cap a l'any 1969 als laboratoris BTL (Bell Telephone Labs)

d'AT&T. Aquests laboratoris s'acabaven de retirar de la participació d'un pro-

jecte anomenat MULTICS , l'objectiu del qual era crear un sistema operatiu amb

el qual un gran ordinador pogués donar cabuda a un miler d'usuaris simulta-

nis. En aquest projecte participaven els BTL, General Electric i el MIT. Però va

fallar, en part, per ser massa ambiciós per a la seva època.

Mentre es desenvolupava aquest projecte, dos enginyers dels BTL que partici-

paven en MULTICS, Ken�Thompson i Dennis�Ritchie, van trobar un ordina-

dor que no estava utilitzant ningú, un DEC PDP7, que només tenia un assem-

blador i un programa carregador. Thompson i Ritchie van desenvolupar com a

prova (i sovint en el seu temps lliure) parts de UNIX, un programa assembla-

dor (del codi màquina) i el nucli rudimentari del sistema operatiu.

Aquell mateix any, 1969, Thompson va tenir la idea d'escriure un sistema de

fitxers per al nucli creat, de manera que es poguessin emmagatzemar fitxers de

manera ordenada en un sistema de directoris jeràrquics. Després d'unes quan-

tes discussions teòriques (que es van allargar uns dos mesos) es va implemen-

tar el sistema en un parell de dies. A mesura que s'avançava en el disseny del

sistema, al qual es van incorporar alguns enginyers més dels BTL, la màqui-

na original es va quedar petita, i van pensar a demanar-ne una de nova (en

Nota

Podem veure la llista TOP500dels supercomputadors mésràpids a:http://www.top500.org

GNUFDL • PID_00167521 14 Introducció al sistema operatiu GNU/Linux

aquells dies costaven prop de 100.000 dòlars, i era una bona inversió). Es van

haver d'inventar una excusa (ja que el sistema UNIX era un desenvolupament

en temps lliure) i van dir que la volien per a crear un nou processador de text

(aplicació que donava diners en aquells temps). Els van aprovar la compra

d'una PDP11.

El UNIX es remunta a l'any 1969, de manera que té més de quaranta

anys de tecnologies desenvolupades i utilitzades en tot tipus de siste-

mes.

Quan els va arribar la màquina, només hi havia la CPU i la memòria, però

no el disc ni el sistema operatiu. Thompson, sense poder esperar, va dissenyar

un disc RAM en memòria i va utilitzar la meitat de la memòria com a disc i

l'altra per al sistema operatiu que estava dissenyant. Una vegada va arribar el

disc, es va continuar treballant tant en UNIX com en el processador de textos

promès (l'excusa). El processador de textos va ser un èxit (es tractava de Troff,

un llenguatge d'edició que posteriorment va ser utilitzat per a crear les pàgines

man de UNIX), i els BTL van començar a utilitzar el rudimentari UNIX amb el

nou processador de text, de manera que es van convertir en el primer usuari

de UNIX.

En aquells moments es van començar a presentar diversos principis filosòfics

de UNIX [Ray02a]:

• Escriure programes per a fer una cosa i fer-la bé.

• Escriure programes perquè treballin junts.

• Escriure programes perquè manegin fluxos de text.

Una altra idea molt important és que UNIX va ser un dels primers sistemes

pensats�per�a�ser�independents�de�l'arquitectura�de�maquinari, i això ha

permès portar-lo amb èxit a un gran nombre d'arquitectures de maquinari

diferents.

La necessitat de documentar el que s'estava fent, ja que hi havia usuaris ex-

terns, va donar lloc el novembre de 1971 al UNIX Programmer's Manual, que

van firmar Thompson i Richie. En la segona edició (juny de 1972), denomi-

nada V2 (es feia correspondre l'edició dels manuals amb el número de versió

UNIX), es deia que el nombre d'instal·lacions de UNIX ja arribava a les deu. I

aquest nombre va continuar creixent fins a cinquanta en la V5.

Llavors es va decidir (final del 1973) presentar els resultats en un congrés de

sistemes operatius. I com a resultat, diversos centres informàtics i universitats

van demanar còpies de UNIX. AT&T no donava suport ni manteniment de

UNIX, la qual cosa va fer que els usuaris necessitessin unir-se i compartir els

seus coneixements per a formar comunitats d'usuaris de UNIX. AT&T va deci-

Nota

Vegeu: http://www.usenix.org

GNUFDL • PID_00167521 15 Introducció al sistema operatiu GNU/Linux

dir cedir UNIX a les universitats, però tampoc no els donava suport ni correc-

ció d'errors. Els usuaris van començar a compartir les seves idees, informació,

programes, errades, etc. Es va crear una associació denominada USENIX com

a agrupació d'usuaris de UNIX. La seva primera reunió (maig de 1974) va tenir

una dotzena d'assistents.

Una de les universitats que havia obtingut una llicència de UNIX va ser la

Universitat de Califòrnia a Berkeley, on havia estudiat Ken Thompson. El 1975,

Thompson va tornar com a professor allà, i hi va portar l'última versió de

UNIX. Dos estudiants graduats acabats d'incorporar, Chuck Haley i Bill Joy

(que posteriorment va cofundar Sun Microsystems) van començar a treballar

en una implementació de UNIX.

Una de les primeres coses que els va decebre van ser els editors. Joy va perfec-

cionar un editor anomenat ex, fins a transformar-lo en el vi, un editor visual de

pantalla completa. I els dos van escriure un compilador de llenguatge Pascal,

que van afegir al UNIX. Hi va haver certa demanda d'aquesta implementació

de UNIX, i Joy el va començar a produir com el BSD, Berkeley Software Distri-

bution (o UNIX BSD).

El BSD (el 1978) tenia una llicència particular sobre el preu: deia que estava

d'acord amb el cost dels mitjans i la distribució que es tenia en aquell moment.

Així, els nous usuaris acabaven fent alguns canvis o incorporant coses, venent

les seves còpies "refetes" i, al cap d'un temps, els canvis s'incorporaven en la

versió següent del BSD.

Joy també va afegir al seu treball de l'editor vi algunes aportacions més, com

el tractament dels terminals de text, de manera que l'editor fos independent

del terminal en el qual s'utilitzés. Va crear el sistema termcap com a interfície

genèrica de terminals amb controladors per a cada terminal concret, de ma-

nera que en la realització dels programes ja ens podíem oblidar dels terminals

concrets i utilitzar la interfície genèrica.

El pas següent va ser adaptar-lo a diferents arquitectures. Fins a l'any 1977

només es podia executar en màquines PDP; aquell any es van començar a fer

adaptacions per a màquines del moment, com les Interdata i IBM. La versió

7 (V7, el juny de 1979) de UNIX va ser la primera portable. Aquesta versió

va portar molts avenços, ja que contenia awk, lint, make i uucp. El manual

ja tenia 400 pàgines (més dos apèndixs de 400 pàgines cada un). S'hi incloïa

també el compilador de C dissenyat en els BTL per Kernighan i Ritchie, que

s'havia creat per reescriure la major part de UNIX, inicialment en assemblador

i després passat a C amb les parts d'assemblador que fossin només dependents

de l'arquitectura. S'hi va incloure també un intèrpret d'ordres millorada (shell

de Bourne) i instruccions com find, cpio i expr.

GNUFDL • PID_00167521 16 Introducció al sistema operatiu GNU/Linux

La indústria UNIX va començar també a créixer; van començar a aparèixer

versions (implementacions) de UNIX de companyies, com Xenix; hi va haver

una col·laboració entre Microsoft (en els orígens també va treballar amb ver-

sions de UNIX) i SCO per a màquines Intel 8086 (el primer PC d'IBM); van

aparèixer noves versions BSD de Berkeley...

Però va sorgir un nou problema quan AT&T es va adonar que el UNIX era

un producte comercial valuós. En la llicència de la V7 es va prohibir l'estudi

en centres acadèmics, per protegir el secret comercial. Moltes universitats uti-

litzaven fins al moment el codi font de UNIX per a la docència de sistemes

operatius, i van deixar d'usar-lo per a donar només teoria.

En qualsevol cas, cadascú va solucionar el problema a la seva manera. A Ams-

terdam, Andrew�Tanenbaum (autor de prestigi de llibres de teoria de sistemes

operatius) va decidir escriure des del principi un nou sistema operatiu compa-

tible amb UNIX sense utilitzar una sola línia de codi d'AT&T; va anomenar

aquest nou sistema operatiu Minix. Aquest seria el que, posteriorment, servi-

ria el 1991 a un estudiant finlandès per a crear la seva pròpia versió de UNIX,

que va anomenar Linux.

Bill Joy, que continuava a Berkeley desenvolupant el BSD (ja estava en la versió

4.1), va decidir marxar a una nova empresa anomenada Sun Microsystems, en

la qual va acabar els treballs del 4.2 BSD, que després acabaria modificant per a

crear el UNIX de Sun, el SunOS (entorn del 1983). Cada empresa va començar

a desenvolupar les seves versions: IBM amb AIX, DEC amb Ultrix, HP amb

HPUX, Microsoft/SCO amb Xenix, etc. El UNIX va començar (des de 1980)

la seva etapa comercial, i AT&T en va treure una ultima versió anomenada

UNIX System V (SV), de la qual deriven, juntament amb els 4.xBSD, els UNIX

actuals, ja sigui de la branca BSD o de la System V. La SV va tenir diverses

revisions; per exemple, la SV Release 4 va ser una de les més importants. La

conseqüència d'aquestes últimes versions és que més o menys tots els UNIX

existents es van adaptar l'un a l'altre; en la pràctica són versions del System

V R4 d'AT&T o del BSD de Berkeley, adaptades per cada fabricant. Alguns fa-

bricants ho especifiquen i diuen que el seu UNIX és de tipus BSD o System V,

però la realitat és que tots tenen una mica de totes dues, ja que posteriorment

es van fer diversos estàndards de UNIX per a intentar uniformitzar-les. Entre

aquests estàndards trobem els IEEE POSIX, UNIX97, FHS, etc.

Amb el temps, el UNIX es va dividir en diverses branques de sistema; les

dues principals eren que derivava de l'AT&T UNIX o System V, i la de la

Universitat de Califòrnia, el BSD. La majoria dels UNIX actuals deriva

de l'un o de l'altre, o són una barreja de tots dos.

GNUFDL • PID_00167521 17 Introducció al sistema operatiu GNU/Linux

Però AT&T en aquells moments (SVR4) va passar per un procés judicial per

monopoli telefònic (era la principal, si no l'única, companyia telefònica als

Estats Units), que va fer que es dividís en múltiples empreses més petites, i

els drets de UNIX originals van començar un ball de propietaris important:

el 1990 els tenien a mitges l'Open Software Foundation (OSF) i UNIX Inter-

national (UI); després, UNIX Systems Laboratories (USL), que va denunciar la

Universitat de Berkeley per les seves còpies del BSD, però va perdre, ja que la

llicència original no imposava drets de propietat al codi de UNIX. Més tard,

els drets UNIX es van vendre a l'empresa Novell; aquesta en va cedir part a

SCO (que ja en disposava d'alguns cedits per Microsoft des dels seus productes

Xenix), i avui dia encara no està molt clar qui els té finalment: per diferents

fronts els reclamen Novell, l'OSF i SCO.

Un exemple d'aquest problema va ser el cas (octubre de 2003) de la companyia

SCO, que va posar una demanda legal a IBM perquè aquesta, segons SCO, ha-

via cedit part del codi UNIX a versions del nucli Linux, que suposadament in-

clouen algun codi UNIX original. El resultat avui dia és que l'assumpte encara

continua amb certa vigència en els tribunals, amb SCO convertida en un "pà-

ria" de la indústria informàtica que amenaça els usuaris de Linux, IBM i d'altres

UNIX de propietat amb l'afirmació que tenen els drets de UNIX originals i

que els altres hi han de pagar. Encara que, en els últims moviments judicials,

sembla que finalment Novell és el que té els drets de propietat intel·lectual de

UNIX. Caldrà veure com evoluciona aquest cas, i el tema dels drets de UNIX

amb aquest.

Nota

Podeu veure l'opinió de l'FSFsobre el cas SCO a http://www.gnu.org/philosophy/sco/sco.html

GNUFDL • PID_00167521 18 Introducció al sistema operatiu GNU/Linux

Figura 1. Resum històric de diverses versions UNIX

El panorama actual de UNIX ha canviat molt des de l'aparició de Linux (1991),

que a partir dels anys 1995-1999 es va començar a convertir en una alternativa

seriosa als UNIX de propietat, per la gran quantitat de plataformes de maqui-

nari que suporta i l'ampli suport de la comunitat internacional i les empreses

en l'avenç. Hi ha diferents versions de UNIX de propietat que continuen so-

brevivint en el mercat, tant per la seva adaptació a entorns industrials o per

ser el millor sistema operatiu existent en el mercat, o perquè hi ha necessitats

que només es poden cobrir amb UNIX i el maquinari adequat. A més, alguns

dels UNIX de propietat encara són millors que el GNU/Linux quant a fiabili-

tat i rendiment, encara que cada cop més s'escurcen les distàncies, ja que les

empreses mateixes que tenen els seus UNIX de propietat s'interessen cada ve-

gada més en GNU/Linux, i aporten part dels seus desenvolupaments per in-

corporar-los a Linux. Cal esperar una mort més o menys lenta de les versions

de propietat de UNIX, per a deixar pas a distribucions basades en Linux dels

fabricants, adaptades als seus equips.

GNUFDL • PID_00167521 19 Introducció al sistema operatiu GNU/Linux

Un panorama general d'aquestes empreses:

• SUN: disposa de la seva implementació de UNIX anomenada Solaris (evo-

lució del SunOS). Va començar com un sistema BSD, però ara és majoritàri-

ament System V i parts de BSD. És molt utilitzat a les màquines Sun amb ar-

quitectura Sparc, i en màquines multiprocessador (fins a 64 processadors).

Promocionen GNU/Linux com a entorn de desenvolupament per a Java,

i van disposar d'una distribució de GNU/Linux denominada Java Desktop

System, que va tenir una àmplia acceptació en alguns països. A més, va co-

mençar a usar el Gnome com a escriptori, i ofereix suport financer a diver-

sos projectes com el Mozilla Firefox, el Gnome i l'OpenOffice. També cal

destacar la iniciativa presa amb la seva última versió del seu UNIX Solaris,

per a alliberar-ne el codi gairebé totalment, en la versió Solaris 10, amb la

creació d'una comunitat per a les arquitectures Intel i Sparc, denominada

OpenSolaris, que ha permès la creació de distribucions lliures de Solaris. A

més, hem d'assenyalar iniciatives (2006) per a alliberar la plataforma Java

sota llicències GPL, com el projecte OpenJDK. Així mateix, l'adquisició de

Sun Microsystems per part d'Oracle (2009) està causant certa incertesa en

alguns d'aquests productes o tecnologies, perquè la companyia no hi ha

definit una estratègia clara.

• IBM: té la seva versió de UNIX propietària denominada AIX, que sobreviu

en alguns segments de gamma alta d'estacions de treball i servidors de la

firma. D'altra banda, dóna suport ferm a la comunitat open source, i promou

entorns de desenvolupament lliures (eclipse.org) i tecnologies Java per a

Linux, incorpora Linux a les seves grans màquines i dissenya campanyes

publicitàries (màrqueting) per a promocionar Linux. A part està tenint una

repercussió important en la comunitat, per l'ambient judicial del seu cas

en què es defensa de la firma SCO, que l'acusa de violació de propietat

intel·lectual de UNIX, per haver integrat, suposadament, components en

el GNU/Linux.

• HP: té el seu UNIX HPUX, però dóna ampli suport a Linux, tant en forma

de codi open source com instal·lant Linux a les seves màquines. Es diu que

és la companyia que ha guanyat més diners amb Linux.

• SGI: Silicon Graphics té un UNIX anomenat IRIX per a les seves màquines

gràfiques basades en arquitectures MIPS. El 2006 va canviar la seva estratè-

gia envers plataformes Intel Xeon/AMD Opteron venent màquines amb

Windows, i últimament la majoria dels sistemes amb versions comercials

de GNU/Linux, com les produïdes per Red Hat i Novell SUSE. A la comu-

nitat Linux ofereix suport d'OpenGL (tecnologia de gràfics 3D) i de dife-

rents sistemes de fitxers (XFS) i control de dispositius perifèrics.

• Apple: es va incorporar recentment (a partir de mitjan anys noranta) al

món UNIX, quan va decidir substituir el seu sistema operatiu per una va-

riant UNIX. El nucli dels seus nous operatius, anomenat XNU (combinat

Nota

Moltes de les empreses quedisposen de UNIX de propietatparticipen en GNU/Linux i ofe-reixen alguns dels seus desen-volupaments a la comunitat.

GNUFDL • PID_00167521 20 Introducció al sistema operatiu GNU/Linux

amb el sistema operatiu Darwin) prové d'una versió 4.4 BSD, combinada

amb el nucli Mach. Aquest nucli open source és el que, sumat a unes in-

terfícies gràfiques molt potents, dóna a Apple el seu sistema operatiu Mac

OS X. Està considerat avui dia com un dels millors UNIX i, com a mínim,

un dels més "bells" des del punt de vista gràfic. També empra gran quan-

titat de programari provinent del projecte GNU, com utilitats de sistema i

biblioteques i compiladors de desenvolupament (GNU GCC).

• Distribuïdors� Linux: tant comercials com organitzacions, esmentarem

empreses com Red Hat, SUSE, Mandriva (prèviament coneguda com a

Mandrake), i organitzacions o comunitats no comercials com Debian, Fe-

dora, OpenSUSE, etc. Entre aquestes (les distribucions amb més desplega-

ment) i les més petites, s'emporten la major part del desenvolupament de

GNU/Linux, i tenen el suport de la comunitat Linux i de l'FSF amb el pro-

gramari GNU, a més de rebre contribucions de les empreses citades.

• BSD: encara que no sigui una empresa com a tal, esmentarem com des de

Berkeley i altres mediadors es continua el desenvolupament de les versions

BSD, i altres projectes lliures, clons de BSD, com els operatius FreeBSD,

NetBSD, OpenBSD (el UNIX considerat més segur), TrustedBSD, etc., que

també, més tard o més aviat, representen millores o incorporacions de

programari a Linux. A més, una aportació important en la línia BSD és el

nucli XNU (usat a Darwin) provinent del BSD 4.4, i que va desenvolupar

Apple com a nucli de codi obert del seu sistema operatiu Mac OS X i el seu

sistema iPhone OS per a mòbils.

• Google: ha tingut una relació bastant important amb la comunitat des dels

seus inicis com a cercador a Internet, ja que tota la seva infraestructura de

clústers en diferents centres de dades, de vegades coneguda com a Google

Cluster, està basada en múltiples servidors que executen GNU/Linux amb

sistemes de fitxers especialment dissenyats per a grans volums de dades.

Així mateix, va entrar amb especial força en el món del desenvolupament

per a plataformes mòbils, amb la plataforma Android, una plataforma amb

el nucli Linux, i capes de programari basades en GNU i Java.

• Microsoft: sempre ha tingut una relació difícil amb el codi obert obert/

lliure, que veu com un competidor i un perill potencial. Normalment, ha

representat per a la comunitat més aviat un destorb en el desenvolupa-

ment de UNIX i GNU/Linux, ja que ha posat traves amb incompatibili-

tats en diferents tecnologies, i no disposa d'una participació directa en el

món UNIX/Linux. Encara que, en els seus orígens, va desenvolupar Xenix

(1980) per a PC, a partir d'una llicència AT&T de UNIX, que no va ven-

dre directament, però sí que ho va fer per mitjà de mediadors, com SCO,

que en va aconseguir el control el 1987 i la va rebatejar com a SCO UNIX

(1989). Com a nota curiosa, posteriorment va comprar part dels drets de la

llicència UNIX a SCO (aquesta els havia obtingut al seu torn per mitjà de

Novell). No són clars els motius de Microsoft a l'hora de fer aquesta adqui-

Nota

Carta oberta de Novell ala comunitat GNU/Linuxa http://www.novell.com/linux/microsoft/community_open_letter.html.

GNUFDL • PID_00167521 21 Introducció al sistema operatiu GNU/Linux

sició, encara que alguns suggereixen que hi ha alguna relació amb el fet de

proporcionar suport a SCO en el seu judici contra IBM. A més, recentment

(2006), Microsoft va arribar a acords amb Novell (proveïdora actual de la

distribució SUSE i la comunitat OpenSUSE), en una sèrie d'acords bilaterals

per a promocionar empresarialment totes dues plataformes. Però part de la

comunitat GNU/Linux es manté escèptica, per les possibles implicacions

sobre la propietat intel·lectual de Linux, i els temes que podrien incloure

problemes judicials per ús de patents.

Una altra anècdota històrica curiosa (2002) és que, juntament amb una empre-

sa anomenada UniSys, Microsoft es va dedicar a fer màrqueting de com es po-

den convertir sistemes UNIX a sistemes Windows. I encara que l'objectiu podia

ser més o menys lloable, el curiós era que el servidor original del web empresa-

rial es trobava en una màquina FreeBSD amb Apache. De vegades, també paga

a algunes empreses "independents" (alguns opinen que bastant poc) perquè

duguin a terme estudis de rendiment comparatius entre UNIX/Linux i Win-

dows –moltes d'aquestes campanyes són vistes com a FUD (fear, uncertainty and

doubt, en català, 'por, incertesa i dubte'), ja que la majoria d'aquestes campanys

no resisteixen una mínima anàlisi tècnica, més enllà del màrqueting emprat.

En els últims anys sembla que a Microsoft hi hagi hagut un cert acostament a

la comunitat open source, amb l'establiment de diferents comunitats open sour-

ce, per a la integració i interrelació amb productes GNU/Linux.

Nota

Alguns portals de Microsoft relacionats amb l'open source són http://port25.technet.com/i http://www.microsoft.com/opensource.

Vegeu també la definició de FUD a la Viquipèdia, http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt, i un cas concret de FUD a http://news.cnet.com/2100-1001-872266.html.

Com resumeixen alguns comentaris que solen aparèixer en la biblio-

grafia UNIX, UNIX és, tècnicament, un sistema senzill i coherent dis-

senyat amb bones idees que es van saber portar a la pràctica, però no

s'ha d'oblidar que algunes d'aquestes idees es van aconseguir gràcies al

suport entusiasta que va brindar una gran comunitat d'usuaris i desen-

volupadors que van col·laborar entre ells, compartint una tecnologia i

governant-ne l'evolució.

I com que la història se sol repetir, en aquest moment l'evolució i l'entusiasme

continuen amb els sistemes GNU/Linux.

GNUFDL • PID_00167521 22 Introducció al sistema operatiu GNU/Linux

3. Sistemes GNU/Linux

En els primers anys, els usuaris dels primers ordinadors personals no disposa-

ven de gaires sistemes operatius per a triar.

El mercat dels ordinadors personals el dominava el DOS de Microsoft. Una

altra possibilitat eren els Mac d'Apple, però a uns preus desorbitats (en com-

paració de la resta). L'altra opció important, encara que reservada a grans mà-

quines (i cares), era UNIX.

Una primera opció que va aparèixer va ser MINIX (1984), creat des de zero per

Andrew Tanenbaum, amb�l'objectiu�d'usar-lo�per�a�l'educació, per a ensenyar

disseny i implementació de sistemes operatius [Tan87] [Tan06].

MINIX va ser pensat per a executar-se sobre una plataforma Intel 8086, molt

popular en l'època perquè era la base dels primers IBM PC. El principal avan-

tatge d'aquest operatiu era el seu codi font, accessible a qualsevol (12.000

línies de codi entre assemblador i C), ja que estava inclòs al llibre docent

de sistemes operatius de Tanenbaum [Tan87]. Però MINIX era més una eina

d'ensenyament que un sistema eficaç pensat per al rendiment o per a activitats

professionals.

En els noranta, l'FSF (Free Software Foundation) i el seu projecte GNU va mo-

tivar molts programadors per promoure el programari de qualitat i de distri-

bució lliure. I a part de programari d'utilitats, es treballava en un nucli (kernel)

d'operatiu denominat Hurd, que portaria diversos anys de desenvolupament.

Mentrestant, l'octubre de 1991, un estudiant finlandès anomenat Linus Tor-

valds presentaria la versió 0.0.1 del seu nucli de sistema operatiu, que va de-

nominar Linux, orientat a màquines Intel 386, i el va oferir sota llicència GPL

a fòrums de programadors i a la comunitat d'Internet perquè el provessin i,

si els agradava, l'ajudessin a desenvolupar-lo. L'entusiasme va ser tal que, en

poc temps, hi havia un gran nombre de programadors treballant en el nucli

o en aplicacions.

Algunes de les característiques que van diferenciar Linux dels sistemes del seu

temps i que continuen essent aplicables, i altres d'heretades de UNIX, podrien

ser:

a)� Sistema� operatiu� de� codi� obert: qualsevol en pot disposar de les fonts,

modificar-les i crear noves versions per a poder-les compartir sota la llicència

GPL (que, de fet, el converteix en un programari lliure).

GNUFDL • PID_00167521 23 Introducció al sistema operatiu GNU/Linux

b)�Portabilitat: tal com el UNIX original, Linux està pensat per a dependre

molt poc d'una arquitectura concreta de màquina. Consegüentment, Linux

és, majoritàriament, independent de la màquina de destinació i es pot portar

a gairebé qualsevol arquitectura que disposi d'un compilador C com el GNU

GCC. Només resten algunes petites parts de codi assemblador i d'alguns dis-

positius dependents de la màquina, que han de ser reescrites en cada nova ar-

quitectura. Gràcies a això, GNU/Linux és un dels sistemes operatius que corre

en un nombre més gran d'arquitectures: Intel x86 i IA64, AMD x86 i x86_64,

Sparc de Sun, MIPS de Silicon, PowerPC (Apple), IBM S390, Alpha de Compaq,

m68k de Motorola, Vax, ARM, HPPArisc, etc.

c)�Nucli�de�tipus�monolític: el disseny del nucli està unit en una sola peça,

però és conceptualment modular en les diferents tasques. Una altra escola

de disseny d'operatius proposa els micronuclis (un exemple n'és el projecte

Mach), en què els serveis s'implementen com a processos a part, comunicats

per un micronucli més bàsic. Linux es va decidir com a monolític, perquè és

difícil extreure bon rendiment dels micronuclis (resulta un treball bastant dur

i complex). D'altra banda, el problema dels monolítics és el creixement; quan

es tornen molt grans es tornen intractables en el desenvolupament; això es va

intentar solucionar amb els mòduls de càrrega dinàmica.

d)�Mòduls�carregables�dinàmicament: permeten posar parts del sistema ope-

ratiu, com sistemes d'arxius o controladors de dispositius, com a porcions ex-

ternes que es carreguen (o enllacen) amb el nucli en temps d'execució sota

demanda. Això permet simplificar el nucli i oferir aquestes funcionalitats com

a elements que es poden programar separadament. Amb aquest ús de mòduls,

es podria considerar Linux com un nucli mixt, ja que és monolític, però ofe-

reix una sèrie de mòduls que complementen el nucli (aproximació semblant

a alguns conceptes de micronucli).

e)�Desenvolupament�del�sistema�per�part�d'una�comunitat�vinculada�per

Internet: els sistemes operatius mai no havien tingut un desenvolupament

tan ampli i dispers; no solen sortir de la companyia que els elabora (en el cas

dels de propietat) o d'un petit conjunt d'institucions acadèmiques i laboratoris

que col·laboren per crear-ne un. El fenomen de la comunitat Linux permet

que cadascú col·labori en la mesura que el temps i els coneixements propis li

ho permetin. El resultat són milers de desenvolupadors per a Linux. A més, per

la seva naturalesa de sistema de codi font obert, Linux és un laboratori ideal

per a provar idees de sistemes operatius al mínim cost; es pot implementar,

provar, prendre mesures i, si funciona, afegir la idea al nucli.

Els projectes es van succeir i –en l'inici de Linus amb el nucli– a la gent de

l'FSF, amb el programari d'utilitat GNU i, sobretot, amb el seu compilador de C

(GCC), es van unir altres projectes importants com les XFree/Xorg (una versió

PC de les X Window), i projectes d'escriptori com KDE i Gnome. I el desenvo-

lupament d'Internet amb projectes com el servidor web Apache, el navegador

Mozilla Firefox, o les bases de dades MySQL i PostgreSQL, van acabar donant

Nota

Projecte original Mach: http://www.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html

GNUFDL • PID_00167521 24 Introducció al sistema operatiu GNU/Linux

al nucli inicial Linux el recobriment d'aplicacions suficient per a construir els

sistemes GNU/Linux i competir en igualtat de condicions amb els sistemes de

propietat. I tot això va convertir els sistemes GNU/Linux en el paradigma del

programari de font oberta (open source).

Els sistemes GNU/Linux s'han convertit en la punta de llança de la co-

munitat open source, per la quantitat de projectes que s'han pogut aglu-

tinar i portar a bon terme.

El naixement de noves empreses, que van crear distribucions GNU/Linux

(agrupacions de nucli + aplicacions) i li van donar suport, com Red Hat, Man-

drake, SUSE, va contribuir a introduir GNU/Linux en les empreses que en dub-

taven, i a començar l'imparable creixement que vivim actualment.

Comentarem també la discussió�sobre�la�denominació�dels�sistemes�com�a

GNU/Linux. El terme Linux per a identificar el sistema operatiu amb què es

treballa és d'ús comú (per simplificar-ne el nom), encara que segons l'opinió

d'alguns desmereix el treball de l'FSF amb el projecte GNU, el qual ha propor-

cionat les principals eines del sistema. Tot i així, el terme Linux, per a referir-se

al sistema operatiu complet, és àmpliament usat comercialment.

En general, per a seguir una denominació més concorde a la participació de

la comunitat, s'utilitza el terme Linux quan ens estem referint només al nucli

(kernel) del sistema operatiu. Això crea certa confusió, ja que hi ha gent que

parla de sistemes Linux o del sistema operatiu Linux per abreujar. Quan es tre-

balla amb un sistema operatiu GNU/Linux, s'està treballant sobre una sèrie

de programari d'utilitats, en gran part fruit del projecte GNU, sobre el nucli

Linux. Per tant, el sistema és bàsicament GNU amb un nucli Linux.

El projecte GNU de l'FSF tenia per objectiu crear un sistema operatiu de pro-

gramari lliure a l'estil UNIX denominat GNU [Sta02].

Linus Torvalds va aconseguir, el 1991, ajuntar el seu nucli Linux amb les uti-

litats GNU, quan l'FSF encara no disposava de nucli propi. El nucli de GNU

es denomina Hurd, i avui dia s'hi treballa bastant, i ja hi ha algunes versions

beta de distribucions de GNU/Hurd.

Es calcula que, en una distribució GNU/Linux, hi ha un 28% de codi

GNU i un 3% que correspon al codi del nucli Linux; el percentatge res-

tant correspon a codi de tercers, ja sigui d'aplicacions o d'utilitats.

Per destacar la contribució de GNU [FSF], podem veure algunes de les seves

aportacions incloses en els sistemes GNU/Linux:

Nota

Podeu llegir un article de Ric-hard Stallman sobre GNU i Li-nux a http://www.gnu.org/gnu/linux-and-gnu.html.

GNUFDL • PID_00167521 25 Introducció al sistema operatiu GNU/Linux

• El compilador de C i C++ (GCC)

• L'intèrpret d'ordres bash

• L'editor Emacs (GNU Emacs)

• L'intèrpret PostScript (GNU Ghostscript)

• La biblioteca C estàndard (GNU C library, o també glibc)

• El depurador (GNU gdb)

• Makefile (GNU make)

• L'assemblador (GNU Assembler o gas)

• L'enllaçador (GNU Linker o gld)

Els sistemes GNU/Linux no són els únics que utilitzen programari GNU. Els

sistemes BSD, per exemple, incorporen també utilitats GNU. I alguns opera-

tius de propietat, com Mac OS X (d'Apple), també usen programari GNU. El

projecte GNU ha produït programari d'alta qualitat, que s'ha anat incorporant

a la major part de les distribucions de sistemes basades en UNIX, tant lliures

com propietàries.

És just per a tothom reconèixer el treball de cadascú denominant GNU/

Linux els sistemes que tractarem.

GNUFDL • PID_00167521 26 Introducció al sistema operatiu GNU/Linux

4. El perfil de l'administrador de sistemes

Les grans empreses i organitzacions depenen cada vegada més dels seus recur-

sos de computació i de com aquests són administrats per a adequar-los a les

tasques. El gran increment de les xarxes distribuïdes, amb els seus equips ser-

vidors i clients, ha creat una gran demanda d'un nou perfil laboral: l'anomenat

administrador de sistemes.

L'administrador de sistemes té una àmplia varietat de tasques importants.

Els millors administradors de sistema solen ser bastant generalistes, tant teò-

ricament com pràcticament. Es poden enfrontar a tasques com fer cablat-

ges d'instal·lacions o reparar cables, instal·lar sistemes operatius o programari

d'aplicacions, corregir problemes i errors en els sistemes, tant de maquinari

com de programari, formar els usuaris, oferir trucs o tècniques per a millorar

la productivitat en àrees que poden anar des d'aplicacions de processament de

textos fins a àrees complexes de sistemes CAD o simuladors, avaluar econò-

micament compres d'equipament de maquinari i programari, automatitzar un

gran nombre de tasques comunes, i incrementar el rendiment general del tre-

ball en la seva organització.

Es pot considerar l'administrador com un perfil d'empleat que ajuda els

altres empleats de l'organització a aprofitar millor els recursos disponi-

bles, de manera que millori tota l'organització.

La relació amb els usuaris finals de l'organització es pot establir de diferents

maneres: mitjançant la formació d'usuaris o amb ajuda directa en cas que es

presentin problemes (incidències). L'administrador és la persona encarregada

que les tecnologies utilitzades pels usuaris funcionin adequadament, o en al-

tres paraules, que els sistemes compleixin les expectatives dels usuaris, i també

les tasques que vulguin dur a terme.

Fa anys, i encara actualment, en moltes empreses o organitzacions no hi havia

una perspectiva clara del paper de l'administrador de sistemes. En els inicis de

la informàtica en l'empresa (anys vuitanta i noranta), l'administrador era vist

al principi com la persona "entesa" en ordinadors (el "guru"), que s'encarregava

de les instal·lacions de les màquines i que les vigilava o reparava en cas de

problemes. Era una espècie d'informàtic polivalent que havia de solucionar els

problemes que anessin apareixent. El seu perfil de currículum no era clar, ja

que no necessitava tenir amplis coneixements sinó només coneixements bà-

sics d'una desena (a tot estirar) d'aplicacions (el processador de text, el full de

càlcul, la base de dades, etc.), i alguns coneixements bàsics de maquinari eren

suficients per a les tasques diàries. Així, qualsevol simple "entès" en el tema es

GNUFDL • PID_00167521 27 Introducció al sistema operatiu GNU/Linux

podia dedicar a aquest treball, de manera que no solien ser informàtics tradi-

cionals, i moltes vegades fins i tot s'arribava a una transmissió oral dels conei-

xements entre algun "administrador" més antic a l'empresa i el nou aprenent.

En aquella situació, ens trobàvem d'alguna manera en la prehistòria de

l'administració de sistemes (encara que hi ha persones que continuen pensant

que bàsicament es tracta de la mateixa feina).

Avui dia, en l'època d'Internet i dels serveis distribuïts, un administrador de

sistemes és un professional (amb dedicació pròpia i exclusiva) que proporciona

serveis en l'"arena" del programari i el maquinari de sistemes. L'administrador

ha de dur a terme diverses tasques, que tindran com a destinació múltiples

sistemes informàtics, la majoria heterogenis, per tal de fer-los operatius per a

una sèrie de tasques.

Així les coses, els administradors necessiten tenir uns coneixements generals

(teòrics i pràctics) d'àrees molt diferents, des de tecnologies de xarxes, sistemes

operatius, aplicacions d'àmbits diferents, programació bàsica en una àmplia

varietat de llenguatges de programació, coneixements amplis de maquinari

–tant de l'ordinador com dels perifèrics usats– i tecnologies Internet, disseny

de pàgines web, bases de dades, etc. I normalment també és buscat amb el

perfil de coneixements bàsics sobre l'àrea de treball de l'empresa, ja sigui quí-

mica, física, matemàtiques, etc. No és estrany, llavors, que en una empresa de

mida mitjana a gran s'hagi passat del "noi/a que ho arregla tot" a un petit grup

de professionals amb amplis coneixements, la majoria amb nivell acadèmic

universitari, amb diferents tasques assignades dins de l'organització.

L'administrador ha de dominar un rang ampli de tecnologies per a po-

der-se adaptar a una multitud de tasques variades, que poden sorgir dins

de l'organització.

A causa de la gran quantitat de coneixements que ha de tenir, no és estrany

que apareguin al seu torn diferents subperfils de la tasca de l'administrador.

En una gran organització pot ser habitual trobar els administradors de siste-

mes operatius (UNIX, Mac OS o Windows), que solen ser diferents dels orien-

tats a administrador de bases de dades, l'administrador de còpies de seguretat,

els administradors de seguretat informàtica, els administradors encarregats de

l'atenció als usuaris, etc.

En una organització més petita, diverses o totes les tasques poden estar assig-

nades a un o a pocs administradors. Els administradors de sistemes UNIX (o de

GNU/Linux) serien una part d'aquests administradors (si no l'administrador,

que haurà de fer totes les tasques). La seva plataforma de treball és UNIX (o

GNU/Linux en el nostre cas), i requereix bastants elements específics que fan

aquest treball únic. UNIX (i les variants) és un sistema operatiu obert i molt po-

GNUFDL • PID_00167521 28 Introducció al sistema operatiu GNU/Linux

tent i, com qualsevol sistema de programari, exigeix un cert nivell d'adequació,

configuració i manteniment en les tasques per a les quals s'hagi d'usar. Confi-

gurar i mantenir un sistema operatiu és una tasca àmplia i seriosa, i en el cas

de UNIX i els nostres GNU/Linux pot arribar a ser bastant frustrant.

Algunes àrees importants per tractar són:

a) Que el sistema sigui molt potent també indica que hi haurà bastants pos-

sibilitats d'adaptar-lo (configurar-lo) a les tasques que volem fer. Caldrà ava-

luar les possibilitats que se'ns ofereixen i com són d'adequades per al nostre

objectiu final.

b) Un sistema obert i un exemple clar d'això és el nostre GNU/Linux, que ens

oferirà actualitzacions permanents, tant en la correcció d'errors del sistema

com en la incorporació de noves prestacions. I, evidentment, tot això té un

impacte directe en costos de manteniment de les tasques d'administració.

c) Els sistemes es poden utilitzar per a tasques de cost crític, o en punts crítics

de l'organització, en què no es poden permetre errors importants, o que alen-

teixin o parin la marxa de l'organització.

d) Les xarxes són actualment un punt molt important (si no el que més), però

també és una àrea de problemes potencials molt crítica, tant per la seva natu-

ralesa distribuïda pròpia com per la complexitat del sistema per a trobar, de-

purar i solucionar els problemes que es puguin presentar.

e) En el cas particular dels sistemes UNIX, i en els nostres GNU/Linux,

l'abundància, tant de versions com de distribucions diferents del sistema, in-

corpora problemes addicionals a l'administració, ja que és necessari conèixer

les problemàtiques i diferències de cada versió i distribució.

En particular, les tasques d'administració del sistema i de la xarxa solen pre-

sentar particularitats diferents, i de vegades es tracten separadament (o ho fan

administradors diferents). Encara que també es poden veure com les dues ca-

res del mateix treball, amb el sistema pròpiament dit (màquina i programari),

d'una banda, i l'ambient on el sistema (l'entorn de xarxa) conviu, de l'altra.

Per administració de la xarxa s'entén la gestió del sistema com a part de la

xarxa, i fa referència als serveis o dispositius propers necessaris perquè la

màquina funcioni en un entorn de xarxa; no cobreix dispositius com els

commutadors, ponts o concentradors o altres dispositius de xarxa, però

uns coneixements bàsics són imprescindibles per a facilitar les tasques

d'administració.

GNUFDL • PID_00167521 29 Introducció al sistema operatiu GNU/Linux

En aquests materials i els següents, corresponents a l'assignatura més avança-

da d'administració, cobrirem primer aquells aspectes locals del sistema i els

bàsics de xarxa, i en una segona assignatura (Administració avançada) veurem

les tasques d'administració de xarxa i el desplegament de serveis.

Ja hem apuntat el problema de determinar què és exactament un administra-

dor de sistemes, ja que en el mercat laboral informàtic no queda gaire clar. Era

comú demanar administradors de sistemes segons categories (establertes a les

empreses) de programador o enginyers de programari, les quals no s'adeqüen

correctament.

Un programador és, bàsicament, un productor de codi. En aquest cas, un ad-

ministrador obtindria poca producció, ja que en algunes tasques pot ser ne-

cessari, però en d'altres no. Normalment, serà desitjable que l'administrador

tingui més o menys coneixements, depenent de la categoria laboral:

a) Alguna carrera o diplomatura universitària, preferiblement en informàtica,

o en algun camp directament relacionat amb l'empresa o organització.

b) Se sol demanar d'un a tres anys d'experiència com a administrador (tret

que el lloc sigui per a ajudant d'un de ja existent). L'experiència també es pot

ampliar de tres a cinc anys.

c) Familiaritat o coneixements amplis d'entorns de xarxa i serveis. Protocols

TCP/IP, serveis d'FTP, telnet, ssh, http, nfs, nis, ldap, etc.

d) Coneixements de llenguatges de script per a prototipatge d'eines o automa-

tització ràpida de tasques (per exemple, shell scripts, Perl, Tcl, Python, etc.) i

experiència en programació d'un ampli rang de llenguatges (C, C++, Java, as-

semblador, etc.).

e) Es pot demanar experiència en desenvolupament d'aplicacions grans en

qualsevol d'aquests llenguatges.

f) Coneixements amplis de mercat informàtic, tant de maquinari com de pro-

gramari, en el cas que calgui avaluar compres de material o muntar nous sis-

temes o instal·lacions completes.

g) Experiència en més d'una versió de UNIX (o sistemes GNU/Linux), com

Solaris, AIX, AT&T, System V, BSD, etc.

h) Experiència en sistemes operatius que no siguin UNIX, sistemes comple-

mentaris que es poden trobar en l'organització: Windows 9x/NT/2000/XP/Vis-

ta/7, MacOS, VMS, sistemes IBM, etc.

Nota

Per a ser administrador es re-quereixen generalment es-tudis informàtics o afins al'organització, juntament ambexperiència demostrada en elcamp i coneixements amplisde sistemes heterogenis i tec-nologies de xarxa.

GNUFDL • PID_00167521 30 Introducció al sistema operatiu GNU/Linux

i) Coneixements sòlids del disseny i implementació de UNIX, mecanismes

de pàgines, intercanvi, comunicació entre processos, controladors, etc.; per

exemple, si les tasques d'administració inclouen optimització dels sistemes

(tuning) o plataformes arquitecturals de maquinari.

j) Coneixements i experiència en seguretat informàtica: construcció de talla-

focs (firewalls), sistemes d'autenticació, aplicacions de xifratge (criptografia),

seguretat del sistema de fitxers, eines de seguiment de seguretat, etc.

k) Experiència en bases de dades, coneixements de SQL, etc.

l) Instal·lació i reparació de maquinari o cablatges de xarxa i dispositius.

GNUFDL • PID_00167521 31 Introducció al sistema operatiu GNU/Linux

5. Tasques de l'administrador

Segons hem descrit, podríem separar les tasques d'un administrador GNU/Li-

nux (o UNIX en general) [Lev] en dues parts principals: administració del sis-

tema i administració de xarxa. En els subapartats següents, mostrem de ma-

nera resumida en què consisteixen en general aquestes tasques en els sistemes

GNU/Linux (o UNIX). Tractarem la major part del contingut amb cert detall en

aquests mòduls i en els associats d'administració avançada. Una altra part de

les tasques, per qüestions d'espai o complexitat, l'explicarem superficialment

o no l'analitzarem.

Les tasques d'administració engloben una sèrie de coneixements i tècniques,

dels quals aquí només podem veure la "punta de l'iceberg". En la bibliografia

adjunta a cada mòdul aportem referències per ampliar tots els temes per trac-

tar. Com veureu, hi ha una àmplia bibliografia per a gairebé qualsevol punt

en el qual vulgueu aprofundir.

5.1. Tasques d'administració local del sistema

• Arrencada�i�apagada�del�sistema: qualsevol sistema basat en UNIX té uns

sistemes d'arrencada i apagada ajustables, de manera que podem configu-

rar quins serveis oferim en l'arrencada de la màquina i quan cal parar-los,

o programar l'apagada del sistema per al manteniment.

• Gestió�d'usuaris�i�grups: donar cabuda als usuaris és una de les principals

tasques de qualsevol administrador. Caldrà decidir quins usuaris podran

accedir al sistema, de quina manera i sota quins permisos, i establir comu-

nitats mitjançant els grups. Un cas particular serà el dels usuaris de siste-

ma, pseudousuaris dedicats a tasques del sistema.

• Gestió�de�recursos�del�sistema: què oferim, com ho oferim i a qui donem

accés.

• Gestió�dels�sistemes�de�fitxers: l'ordinador pot disposar de diferents recur-

sos d'arxivament de dades i dispositius (disquets, discos durs, òptics, etc.)

amb diferents sistemes d'accés als fitxers. Poden ser permanents, extraïbles

o temporals, amb la qual cosa caldrà modelar i gestionar els processos de

muntatge i desmuntatge dels sistemes de fitxers que ofereixin els discos

o dispositius afins.

• Quotes� del� sistema: qualsevol recurs que s'hagi de compartir ha de ser

administrat, i segons la quantitat d'usuaris, caldrà establir un sistema de

quotes per a evitar l'abús dels recursos per part dels usuaris o establir classes

(o grups) d'usuaris diferenciats per l'ús de recursos més o menys important.

GNUFDL • PID_00167521 32 Introducció al sistema operatiu GNU/Linux

Solen ser habituals sistemes de quotes d'espai de disc, o d'impressió, o d'ús

de CPU (temps de computació usat).

• Seguretat�del�sistema: seguretat local, sobreproteccions als recursos da-

vant usos indeguts, accessos no permesos a dades del sistema, o a dades

d'altres usuaris o grups.

• Còpies�de�seguretat�i�restauració�del�sistema: és necessari establir políti-

ques periòdiques (segons la importància de les dades) de còpies de segure-

tat dels sistemes. Cal establir períodes de còpia que permetin salvaguardar

les nostres dades d'errors del sistema (o factors externs) que puguin pro-

vocar pèrdues o corrupció de dades.

• Automatització�de�tasques�rutinàries: moltes de les tasques freqüents de

l'administració o de l'ús habitual de la màquina poden ser automatitzades

fàcilment, ja a causa de la seva simplicitat (i per tant, de la facilitat de repe-

tir-les), com de la temporalització, que fa que s'hagin de repetir en períodes

concrets. Aquestes automatitzacions se solen fer bé mitjançant programa-

ció amb llenguatges interpretats de tipus script (intèrprets d'ordres, Perl,

etc.), o bé per la inclusió en sistemes de temporalització (cron, at, etc.).

• Gestió�d'impressió�i�cues: els sistemes UNIX es poden utilitzar com a sis-

temes d'impressió per a controlar una o més impressores connectades al

sistema, i també per a gestionar les cues de treball que els usuaris o aplica-

cions hi puguin enviar.

• Gestió�de�mòdems�i�terminals: aquests dispositius solen ser habituals en

entorns no connectats a xarxa local ni a banda ampla:

– Els mòdems permeten una connexió a la Xarxa per mitjà d'un media-

dor (l'ISP o proveïdor d'accés), o bé la possibilitat de connectar el nos-

tre sistema des de l'exterior per accés telefònic des de qualsevol punt

de la xarxa telefònica.

– En el cas dels terminals, abans de la introducció de les xarxes solia ser

habitual que la màquina UNIX fos l'element central de còmput, amb

una sèrie de terminals "passius", que únicament es dedicaven a visua-

litzar la informació o a permetre l'entrada d'informació per mitjà de

teclats externs. Se solia tractar de terminals de tipus sèrie o paral·lel.

Avui dia, encara solen ser habituals en entorns industrials, i en el nos-

tre sistema GNU/Linux d'escriptori tenim un tipus particular, que són

els terminals de text "virtuals", als quals s'accedeix mitjançant les te-

cles Alt+Fxx.

• Registres�(o�log)�de�sistema: per a poder verificar el funcionament correc-

te del nostre sistema, és necessari portar polítiques de registre que ens pu-

guin informar dels possibles errors del sistema o del rendiment que s'obté

d'una aplicació, servei o recurs de maquinari. O bé permetre resumir els

GNUFDL • PID_00167521 33 Introducció al sistema operatiu GNU/Linux

recursos emprats, els usos duts a terme o la productivitat del sistema en

forma d'informe.

• System�performance�tunning: tècniques d'optimització del sistema per a

una finalitat concreta. Sol ser habitual que un sistema estigui pensat per

a una tasca concreta i que en puguem verificar el funcionament adequat

(per exemple, mitjançant registres), per a examinar-ne els paràmetres i ade-

quar-los a les prestacions que se n'esperen.

• Personalització� del� sistema: reconfiguració del nucli. Els nuclis, per

exemple en GNU/Linux, són altament personalitzables, segons les carac-

terístiques que vulguem incloure i el tipus de dispositius que tinguem o

esperem tenir a la nostra màquina, i també els paràmetres que afectin el

rendiment del sistema o les aplicacions.

5.2. Tasques d'administració de xarxa

• Interfície�de�xarxa�i�connectivitat: el tipus d'interfície de xarxa que uti-

litzem, ja sigui l'accés a una xarxa local, la connexió a una xarxa major,

o connexions del tipus banda ampla amb tecnologies ADSL, l'XDSI, o òp-

tiques per cable. A més, el tipus de connectivitats que tindrem en forma

de serveis o peticions.

• Encaminament� de� dades: les dades que circularan, d'on o cap a on es

dirigiran, depenent dels dispositius de xarxa disponibles i de les funcions

de la màquina en xarxa; possiblement, serà necessari redirigir el trànsit des

d'un o més llocs o cap a altres.

• Seguretat�de�xarxa: una xarxa, sobretot si és oberta a qualsevol punt ex-

terior, és una possible font d'atacs i, per tant, pot comprometre la seguretat

dels nostres sistemes o les dades dels nostres usuaris. Cal protegir, detectar

i impedir possibles atacs amb una política de seguretat clara i eficaç.

• Serveis�de�noms: en una xarxa hi ha infinitat de recursos disponibles. Els

serveis de noms ens permeten anomenar objectes (com màquines i serveis)

per a poder-los localitzar i gestionar. Amb serveis com el DNS, DHCP, LDAP,

etc., podrem localitzar serveis o equips.

• NIS� (network� information� service): les grans organitzacions han de te-

nir mecanismes per a poder organitzar, de manera efectiva, els recursos i

l'accés a aquests recursos. Les formes habituals en UNIX estàndard, com les

entrades d'usuaris amb control mitjançant contrasenyes locals, són efec-

tives amb poques màquines i usuaris, però quan tenim grans organitzaci-

ons, amb estructures jeràrquiques, usuaris que poden accedir a múltiples

recursos de manera unificada o separada amb diferents permisos, etc., els

mètodes UNIX senzills es mostren clarament insuficients o impossibles.

GNUFDL • PID_00167521 34 Introducció al sistema operatiu GNU/Linux

Llavors es necessiten sistemes més eficaços per a controlar tota aquesta es-

tructura. Serveis com NIS, NIS+ i LDAP ens permeten organitzar de manera

adequada tota aquesta complexitat.

• NFS�(network�filesystems): sovint, en les estructures de sistemes en xar-

xa és necessari compartir informacions (com els fitxers mateixos) per part

de tots o alguns dels usuaris. O senzillament, a causa de la distribució físi-

ca dels usuaris, és necessari un accés als fitxers des de qualsevol punt de

la xarxa. Els sistemes de fitxers per xarxa (com NFS) permeten un accés

transparent als fitxers, independentment de la nostra situació a la xarxa.

I en alguns casos, com en Samba/CIFS, ens ofereixen suport per a l'accés

de plataformes de maquinari o programari diferents, i independents de les

configuracions de clients o servidors.

• UNIX�remote�commands: UNIX disposa d'instruccions transparents a la

xarxa, en el sentit que, independentment de la connexió física, és possible

executar ordres que moguin informació per la xarxa o permetin accés a

alguns serveis de les màquines. Les instruccions solen tenir una r al davant,

amb el sentit de 'remot', com per exemple: rcp, rlogin, rsh, rexec, etc., que

permeten les funcionalitats indicades de manera remota a la xarxa.

• Aplicacions�de�xarxa: aplicacions de connexió a serveis de xarxa, com

telnet (accés interactiu), FTP (transmissió de fitxers), en forma d'aplicació

client que es connecta a un servei servit des d'una altra màquina. O bé els

que nosaltres mateixos podem servir amb el servidor adequat: servidor de

telnet, servidor FTP, servidor web, etc.

• Impressió�remota: accés a servidors d'impressió remots, ja sigui directa-

ment a impressores remotes o bé a altres màquines que ofereixen les seves

impressores locals. Impressió en xarxa de forma transparent a l'usuari o

aplicació.

• Correu�electrònic: un dels primers serveis proporcionats per les màquines

UNIX és el servidor de correu, que permet l'emmagatzemament de correu,

o un punt de retransmissió de correu cap a altres servidors, si no anava

dirigit a usuaris propis del seu sistema. Per al cas Web, també de manera

semblant, un sistema UNIX amb el servidor web adequat ofereix una pla-

taforma excel·lent per a Web. UNIX té la major quota de mercat quant a

servidors de correu i Web, i és un dels principals mercats, en què té una

posició dominant. Els sistemes GNU/Linux ofereixen solucions de codi

obert per a correu i Web, i es tracta d'un dels seus usos principals.

• X�Window: un cas particular d'interconnexió és el sistema gràfic dels sis-

temes GNU/Linux (i la major part de UNIX), X Window. Aquest sistema

permet una transparència total de xarxa i funciona sota models client-ser-

vidor; permet que el processament d'una aplicació estigui deslligat de la

visualització i de la interacció per mitjà de dispositius d'entrada, per la qual

GNUFDL • PID_00167521 35 Introducció al sistema operatiu GNU/Linux

cosa aquests se situen en qualsevol part de la xarxa. Per exemple, podem

estar executant una determinada aplicació en una màquina UNIX quan

des d'una altra visualitzem en pantalla els resultats gràfics, i entrem dades

amb el teclat i ratolí locals de manera remota. És més, el client, anomenat

client X, és tan sols un component de programari que es pot portar a altres

sistemes operatius, cosa que permet executar aplicacions en una màquina

UNIX i visualitzar-les en qualsevol altre sistema. Un cas particular són els

anomenats terminals X, que són bàsicament una espècie de terminals grà-

fics "passius" que només permeten visualitzar una aplicació en execució

remota o interactuar-hi (amb teclat i ratolí).

GNUFDL • PID_00167521 36 Introducció al sistema operatiu GNU/Linux

6. Distribucions de GNU/Linux

En parlar dels orígens dels sistemes GNU/Linux, hem comprovat que no hi

havia un únic sistema clarament definit. Per una part, hi ha tres elements de

programari principals que componen un sistema GNU/Linux:

1)�El�nucli�Linux: com hem vist, el nucli és tan sols la peça central del sistema.

Però sense les aplicacions d'utilitat, l'intèrpret d'ordres, compiladors, editors,

etc. no podríem tenir un sistema complet.

2)�Les�aplicacions�GNU: en el desenvolupament de Linux, aquest es va veure

complementat amb el programari de l'FSF existent del projecte GNU, que li va

aportar editors (com l'Emacs), el compilador (GCC) i diferents utilitats.

3)�Programari�de�tercers: majoritàriament de codi obert. Tot sistema GNU/

Linux s'integra a més amb programari de tercers, que permet afegir una sèrie

d'aplicacions d'ús ampli, ja sigui el sistema gràfic X Window mateix, servidors

com l'Apache per a web, navegadors, ofimàtica, etc. Així mateix, pot ser habi-

tual incloure algun programari de propietat (per a àmbits no coberts pel pro-

gramari lliure), depenent del caràcter lliure que en més o menys grau vulguin

establir els creadors de la distribució.

En ser la majoria del programari de tipus de codi obert o lliure, ja sigui el

nucli, programari GNU o de tercers, hi ha una evolució més o menys ràpi-

da de versions, ja sigui per mitjà de correcció d'errors o de noves prestacions

introduïdes. Això obliga que, en el cas de voler crear un sistema GNU/Linux,

hàgim d'escollir quin programari volem instal·lar en el sistema i quines versi-

ons concretes d'aquest programari.

El món GNU/Linux no es limita a una empresa o comunitat particular,

amb la qual cosa ofereix a cadascú la possibilitat de crear el seu sistema

propi, adaptat a les seves necessitats.

Entre el conjunt de les versions dels diferents components, sempre se'n tro-

ben algunes que són estables i d'altres que estan en desenvolupament, en fa-

ses alfa o beta (possiblement, amb errors o funcionalitats no completes o op-

timitzades), i per això caldrà anar amb compte amb l'elecció de les versions a

l'hora de crear un sistema GNU/Linux. Un altre problema afegit és la selecció

d'alternatives; el món de GNU/Linux és prou ric perquè hi hagi més d'una al-

GNUFDL • PID_00167521 37 Introducció al sistema operatiu GNU/Linux

ternativa per a un mateix producte de programari. Cal triar entre les alternati-

ves possibles, i incorporar-ne algunes o totes, si volem oferir a l'usuari llibertat

per a escollir el seu programari.

Un cas pràctic són els gestors d'escriptori d'X Window: hi ha (principalment)

dos entorns d'escriptori diferents, com Gnome i KDE. Els dos tenen caracterís-

tiques semblants i aplicacions semblants o complementàries.

En el cas d'un distribuïdor de sistemes GNU/Linux, ja sigui comercial o bé una

organització o comunitat sense benefici propi, aquest distribuïdor té com a

responsabilitat generar un sistema que funcioni, seleccionant les millors ver-

sions i productes de programari que es puguin aconseguir en el moment.

En aquest cas, una distribució GNU/Linux [Dis] és una col·lecció de programari

que forma un sistema operatiu basat en el nucli Linux.

Una dada important que cal tenir en compte, i que provoca més d'una confu-

sió, és que, com cada un dels paquets de programari de la distribució tindrà

la seva pròpia versió (independent de la distribució en què estigui ubicat), el

número de distribució assignat no manté una relació amb les versions dels

paquets de programari.

L'única funció del número de distribució és comparar les distribucions

que genera un mateix distribuïdor. No permet comparar entre altres

distribucions. Si volem fer comparacions entre distribucions, haurem

d'examinar els paquets de programari principals i les seves versions per

a poder determinar quina distribució aporta més novetats.

Exemple

Posem un exemple d'algunes versions que hem trobat en diferents distribucions GNU/Linux (les versions dependran de la situació actual de les distribucions):

a)�Nucli�Linux: actualment, podem trobar distribucions que ofereixen un o més nuclis,com els de la sèrie antiga 2.4.x (ja obsoleta, però que es pot trobar en algunes màquinesen producció) o generalment els últims 2.6.x en revisions (el número x) de diferent ac-tualitat.

b)� L'opció� en� el� sistema� gràfic� X� Window: en versió de codi obert, que podem tro-bar pràcticament en tots els sistemes GNU/Linux, ja siguin algunes versions residualsd'XFree86 com les que disposen de versions 4.x.y, o bé el projecte Xorg (es tracta d'unaescissió de l'anterior l'any 2003, generada per problemes de llicències en l'XFree), quegaudeix de més popularitat en diferents versions 6.x o 7.x (en algunes distribucions esnumera el paquet del servidor X com a 1.7.x). Actualment, la majoria de distribucionshan migrat des d'XFree a Xorg, per diferents problemes existents amb canvis de llicènciesen XFree, i Xorg és ara la implementació oficial d'X Window en GNU/Linux. El mateixpassa en diverses variants de BSD, UNIX de propietat com Solaris, i també en les últimesversions de Mac OS X.

c)�Gestor�de�finestres�o�escriptori: podem disposar de Gnome o KDE, o tots dos; Gnomeamb versions 2.x/3.x o KDE 3.x.y./4.x.y.

Tenim en un moment determinat, per exemple, una distribució que inclou el nucli 2.4,amb XFree 4.4 i Gnome 2.14; o bé una altra, per exemple, amb nucli 2.6, Xorg 6.8 iKDE 3.1. Quina és millor? És difícil comparar-les, ja que són una barreja d'elements, i

GNUFDL • PID_00167521 38 Introducció al sistema operatiu GNU/Linux

depenent de com es faci la barreja, el producte sortirà millor o pitjor, i més o menysadaptat a les necessitats de l'usuari. Usualment, el distribuïdor manté un compromísentre l'estabilitat del sistema i la novetat de les versions incloses. També proporcionaprogramari d'aplicació atraient per als usuaris de la distribució, ja sigui aquell generalistao l'especialitzat en algun camp concret.

En general, podem fer una anàlisi de distribucions millor a partir dels apartats

següents, que caldria, comprovar en cada una:

a)�Versió�del�nucli�Linux: la versió està indicada per uns números X.Y.Z, en

què X és la versió principal, que representa els canvis importants del nucli; Y és

la versió secundària, i implica millores en les prestacions del nucli (Y és parell

en els nuclis estables i senar en els nuclis en desenvolupament o de prova); i

Z és la versió de construcció, que indica el número de la revisió d'X.Y, quant

a pegats o correccions fetes. Els distribuïdors no solen incloure l'última versió

del nucli, sinó la que ells hagin provat amb més freqüència i poden verificar

que és estable per al programari i els components que ells inclouen. Aquest va

ser l'esquema de numeració clàssic (que es va seguir durant les branques 2.4.x,

fins als inicis de la 2.6), que va tenir algunes modificacions, per a adaptar-se

al fet que el nucli (branca 2.6.x) es va tornar més estable, i cada vegada les

revisions eren menors (per significar un salt de versió dels primers números),

a causa del desenvolupament continu i frenètic. En els últims esquemes de

numeració del nucli, s'arriben a introduir quarts números, per a especificar

canvis menors de Z, o diferents possibilitats de la revisió (amb diferents pegats

afegits). La versió definida així amb quatre números és la que es considera

estable (stable). També són usats altres esquemes per a les versions de test (no

recomanables per a entorns de producció), com sufixos -rc (release candidate),

els -mm, que són nuclis experimentals amb proves de diferents tècniques, o

els -git, que són una espècie de "foto" diària del desenvolupament del nucli.

Aquests esquemes de numeració estan en canvi constant per a adaptar-se a la

manera de treballar de la comunitat del nucli, i a les seves necessitats per a

accelerar-ne el desenvolupament.

b)�Format�d'empaquetament: és el mecanisme emprat per a instal·lar i ad-

ministrar el programari de la distribució. Es coneix pel format dels paquets

de programari suportats. En aquest cas solen estar els formats rpm, deb, tar.gz,

mdk, etc. Encara que cada distribució sol tenir possibilitat d'utilitzar diversos

formats, en té un per defecte. El programari acostuma a venir amb els seus

arxius en un paquet que inclou informació sobre la instal·lació i les possibles

dependències amb altres paquets de programari. L'empaquetament és impor-

tant si s'usa programari de tercers que no vingui amb la distribució, ja que

el programari es pot trobar només en alguns sistemes de paquets, o fins i tot

en un de sol, i en alguns casos està pensat per a versions concretes d'algunes

distribucions de GNU/Linux.

c)�Estructura�del�sistema�d'arxius:�l'estructura�del�sistema�d'arxius�princi-

pal (/) ens indica on podem trobar els nostres arxius (o els propis del sistema)

dins del sistema de fitxers. En GNU/Linux i UNIX hi ha alguns estàndards de

col·locació dels arxius (com veurem en altres mòduls), com per exemple l'FHS

GNUFDL • PID_00167521 39 Introducció al sistema operatiu GNU/Linux

(filesystem hierarchy standard) [Linb]. Així, si tenim una idea de l'estàndard, sa-

brem on podem trobar la major part dels arxius. Després depèn que la distri-

bució el segueixi més o menys i que ens avisin dels canvis que hi hagin fet.

d)�Scripts�d'arrencada�del�sistema: els sistemes UNIX i GNU/Linux incorpo-

ren uns guions d'arrencada (o shell scripts) que indiquen com s'ha d'engegar la

màquina i quin serà el procés (o fases) que se seguiran, i també el que s'haurà de

fer a cada pas. Per a aquesta arrencada hi ha dos models principals, els de SysV

i el de BSD (és una de les diferències de les dues branques de UNIX principals),

i cada distribució en podria escollir un o un altre. Encara que els dos sistemes

tenen la mateixa funcionalitat, són diferents en els detalls, i això serà impor-

tant en els temes d'administració (ho veurem quan tractem de l'administració

local). En el nostre cas, els sistemes que analitzarem, tant Fedora com Debian,

utilitzen el sistema de SysV (serà el que veurem en la unitat local), però hi ha

altres distribucions com Slackware que utilitzen l'altre sistema, propi de BSD.

I actualment hi ha determinades propostes per a noves opcions en aquest as-

pecte de l'arrencada, que han obtingut pes important en les distribucions ac-

tuals, com el sistema upstart utilitzat, entre altres, en la distribució Ubuntu.

e)�Versions�de�la�biblioteca�del�sistema: tots els programes (o aplicacions)

que tenim en el sistema depenen per a executar-los d'un nombre (més gran

o més petit) de biblioteques de sistema. Aquestes biblioteques, normalment

de dos tipus, ja sigui estàtiques, unides al programa (arxius libxxx.a), o dinà-

miques, que es carreguen en temps d'execució (arxius libxxx.so), proporcio-

nen gran quantitat de codi d'utilitat o de sistema que utilitzaran les aplicaci-

ons. L'execució d'una aplicació pot dependre de l'existència d'unes bibliote-

ques adequades i del número de versió concret d'aquestes biblioteques (no és

el més recomanable, però pot succeir). Un cas bastant habitual és la biblioteca

GNU C library, la biblioteca estàndard de C, també coneguda com a glibc. Pot

succeir que una aplicació ens demani que disposem d'una versió concreta de

la glibc per a poder-se executar o compilar. És un cas bastant problemàtic, i per

això un dels paràmetres que es valoren de la distribució és conèixer de quina

versió de la glibc disposa, i els possibles paquets addicionals de versions de

compatibilitat amb versions antigues. El problema apareix en intentar execu-

tar o compilar un producte de programari molt antic en una distribució mo-

derna, o bé un producte de programari molt nou en una distribució antiga.

El canvi més gran va arribar en passar a la glibc 2.0, cas en què calia recompilar

tots els programes per a poder executar-los correctament. En les diferents re-

visions noves de numeració 2.x hi ha hagut alguns canvis menors que podien

afectar alguna aplicació. En molts casos, els paquets de programari comproven

si es té la versió correcta de la glibc, o en el nom mateix esmenten la versió que

cal utilitzar (exemple: paquet-xxx-glibc2.rpm).

f)�Escriptori�X�Window: el sistema X Window és l'estàndard gràfic per a GNU/

Linux per a la visualització d'escriptori. Va ser desenvolupat en el MIT el 1984 i

pràcticament tots els UNIX en tenen una versió. Les distribucions GNU/Linux

GNUFDL • PID_00167521 40 Introducció al sistema operatiu GNU/Linux

disposen de diferents versions com l'XFree86 o l'Xorg (com ja hem dit, aquesta

última és l'estàndard de facto en aquests moments). X Window és una capa

gràfica intermèdia que confia a una altra capa denominada gestor de finestres la

visualització dels seus elements. A més, podem combinar el gestor de finestres

amb utilitats i programes d'aplicació variats per a formar el que es denomina

un entorn d'escriptori.

Linux té, principalment, dos entorns d'escriptori: Gnome i KDE. Cada un té la

particularitat de basar-se en una biblioteca de components propis (els diferents

elements de l'entorn com finestres, botons, llistes, etc.): GTK+ (en Gnome) i

Qt (en KDE), que són les principals biblioteques de components que s'usen per

a programar aplicacions en aquests entorns. Però a més d'aquests entorns, n'hi

ha molts més, ja siguin gestors de finestres o escriptoris: XCFE, FluxBox, Motif,

Enlightenment, BlackIce, FVWM, etc., de manera que la possibilitat d'elecció

és àmplia. A més, cada un permet canviar l'aparença (look & feel) de finestres i

components al gust de l'usuari, o fins i tot crear-ne un de propi.

g)�Programari�d'usuari: programari afegit pel distribuïdor, majoritàriament

de tipus open source, per a les tasques més habituals (o al contrari, per a alguns

camps d'aplicació molt especialitzats).

Les distribucions habituals són tan grans que es poden trobar de centenars a

milers d'aquestes aplicacions (moltes de les distribucions tenen des d'uns pocs

CD a diverses desenes (o unes quantes unitats de DVD), d'aplicacions extra a

part de les de partida. O es poden obtenir a posteriori per Xarxa dels repositoris

oficials (o extres) de programari de les distribucions. Aquestes aplicacions co-

breixen gairebé tots els camps, des de la llar fins a administratius o científics.

I en algunes distribucions s'afegeix programari de propietat de tercers (com,

per exemple, algun paquet ofimàtic del tipus Office), programari de servidor

preparat pel distribuïdor, com per exemple un servidor de correu, un servidor

web segur, etc.

Així és com cada distribuïdor sol produir diferents�versions de la seva distri-

bució; per exemple, de vegades hi ha distincions entre una versió personal,

professional o de tipus servidor. Sol ser més habitual una distinció entre dues

versions: desktop (escriptori) i server (servidor). En moltes distribucions, però,

se sol incloure el programari per a complementar tots dos aspectes, i és l'usuari

final que fa la instal·lació, amb la tria de paquets de programari i la configu-

ració, el que decideix l'àmbit final de la màquina i el seu sistema GNU/Linux.

GNUFDL • PID_00167521 41 Introducció al sistema operatiu GNU/Linux

El sistema GNU/Linux de fons és el mateix; només hi ha diferències (que

es paguen en alguns casos) en el programari afegit (en general, obra de

la casa distribuïdora mateixa). Per exemple, en servidors web o en ser-

vidors de correu, ja siguin desenvolupaments propis, optimitzats o mi-

llorats. Altres diferències poden ser la inclusió d'eines millors, desenvo-

lupades pel fabricant de la distribució, o el suport addicional, en forma

de contractes de manteniment que inclogui el distribuïdor comercial.

Sovint, assumir un cost econòmic extra no té gaire sentit, ja que el progra-

mari estàndard és suficient (amb una mica de treball extra d'administració de

sistemes); però per a les empreses pot ser interessant perquè redueix temps

d'instal·lació i manteniment dels servidors i, a més, optimitza algunes aplica-

cions i servidors crítics per a la gestió informàtica de l'empresa.

6.1. Debian

El cas de la distribució Debian GNU/Linux [Debb] és especial, en el sentit que

és una distribució guiada per una comunitat sense finalitats comercials, a part

de mantenir la seva distribució i promocionar l'ús del programari de codi obert

i lliure.

Debian és una distribució a la qual dóna suport per una comunitat en-

tusiasta d'usuaris i desenvolupadors propis, basada en el compromís de

la utilització de programari lliure.

El projecte Debian es va fundar el 1993 per a crear la distribució Debian GNU/

Linux. Des de llavors, s'ha tornat bastant popular i rivalitza en ús amb altres

distribucions comercials com Red Hat o SUSE. Per ser un projecte comunitari,

el desenvolupament d'aquesta distribució es regeix per una sèrie de normes

o polítiques: hi ha uns documents anomenats Contracte social Debian, que es-

menten la filosofia del projecte en el seu conjunt, i les polítiques Debian, que

especifiquen en detall com s'implementa la seva distribució.

Nota

Els documents Contracte so-cial Debian són consultablesa http://www.debian.org/social_contract.

La distribució Debian està bastant relacionada amb els objectius de l'FSF i el

seu projecte de programari lliure GNU; per aquesta raó, inclouen sempre en

el seu nom Debian GNU/Linux; a més, el seu text del contracte social ha servit

com a base de les definicions de codi obert. Quant a les polítiques, tot aquell

que vulgui participar en el projecte de la distribució les ha de seguir. Encara

que un no sigui un col·laborador, aquestes polítiques poden ser interessants

perquè expliquen com és la distribució Debian.

Es pot esmentar també un aspecte pràctic amb vista als usuaris finals: Debian

ha estat sempre una distribució difícil (encara que aquesta percepció ha canviat

en les últimes versions). Sol ser la distribució que usen els experts (hackers)

Figura�2.�Logotip�de�Debian

GNUFDL • PID_00167521 42 Introducció al sistema operatiu GNU/Linux

de Linux, en el bon sentit dels que s'encarreguen del desenvolupament i test

del nucli, aporten modificacions, programadors de baix nivell, els que volen

estar a l'última moda per a provar programari nou, els que volen provar els

desenvolupaments del nucli que encara no s'ha publicat... És a dir, tot tipus

de fauna d'experts de GNU/Linux.

Les versions anteriors de Debian s'havien fet famoses per la seva dificultat

d'instal·lació. La veritat és que no es feia gaire perquè fos fàcil per als no-ex-

perts. Però les coses amb el temps han millorat. Ara, la instal·lació, no sense

certs coneixements, es pot fer guiada per un instal·lador gràfic (conegut com

a Debian Installer), mentre que abans era una instal·lació purament textual (de

fet, encara es manté, i és molt usada per a la instal·lació en ambients de servi-

dor). Però tot i així, els primers intents poden arribar a ser una mica traumàtics

pel grau de coneixement inicial exigit per a alguns aspectes de la instal·lació.

Debian GNU/Linux no és una única distribució, sinó que se sol diferenciar en

una sèrie de variants, els anomenats sabors de la distribució Debian. En aquest

moment hi ha tres branques (sabors) de la distribució: stable, testing i unsta-

ble. Com els seus noms indiquen, stable és la que està destinada a entorns de

producció (o usuaris que volen estabilitat), testing ofereix programari més nou

que ha estat comprovat mínimament (podríem dir que és una espècie de ver-

sió beta de Debian) i que aviat s'inclourà en la versió stable. I unstable és la que

presenta les últimes novetats de programari, els paquets de les quals canvien

en terminis molt curts; en una setmana, i fins i tot en el dia a dia poden can-

viar diversos paquets. Totes són actualitzables des de diverses fonts (CD, FTP,

web) per un sistema denominat APT que maneja els paquets de programari

deb de Debian. Les tres distribucions tenen noms més comuns assignats (per

exemple, en un determinat moment de producció de Debian):

• Lenny (stable)

• Squeeze (testing)

• Sid (unstable)

La versió prèvia stable es denominava Etch (4.0), anteriorment Sarge (era la

3.1). La més actual és la Debian GNU/Linux Lenny (5.0). Les versions més es-

teses (a més de versions antigues que segueixin en producció) són la Lenny i

la Sid, que són els dos extrems. La Sid no està recomanada per a entorns (de

producció) de treball diari, perquè pot portar característiques a mitges que en-

cara s'estan provant i poden fallar (encara que no és habitual); és la distribució

que solen usar els experts de GNU/Linux. A més, aquesta versió canvia gairebé

cada dia. Sol ser normal que, si es vol actualitzar cada dia, hi hagi de deu a

vint paquets de programari nous per dia (o fins i tot més en alguns moments

puntuals de desenvolupament o canvis importants).

GNUFDL • PID_00167521 43 Introducció al sistema operatiu GNU/Linux

La Lenny és potser la millor elecció per al sistema de treball diari; s'actualitza

periòdicament per a cobrir nou programari o actualitzacions (com les de se-

guretat). No disposa de l'últim programari, i aquest no s'inclou fins que la co-

munitat no l'hagi verificat en un ampli rang de proves.

Comentarem breument algunes característiques d'aquesta distribució; les ver-

sions són les que es troben per defecte en stable (Lenny) i en unstable (Sid)

actualment:

a)�La�distribució�(stable)�actual consta de 28-33 CD (o 4-5 DVD) de l'última

revisió disponible, depenent de l'arquitectura (suporta més de 12 arquitectures

de maquinari diferents). Hi ha diferents possibilitats, depenent del conjunt de

programari que ens trobem en suport físic (CD o DVD), o bé el que vulguem

descarregar posteriorment des de la Xarxa, amb la qual cosa només necessitem

un CD bàsic (netinstall CD), més l'accés a la Xarxa, per a baixar la resta segons la

demanda. Aquesta distribució es pot comprar (a preus simbòlics de suport físic,

i d'aquesta manera contribuïm a mantenir la distribució) o es pot descarregar

des de debian.org o les seves rèpliques.

b)� La� testing� i�unstable no solen tenir CD/DVD oficials estables, sinó que

es pot convertir una Debian stable a testing o unstable mitjançant canvis de

configuració del sistema de paquets APT. En alguns casos, Debian proporciona

imatges de CD/DVD que es generen setmanalment amb el contingut de la

distribució testing.

c)�Nucli�Linux: utilitzaven nuclis de la sèrie 2.6.x per defecte (algunes versions

prèvies de Debian incloïen per defecte nuclis de la sèrie 2.4.x). L'enfocament

de Debian en stable és potenciar l'estabilitat i deixar als usuaris l'opció d'un

altre producte més actualitzat de programari, si ho necessiten (en unstable o

testing). Per exemple, en el moment de "congelar" la versió estable, s'escull la

versió del nucli més estable existent, i en les revisions posteriors se solen cor-

regir si es detecten problemes. Per la seva part, testing i unstable solen incloure

amb poca diferència de temps les últimes versions del nucli a mesura que es

produeixen, amb el temps. Per exemple, en la branca 2.6.x solen transcórrer

diverses subversions del nucli (la numeració x) entre la distribució stable i les

no estables.

d)�Format�d'empaquetament: Debian suporta un dels que més prestacions

ofereix, l'APT. Els paquets de programari tenen un format denominat deb.

L'APT és una eina de més alt nivell per a gestionar-los i mantenir una base de

dades dels instal·lables i els disponibles en el moment. A més, el sistema APT

pot obtenir programari de diverses fonts, ja sigui des de CD, FTP o Web.

GNUFDL • PID_00167521 44 Introducció al sistema operatiu GNU/Linux

e)�El�sistema�amb�APT�és�actualitzable�en�qualsevol�moment, mitjançant

llistes de repositoris de fonts de programari Debian (fonts APT), que poden ser

els llocs Debian per defecte (debian.org) o de tercers. No estem així lligats a

una empresa única ni a cap sistema de pagament per subscripció.

f)�Algunes�de�les�versions�utilitzades, en un exemple de temps concret són:

per a una stable, nucli 2.6.26, Xorg 1.4.1, glibc 2.7, etc.; Debian Sid té nucli

2.6.32, Xorg 1.7.7, glibc 2.10.2, etc.

g)� A� l'escriptori accepta tant el Gnome (per defecte) com el KDE (K Desk-

top Environment). Unstable sol disposar de les últimes versions disponibles

d'aquests entorns.

h)�Quant�a�aplicacions�destacables, inclou la majoria de les que solem trobar

en les distribucions de GNU/Linux: editors com l'Emacs (i l'XEmacs), el com-

pilador GCC i les eines, el servidor web Apache, navegadors web (Firefox), el

programari Samba per a compartir arxius amb Windows, etc.

i)�Inclou�també�paquets�ofimàtics com l'OpenOffice i el KOffice.

j)�Inclou�molts�fitxers�de�configuració�personalitzats per a la seva distribu-

ció en directoris de /etc.

k) Debian usava per defecte el gestor� d'arrencada lilo en versions prèvies,

encara que en les últimes s'ha canviat a Grub.

l)�La�configuració�de�l'escolta�dels�serveis�de�xarxa�TCP/IP, que es fa com en

la majoria de UNIX, amb el servidor inetd (/etc/inetd.conf). Encara que disposa

també opcionalment de xinetd, una opció que pren més pes.

m) Hi ha moltes distribucions�GNU/Linux basades en Debian, ja que el sis-

tema es pot adaptar fàcilment per a fer distribucions més petites o més grans,

o amb més o menys programari adaptat a un segment. Una de molt famosa

és Knoppix (per ser una de les pioneres en el concepte de live CD), una distri-

bució d'un únic CD (o DVD), de tipus live CD (d'execució directa al CD), que

és molt usada per a versions de demostració de GNU/Linux, o per a provar-la

en una màquina sense fer una instal·lació prèvia, ja que arrenca i s'executa

des del CD, encara que també es pot instal·lar el disc dur i convertir-se en

una Debian estàndard. Linex és una altra distribució que ha aconseguit força

fama pel seu desenvolupament al qual ha donat suport una administració, la

de la comunitat autònoma d'Extremadura. D'altra banda, trobem Ubuntu Li-

nux (de l'empresa Canonical), una de les distribucions que ha obtingut una

repercussió més àmplia (i ha superat fins i tot Debian en diversos aspectes),

per les seves facilitats per a construir una alternativa d'escriptori. Ubuntu és

un referent Linux en l'àmbit d'escriptori, i també disposa d'una versió especial

GNUFDL • PID_00167521 45 Introducció al sistema operatiu GNU/Linux

orientada a servidor, Ubuntu Server. D'altra banda, és interessant destacar que

ha anat en augment la col·laboració entre Canonical i la comunitat Debian,

per a reflectir els avenços de cada una en les distribucions respectives.

Debian es pot usar com a base per a altres distribucions; per exemple,

Knoppix és una distribució basada en Debian que es pot executar des

del CD sense necessitat d'instal·lar-se en disc. Linex és una distribució

Debian adaptada per l'Administració de la comunitat d'Extremadura,

en el seu projecte d'adoptar programari de codi obert. I Ubuntu és una

distribució especialment optimitzada per a entorns d'escriptori.

Figura 3. Entorn Debian amb Gnome

6.2. Fedora

Red Hat Inc [Redh] és una de les principals firmes comercials del món GNU/

Linux, amb una de les distribucions amb més èxit. Bob�Young i Marc�Ewing

van crear Red Hat Inc el 1994. Estaven interessats en els models de programari

de codi obert i van pensar que seria una bona manera de fer negoci. El seu

principal producte és la seva distribució Red Hat Linux (que abreujarem com a

Red Hat), que està oberta a diferents segments de mercat, tant a l'usuari indivi-

dual (versions personal i professional), com preferentment envers les mitjanes

o grans empreses (amb la seva versió Enterprise).

GNUFDL • PID_00167521 46 Introducció al sistema operatiu GNU/Linux

Red Hat Linux és la principal distribució comercial de Linux, orientada

tant al mercat d'oficina d'escriptori com a servidors de gamma alta. A

més, Red Hat Inc és una de les empreses que més col·laboren amb el

desenvolupament de Linux, ja que diversos membres importants de la

comunitat hi treballen.

Encara que Red Hat treballa amb un model de codi obert, es tracta d'una em-

presa, i per tant les seves finalitats són comercials; per això sol afegir a la se-

va distribució bàsica valors per mitjà de contractes de suport, subscripcions

d'actualització i altres mètodes. En el cas empresarial, afegeix programari per-

sonalitzat (o propi), per a fer que s'adeqüi més el rendiment a les finalitats de

l'empresa, ja sigui per servidors optimitzats o per programari d'utilitat propi

de Red Hat.

A partir de cert moment (final del 2003), Red Hat Linux (versió 9.x), la seva

versió de GNU/Linux per a escriptori, es dóna per discontinuada, i s'aconsella

els seus clients migrar a les versions empresarials de la firma, que continuaran

essent les úniques versions suportades oficialment per la firma.

Figura�4.�Logotips�de�Red�Hat�Fedora

En aquest moment Red Hat decideix iniciar el projecte obert a la comunitat

denominat Fedora [Fed], amb l'objectiu de fer una distribució guiada per la

comunitat (a l'estil Debian, encara que amb finalitats diferents), que denomi-

narà Fedora Core (més tard, simplement, Fedora). De fet, es persegueix crear

un laboratori de desenvolupament obert a la comunitat que permeti provar la

distribució, i al seu torn guiar els desenvolupaments comercials de l'empresa

en les seves distribucions empresarials.

En certa manera, alguns crítics assenyalen que s'usa la comunitat com a prova-

dors de les tecnologies que s'inclouran en productes comercials. A més, aquest

model és utilitzat posteriorment per altres companyies per a crear models du-

als de distribucions de comunitat alhora que comercials. Llavors apareixen

exemples com OpenSUSE (a partir de la comercial Novell SUSE).

El parell Red Hat i la comunitat Fedora presenten una certa visió conservadora

(menys accentuada en Fedora) dels elements de programari que afegeix a la

seva distribució, ja que el seu principal mercat de destinació és l'empresarial, i

intenta fer la seva distribució el més estable possible, malgrat que no tenen les

últimes versions. El que sí que fa com a valor afegit és depurar extensament el

nucli de Linux amb la seva distribució, i genera correccions i pegats (patchs)

per a millorar-ne l'estabilitat. De vegades, poden arribar a deshabilitar alguna

funcionalitat (controladors) del nucli, si consideren que no són prou estables.

També ofereix moltes utilitats en l'entorn gràfic i programes gràfics propis, in-

cloent-hi unes quantes eines d'administració. Quant als entorns gràfics, utilit-

Nota

Vegeu http://fedoraproject.org/

GNUFDL • PID_00167521 47 Introducció al sistema operatiu GNU/Linux

za tant Gnome (per defecte) com KDE, però mitjançant un entorn modificat

propi mitjançant temes d'escriptori propis, que fa que els dos escriptoris siguin

pràcticament iguals (finestres, menús, etc.).

La versió que utilitzarem serà l'última Fedora Linux disponible, que denomi-

narem simplement Fedora. En general, els desenvolupaments i prestacions que

es mantenen solen ser bastant semblants en les versions que surten a posteriori,

amb la qual cosa la majoria de comentaris serien aplicables a les diferents ver-

sions al llarg del temps. Hem de tenir en compte que la comunitat Fedora [Fed]

intenta complir un calendari d'aproximadament sis mesos per a cada nova

versió, i es produeix un cert consens sobre les prestacions noves per introduir.

Red Hat, per contra, va deixar en gran part el mercat de versions d'escriptori

a les mans de la comunitat Fedora, i se centra en els seus negocis en les ver-

sions empresarials RHEL (Red Hat Enterprise Linux en diverses edicions). Es

pot destacar també l'existència de versions lliures compatibles amb Red Hat

Enterprise, com la distribució CentOS Linux, i en una altra mesura amb ori-

entació a l'àmbit científic, com Scientific Linux.

Comentarem breument algunes característiques d'aquesta distribució Fedora:

a)�La�distribució�actual consisteix o bé en un DVD amb el sistema complet,

o un CD amb una versió live CD instal·lable. També hi ha diferents edicions

(denominades spins) orientades a sectors determinats (jocs, educació, cientí-

fics) o bé a escriptoris concrets (Gnome, KDE, XFCE).

b)�Nucli�Linux: utilitza nuclis de la sèrie 2.6.x, que es poden anar actualitzant

amb el sistema de paquets RPM (per mitjà de la utilitat yum, per exemple).

Red Hat, per la seva part, sotmet el nucli a moltes proves i crea pegats per a

solucionar problemes, que normalment també són integrats a la versió de la

comunitat Linux, ja que bastants dels col·laboradors importants en la comu-

nitat del nucli de Linux treballen per a Red Hat.

c)� Format� d'empaquetament: Red Hat distribueix el seu programari mit-

jançant el sistema de paquets RPM (RPM package manager), els quals es gestio-

nen mitjançant la instrucció rpm o la utilitat yum. RPM és un dels millors sis-

temes d'empaquetament existents (a l'estil del deb de Debian), i alguns UNIX

de propietat l'estan incloent. El sistema RPM manté una petita base de dades

amb els paquets instal·lats, i verifica que el paquet que vulguem instal·lar amb

la instrucció rpm no estigui ja instal·lat o entri en conflicte amb algun altre

paquet de programari o, per contra, falti algun paquet de programari o una

versió d'aquest, necessària per a la instal·lació. El paquet RPM és un conjunt

de fitxers comprimits juntament amb informació de les seves dependències o

del programari que necessita. El sistema de gestió de paquets RPM s'ha imple-

mentat de les versions de Red Hat a Fedora, però també en altres distribucions

com SUSE i Mandriva.

Nota

Distribucions compatibles ambRHEL:http://www.scientificlinux.org/http://centos.org/

GNUFDL • PID_00167521 48 Introducció al sistema operatiu GNU/Linux

d)� Quant� a� l'arrencada,� utilitza�scripts de tipus SysV (sysvinit). En les últi-

mes versions s'ha reemplaçat per upstart (provinent d'Ubuntu), encara que es

manté la seva compatibilitat amb els scripts sysvinit.

e)�En�l'escriptori accepta tant el Gnome (escriptori per defecte) com el KDE,

de manera opcional.

f)�Quant�a�aplicacions�destacables, inclou les que solem trobar en la majoria

de distribucions de GNU/Linux: editors com l'Emacs (i l'XEmacs), el compila-

dor GCC i les eines, el servidor web Apache, navegadors web Firefox/Mozilla,

el programari Samba per a compartir arxius amb Windows, etc.

g)�Inclou�també�paquets�ofimàtics com l'OpenOffice i el KOffice.

h)�El�programari�addicional es pot obtenir pels serveis d'actualització yum

(entre d'altres) de manera semblant al sistema APT en Debian o amb diferents

eines d'actualització incloses, o bé per Internet mitjançant paquets RPM pen-

sats per a la distribució.

i) Fedora usa el carregador�d'arrencada�Grub per a engegar la màquina per

defecte.

j)�La�configuració�d'escolta�dels�serveis�de�xarxa�TCP/IP, que es duu a terme

en la majoria de UNIX amb el servidor inetd (/etc/inetd.conf), a Red Hat ha

estat substituïda per xinetd, que té una configuració més modular (directori

/etc/xinetd.d).

k) Va disposar en arrencada d'un programa denominat Kudzu que

s'encarregava de verificar�canvis�de�maquinari�i�detectar�el�maquinari�nou

instal·lat. En les versions actuals això queda obsolet, a causa de l'existència

d'una nova API denominada HAL que permet fer aquesta funció (que ha estat

integrada progressivament en les distribucions GNU/Linux).

l) Hi ha diverses distribucions�més basades en el Red Hat original, que se-

gueixen moltes de les seves característiques; es pot destacar Mandriva (abans

Mandrake), una distribució francesa que en el seu origen es va basar en Red

Hat i que juntament amb aquesta segueix als primers llocs en les preferències

dels usuaris (sobretot per a treball d'escriptori). Mandriva desenvolupa progra-

mari propi i multitud d'assistents per a ajudar la instal·lació i administració

de les tasques més comunes, i així se separa del seu origen amb base en Red

Hat. D'altra banda, les versions empresarials de Red Hat també han originat

una sèrie de distribucions lliures molt populars en entorns de servidor, com

CentOS [Cen] (que intenta mantenir una compatibilitat 100% amb el Red Hat

empresarial), i Scientific Linux [Sci] (especialitzada en el còmput científic en

projectes d'investigació científica).

GNUFDL • PID_00167521 49 Introducció al sistema operatiu GNU/Linux

Figura 5. Un escriptori Fedora amb Gnome

Pel que fa a la distribució comunitària Fedora i els seus orígens comercials en

Red Hat:

a) És una distribució creada�per�la�comunitat�voluntària de programadors i

usuaris basada en desenvolupament que no té suport ni d'actualitzacions ni

de manteniment per part del fabricant. Aquest aspecte passa a dependre de la

comunitat, de manera semblant al cas de la distribució Debian GNU/Linux.

b)�Les�versions es produeixen amb força rapidesa; s'esperen noves versions de

la distribució aproximadament cada sis mesos.

c)� Per� a� la� gestió� de� paquets, també utilitza el sistema de paquets RPM.

Pel que fa al procés de l'actualització dels paquets de la distribució o a la

instal·lació d'altres de nous, es poden obtenir per diferents eines: amb els ca-

nals d'actualització de Fedora (repositoris de programari), pels nous sistemes

d'actualització yum (basats en el sistema RPM).

d)� Altres� qüestions� més� tècniques (algunes les veurem en els apartats

següents) es poden trobar en les notes de la versió de cada llançament de Fe-

dora.

Nota

Vegeu http://docs.fedoraproject.org/

GNUFDL • PID_00167521 50 Introducció al sistema operatiu GNU/Linux

7. Què veurem...

Una vegada que hem examinat aquesta introducció "filosòfica" al món del

codi obert i la història dels sistemes UNIX i GNU/Linux, i definit quines seran

les tasques de la figura de l'administrador del sistema, passarem a tractar les

diferents tasques típiques que ens trobarem durant l'administració de sistemes

GNU/Linux.

A continuació, examinarem les diferents àrees que implica l'administració de

sistemes GNU/Linux. En cada mòdul, examinarem un mínim dels fonaments

teòrics que ens permetin explicar les tasques per fer i entendre el funciona-

ment de les eines que utilitzarem. Cada mòdul estarà acompanyat d'algun

tipus de taller, en què veurem una petita sessió de treball d'una tasca o l'ús

d'algunes eines. Només recordarem que, com hem dit en la presentació, el te-

ma de l'administració és ampli i qualsevol intent d'incloure'l completament

(com aquest) ha de fallar per les dimensions limitades; per això, en cada tema

trobareu abundant bibliografia (en forma de llibres, llocs web, guies, etc.) amb

la qual podreu ampliar la "petita" introducció que haurem fet de l'assumpte.

Els temes que veurem són els següents:

• En�el�mòdul�de�nivell�d'usuari, donarem una perspectiva dels sistemes

de GNU/Linux des de la perspectiva de l'usuari final. Observarem procedi-

ments bàsics d'arrencada i instal·lació del sistema, i també configuracions

bàsiques de dispositius, entorn gràfic d'escriptori i gestió de programari.

• En� el� mòdul� de� shells� scripts, veurem una eina bàsica per a

l'administrador, que és la possibilitat d'automatitzar tasques mitjançant

llenguatges interpretats proporcionats pel sistema. N'analitzarem la sinta-

xi i les possibilitats bàsiques, i també algunes utilitats de sistema bàsiques

que complementaran la programació dels scripts.

• En�el�mòdul�de�migració, obtindrem una perspectiva del tipus de sistemes

informàtics que s'estan utilitzant i en quins ambients de treball s'usen.

Veurem, així mateix, com els sistemes GNU/Linux s'adapten millor o pitjor

a cada un, i plantejarem una primera alternativa a l'hora d'introduir un

sistema GNU/Linux: canviem el sistema que teníem o ho fem per etapes,

de manera que coexisteixin tots dos?

• En� el� mòdul� d'eines� d'administració� local, estudiarem (bàsicament)

aquell conjunt d'estris amb el qual l'administrador haurà de "viure" cada

dia (i patir), i que podrien formar la "caixa d'eines" de l'administrador. Par-

larem dels estàndards GNU/Linux, que ens permetran conèixer aspectes

comuns a totes les distribucions GNU/Linux, és a dir, què esperem poder

GNUFDL • PID_00167521 51 Introducció al sistema operatiu GNU/Linux

trobar en qualsevol sistema. Altres eines bàsiques seran: els editors simples

(o no tan simples), algunes instruccions bàsiques per a conèixer l'estat del

sistema o obtenir informació filtrada segons ens interessi, processos bàsics

de compilació de programes a partir dels codis font, eines de gestió del pro-

gramari instal·lat (al mateix temps comentarem l'alternativa d'ús d'eines

gràfiques o les de línia d'instruccions). En general, en l'administració lo-

cal, tractarem d'aquells aspectes d'administració que podríem considerar

"locals" en el nostre sistema. Aquests aspectes poden conformar la major

part de les tasques típiques de l'administrador a l'hora de manejar elements

com ara usuaris, impressores, discos, programari, processos, etc.

• Finalment, en�el�mòdul�dedicat�a�xarxa, examinarem totes aquelles tas-

ques d'administració que englobin el nostre sistema amb el seu "veïnat" a

la xarxa, independentment del tipus, i veurem els diferents tipus de con-

nectivitat que podem tenir amb els sistemes veïns, i també els serveis que

els podem oferir o que en podem rebre.

GNUFDL • PID_00167521 53 Introducció al sistema operatiu GNU/Linux

Activitats

1. Llegiu el manifest Debian a:

http://www.debian.org/social_contract

2. Documenteu-vos sobre les diferents distribucions basades en Debian: Knoppix, Linex, vari-etats d'Ubuntu. A part dels llocs de cada distribució, en l'adreça http://www.distrowatch.comhi ha una bona guia de les distribucions i el seu estat, i també del programari que inclouen.En aquest web, o bé accedint a les comunitats o fabricants, podeu obtenir les imatges ISOde les distribucions.

GNUFDL • PID_00167521 54 Introducció al sistema operatiu GNU/Linux

Bibliografia

[Bar] Barrapunto. Notícies open source. <http://barrapunto.com>.

[Bul] Bulma Linux User Group. Documentació general i comunitats d'usuaris. <http://bulmalug.net>.

[Cen] The Comunity Enterprise Operating System. <http://www.centos.org>.

[Debb] Comunitat Debian. "Distribució Debian". <http://www.debian.org>.

[Debba] Debian. "Software Libre vs. Software Abierto". <http://www.debian.org/intro/free.es.html>.

[Dis] Distrowatch. Distribucions Linux disponibles. Seguiment de les distribucions GNU/Li-nux i novetats dels paquets de programari. I enllaços als llocs de descàrrega de les imatgesISO dels CD/DVD de les distribucions GNU/Linux. <http://www.distrowatch.com>.

[Fed] The Fedora Project. <http://fedoraproject.org/>.

[FHS] FHS Standard (2003). <http://www.pathname.com/fhs>.

[Fre] Freshmeat. Llista de projectes open source. <http://freshmeat.org>.

[FSF] FSF. Free Software Foundation i Projecte GNU. <http://www.gnu.org>.

[His] HispaLinux. Comunidad Hispana de Linux. Documentación general y comunidadesde usuarios. <http://www.hispalinux.es>.

[Joh98] Johnson, M. K. (1998). "Linux Information Sheet". The Linux Documentation Pro-ject.

[Lev] Levenez, E. "UNIX History". <http://www.levenez.com/unix>.

Linux Journal. Revista GNU/Linux. <http://www.linuxjournal.com>.

Linux Magazine. Revista GNU/Linux. <http://www.linux-mag.com/>.

[LPD] The Linux Documentation Project (LDP). Col·lecció de guies i manuals que cobrei-xen qualsevol dels aspectes de GNU/Linux. Documentació general i comunitats d'usuaris.<http://www.tldp.org>.

[New] Newsforge. Notícies open source. <http://newsforge.org>.

[OSDb] OSDN. Open Source Development Network. Comunitat de llocs web, notícies,desenvolupaments, projectes, etc. <http://osdn.com>.

[OSIa] OSI. Llista de llicències open source. <http://www.opensource.org/licenses/index.html>

[OSIb] OSI (2003). "Open Source Definition". <http://www.opensource.org/docs/definition.php>.

[OSIc] OSI (2003). "Open Source Iniciative". <http://www.opensource.org>.

[PS02] Enríquez, R.; Sierra, P. (2002). Open Source. Anaya Multimedia.

[Ray02a] Raymond, E. (2002). "UNIX and Internet Fundamentals". The Linux Documen-tation Project.

[Ray98] Raymond, E. (1998). La catedral y el bazar.

<http://es.tldp.org/Otros/catedral-bazar/cathedral-es-paper-00.html>.

Red Hat Inc. "Distribució Red Hat". <http://www.redhat.com>.

[Sal94] Salus, P. H. (1994, novembre). "25 aniversario de UNIX". Byte España (núm. 1).

Scientific Linux. <http://www.scientificlinux.org>.

GNUFDL • PID_00167521 55 Introducció al sistema operatiu GNU/Linux

[Sla] Slashdot. Lloc de notícies generals de la comunitat Open Source, informàtica i Internet.<http://slashdot.org>.

[Sou] Sourceforge. Llista de projectes open source. <http://sourceforge.org>.

[Sta02] Stallman, R. (2002). "Discusión por Richard Stallman sobre la relación de GNU yLinux". <http://www.gnu.org/gnu/linux-and-gnu.html>.

[Tan06] Tanenbaum, A.; Woodhull, A. S. (2006). The Minix Book: Operating SystemsDesign and Implementation (3a. ed.). Prentice Hall.

[Tan87] Tanenbaum, A. (1987). Sistemas operativos: diseño e implementación. Prentice Hall.

Nivell d'usuari Remo Suppi Boldrito PID_00167522

GNUFDL • PID_00167522 Nivell d'usuari

© 2010, FUOC. Es garanteix el permís per a copiar, distribuir i modificar aquest document segons els termes de la GNU FreeDocumentation License, Version 1.2 o qualsevol altra de posterior publicada per la Free Software Foundation, sense seccionsinvariants ni textos de la coberta anterior o posterior. Hi ha una còpia de la llicència en l'apartat "GNU Free DocumentationLicense" d'aquest document.

Part del material està basat en una versió anterior elaborada pels autors següents: Joaquín López Sánchez-Montañés, Sofia Belles Ramos, Roger Baig i Viñas i Francesc Aulí Llinàs, editat sota dipòsit legal B-1.566-2008 i publicat sota la GNU Free Documentation License, versió 1.2.

GNUFDL • PID_00167522 Nivell d'usuari

Índex

Introducció.................................................................................................. 5

1. Introducció al sistema GNU/Linux............................................... 7

2. Conceptes i ordres bàsiques............................................................ 9

2.1. Usuari i grups .............................................................................. 10

2.2. El sistema de fitxers i la jerarquia ............................................... 15

2.3. Directoris del sistema .................................................................. 17

2.4. Enllaços ........................................................................................ 18

2.5. Permisos ....................................................................................... 19

2.6. Manipulació, patrons, cerques i continguts ............................... 20

2.7. Processos ...................................................................................... 22

2.8. Ordres complementàries ............................................................. 23

3. Instal·lació i arrencada de GNU/Linux (conceptes bàsics)...... 26

4. Configuracions bàsiques.................................................................. 31

4.1. El sistema d'entrada .................................................................... 31

4.2. L'intèrpret d'ordres (shell) ........................................................... 33

4.3. El sistema d'arrencada ................................................................. 38

4.4. Accés a particions i dispositius ................................................... 40

4.5. Configuració de dispositius ........................................................ 42

5. L'entorn gràfic.................................................................................... 46

Activitats...................................................................................................... 49

GNUFDL • PID_00167522 5 Nivell d'usuari

Introducció

Com ja s'ha vist en el mòdul anterior, GNU/Linux és un dels termes emprats

per a referir-se a la combinació del nucli (kernel) –equivalent des del punt de

vista de prestacions i funcionalitat (i en alguns casos superior) a Unix– deno-

minat Linux, i d'eines de sistema GNU, tot sota llicència GPL (Llicència Pú-

blica de GNU) i una altra sèrie de llicències lliures.

Malgrat que Linux és, en sentit estricte, el sistema operatiu, part fonamental

de la interacció entre el nucli i l'usuari (o els programes d'aplicació), es ma-

neja usualment amb les eines GNU, com per exemple l'intèrpret d'ordres o

instruccions Bash, que permet la comunicació amb el nucli mitjançant un

conjunt complet d'ordres i instruccions. Hi ha altres nuclis disponibles per al

projecte GNU, com el Hurd, que molts desenvolupadors consideren que és

l'autèntic nucli del projecte GNU. A http://www.linuxdriver.co.il/kernel_map

es pot consultar un mapa interactiu del nucli de Unix, en què es demostra la

complexitat que té un sistema d'aquestes característiques.

En aquest mòdul veurem conceptes de nivell 0 per a aprendre des de l'inici

els diferents conceptes de GNU/Linux, i anirem avançant fins a veure aspectes

d'inicialització i configuracions per a adequar el sistema operatiu a les nostres

necessitats.

GNUFDL • PID_00167522 7 Nivell d'usuari

1. Introducció al sistema GNU/Linux

El sistema GNU/Linux és un sistema multitasca, és a dir, permet l'execució de

centenars de tasques al mateix temps independentment de la quantitat de cors

o processadors o CPU que tingui per a executar-se, i utilitza una característica

comuna de tots els sistemes operatius moderns anomenada multiprogramació.

Aquesta característica permet executar una tasca durant un determinat temps,

suspendre-la, passar a la següent i així successivament, i quan s'arriba al final,

tornar a començar per la primera sense afectar el seu comportament o execu-

ció.

Normalment aquesta execució es denomina round robin, ja que distribueix un

quàntum de temps (que oscil·la entre 15 mil·lisegons i 150 mil·lisegons, depe-

nent de l'operatiu) per a cada tasca en espera, i torna a començar per la primera

quan s'arriba a l'última de la cua. Si el sistema té més d'un core o processador,

GNU/Linux té capacitat per a distribuir aquestes tasques en els diferents ele-

ments de còmput, i obtenir les consegüents millores en les prestacions. Pot

semblar que 15 mil·lisegons (= 0,015 segons) és un temps petit, però qualse-

vol processador actual pot executar com a mínim en aquest temps vora 2,2

milions d'instruccions màquina! A més, GNU/Linux és un sistema operatiu

multiusuari que permet que més d'un usuari alhora pugui estar treballant amb

el sistema, i que aquest amb el seu treball no pugui afectar cap de les tasques

dels altres usuaris en el sistema.

GNU/LINUX és un sistema multitasca i multiusuari que permet (fins i

tot amb un sol processador) atendre les necessitats simultànies de múl-

tiples usuaris, i utilitza una tècnica habitual dels sistemes operatius mo-

derns denominada multiprogramació.

Tots els sistemes Unix, i GNU/Linux no és una excepció, consideren dos tipus

d'usuaris diferenciats: el superusuari (anomenat root), que té tots els permisos

sobre el sistema, i la resta dels usuaris, que disposen d'un directori de treball

(home), del qual tenen tots els permisos, però en la resta del sistema el que po-

den fer està en funció de la seva importància i nivell de seguretat per al sistema

mateix. Generalment, en qualsevol d'aquests sistemes *nix (Unix, Linux...) un

usuari pot "mirar" (i en alguns casos executar) tot allò que no impliqui infor-

mació confidencial, però té generalment restringides la resta d'accions.

El segon concepte interessant en els sistemes *nix és que es pot treballar in-

teractivament amb dos modes diferenciats: en mode text i en mode gràfic (i

en aquest últim es pot obrir una finestra especial anomenada terminal, que

permet treballar en mode text dins del mode gràfic). Normalment, els modes

GNUFDL • PID_00167522 8 Nivell d'usuari

gràfics són els més utilitzats en sistemes d'escriptori o d'usuari domèstic, men-

tre que els de text són adequats per a servidors. No obstant això, com que no

s'imposa cap restricció, es pot canviar fàcilment d'un a l'altre amb una seqüèn-

cia de tecles o fins i tot estar en mode gràfic i desenvolupar codi en mode text

sobre un terminal, o connectat amb un terminal a una altra màquina o al disc

d'una altra màquina.

El tercer concepte interessant és que la interacció entre l'usuari i el nucli es

fa per mitjà d'un intèrpret d'ordres anomenat shell, que pot ser escollit per

l'usuari entre uns quants. Aquests shells permeten l'execució (interpretació,

més ben dit, ja que el codi està escrit en llenguatge text ASCII) de petits pro-

grames anomenats shell scripts, que són molt potents per a executar seqüències

d'instruccions (i que poden arribar a ser molt complexes). Òbviament, igual

com altres sistemes operatius, GNU/Linux en la seva interfície gràfica suporta

la interacció gràfica sobre les diferents accions del sistema, i permet executar

shell scripts com si es tractés d'altres programes.

Dos conceptes interessants més en els sistemes *nix són la idea de tasca d'usuari

o del sistema operatiu i l'estructura del sistema d'arxius. Quant al primer con-

cepte, una tasca és una activitat que ha de fer el sistema operatiu, que pot ser

l'execució d'una instrucció, una ordre, editar un arxiu, etc. Per a això, el siste-

ma operatiu ha d'executar un programa adequat per a fer aquesta tasca, que

normalment es denomina executable, ja que conté les instruccions màquina

per a fer-la. Quan el programa executable es carrega en memòria s'anomena

procés o programa en execució, ja que conté, a més de l'executable, totes les es-

tructures de dades perquè es pugui fer aquesta tasca, i s'allibera tota la memò-

ria quan finalitza l'execució.

Aquest procés es pot suspendre, bloquejar, o se'n pot continuar l'execució

d'acord amb les necessitats de l'usuari i amb el que ordeni el sistema operatiu.

Una derivació d'aquest concepte de procés és que en els processadors moderns

un procés pot ser dividit entre diverses subtasques (anomenats fils d'execució

o threads). Quins avantatges té un programa multifil? Que el codi que executa

cada fil el defineix el programador, i per això es pot tenir un fil atenent una

lectura de disc i un altre fent un refresc d'una imatge en pantalla simultània-

ment dins del mateix procés. Fins i tot tenint un sol processador, aquest tipus

de programació és més eficient que no si fa una subtasca primer i una altra

després.

Finalment, els sistemes *nix disposen d'una estructura d'arxius estàndard en

què s'ubiquen els arxius del sistema amb independència total dels dispositius

físics. És a dir, a partir d'una arrel (anomenada root i definida per la barra /)

s'ubiquen els diferents directoris en funció dels seus objectius, i aquí cada usu-

ari disposa d'un directori de treball propi, generalment en el directori /home/

nom-usuari, en què el propietari té capacitat de decisió total, mentre que no

és així en la resta de l'arbre (el superusuari té el seu directori en /root).

Nota

Els fils d'execució o threadspoden ser executats indepen-dentment per diferents proces-sadors.

GNUFDL • PID_00167522 9 Nivell d'usuari

2. Conceptes i ordres bàsiques

Entrant en una mica més de detall, en aquest apartat discutirem les idees bà-

siques i les instruccions necessàries per a "moure'ns" en el sistema. La mane-

ra més simple és per mitjà d'ordres en l'intèrpret d'ordres (i ja veureu com és

el més eficient quan s'adquireix una mica de pràctica, encara que al principi

pugui semblar antiquat o complicat, o totes dues coses). Aquest mètode de

treball ens permetrà treballar ràpidament amb qualsevol màquina de manera

local o remota, ja que hi ha repetició i text predictiu de les instruccions, i es

poden executar ordres molt complexes o programar shell scripts simplement

amb un terminal de text. S'ha de tenir en compte que una interfície gràfica és

summament útil per a un usuari novell, però extremadament ineficient per

a un usuari avançat.

La majoria de les ordres, o instruccions, que veurem en aquest apartat, for-

men part de l'estàndard (normes IEEE POSIX) i són comunes a tots els sis-

temes GNU/Linux i Unix. Encara que cada distribució té les seves aplicaci-

ons d'administració i gestió pròpies, generalment totes les accions que s'hi fan

també es poden fer amb les ordres que veurem. A partir d'aquestes ordres, po-

drem manipular gairebé tots els aspectes del sistema i moure'ns eficientment.

En aquest apartat tenim per objectiu aprendre a utilitzar correctament aques-

tes ordres i a navegar per qualsevol sistema basat en GNU/Linux independent-

ment de quina distribució usem. Cada una de les ordres del sistema sol tenir

multitud de paràmetres diferents. Amb la utilització dels paràmetres podem,

amb una mateixa ordre, executar accions diferents, encara que totes siguin

d'un mateix estil. En aquest document no especificarem els diferents paràme-

tres de cada una de les ordres que veurem, ja que es pot consultar el manual

inclòs en tot sistema *nix amb l'ordre man�<nom_ordre>. És interessant co-

mentar que si no se sap el nom de l'ordre es pot utilitzar la instrucció apropos

acció, que ens farà una llista de totes les ordres, i en la qual la paraula passada

com a acció surt en l'especificació de l'ordre. Per exemple, si posem apropos

copy ens donarà:

cp (1) - copy files and directories

cpgr (8) - copy with locking the given file to the password or gr...

cpio (1) - copy files to and from archives

cppw (8) - copy with locking the given file to the password or gr...

dd (1) - convert and copy a file

...

GNUFDL • PID_00167522 10 Nivell d'usuari

Això indica les instruccions que permeten copiar algun element. El paràmetre

d'una ordre està precedit per un espai o moltes vegades per un guionet, com

per exemple:

cp -dpR /home/juan /usr/local/backup

Això permet fer una còpia de suport dels arxius de /home/juan en /usr/local/

backup, i amb -d indiquem que copiï els enllaços simbòlics tal com són, en lloc

de copiar els arxius als quals apunten; amb -p preserva els permisos, l'usuari i

el grup de l'arxiu per copiar, i amb -R copia els directoris recursivament.

2.1. Usuari i grups

Com hem dit en la introducció, tots els *nix són multiusuari i multitasca.

Per aquest motiu és molt important que el sistema operatiu mateix incorpori

mecanismes per a manipular i controlar correctament els usuaris: el sistema

d'entrada i identificació (login o connexió), els programes que pot executar, els

mecanismes de seguretat per a protegir el maquinari de l'ordinador, protecció

per als fitxers dels usuaris, etc.

Per a identificar els usuaris davant del sistema operatiu, generalment s'utilitza

una política de noms estàndard, que sol ser posar com a nom d'entrada la

primera inicial del nom de l'usuari seguit del seu cognom. Els sistemes *nix

organitzen tota aquesta informació per usuaris i grups i cal recordar que es

diferencien majúscules i minúscules i, per tant, abc és diferent de ABC. Per a

entrar a treballar interactivament amb el sistema, ens demanarà una connexió

i una contrasenya.

L'inici de sessió sol ser un nom que identifica de manera inequívoca l'usuari,

i si bé hi ha altres mètodes d'identificació, per exemple, mitjançant certifi-

cats digitals, el primer és el mètode més habitual. Per a validar la connexió

se sol·licita una paraula que només coneix l'usuari, que s'anomena contrase-

nya (password, en anglès). La contrasenya ha de ser una combinació de lletres,

nombres i caràcters especials, i no ha de ser cap paraula de diccionari o simi-

lars, perquè pot representar un problema de seguretat important.

Exemple

Per exemple, si posem una contrasenya com .MBAqcytvav34 podria semblar impossiblede recordar fàcilment, però és un punt i les primeres lletres del tango Mi Buenos Airesquerido cuando yo te vuelva a ver i l'any que es va escriure, i forma una paraula clau queserà molt més complexa d'esbrinar que una paraula que sigui al diccionari, ja sigui escritaen l'ordre normal o al revés.

Nota

Hi ha diferents tipus d'instal·lacions d'un sistema operatiu en funció de l'objectiu o paperque complirà i les aplicacions que tindrà instal·lades: servidor, escriptori, ofimàtica, lleu-re, passarel·la, tallafocs, etc. Un servidor és aquella màquina que conté programes ques'encarreguen de proporcionar algun tipus de servei (com servir pàgines web, deixar que

GNUFDL • PID_00167522 11 Nivell d'usuari

els usuaris es connectin remotament, etc.), que en la majoria dels casos estan vinculatsa una xarxa de comunicacions, però no necessàriament.

El sistema de contrasenyes és de tipus unidireccional, la qual cosa significa que

la nostra contrasenya no és emmagatzemada com a text, sinó que és xifrada i

guardada. Quan entrem en el sistema i escrivim la nostra contrasenya, es xifra

i es compara amb la que hi ha emmagatzemada. Si coincideixen, la identifi-

cació és positiva, si no coincideixen, és negativa. La seguretat del sistema es

basa en l'algoritme de xifratge, del qual, si és segur, no es podrà aconseguir la

clau original fent el procediment invers. Els programes que intenten trencar

les contrasenyes dels usuaris fan milions de xifratges de paraules a partir de

diccionaris (amb sistemes automàtics per a derivar-les i buscar variants) i pro-

var si coincideixen amb el xifratge d'alguna de les contrasenyes d'usuari. Per

aquest motiu, s'han d'escollir acuradament les contrasenyes, i tenir cura d'on

es desen o apunten (cal intentar no fer-ho).

Actualment, en els sistemes GNU/Linux podem seleccionar dos tipus de xi-

fratge possibles per a les contrasenyes d'usuari. El que s'utilitza des dels ini-

cis de Unix és el 3DES. L'únic inconvenient d'aquest tipus de xifratge és que

només ens permet contrasenyes de 8 lletres (si escrivim més, s'ignoren), a di-

ferència de l'altre tipus de xifratge, denominat MD5, amb el qual podem usar

contrasenyes de la longitud que vulguem (de fet, MD5 és un sistema de funció

resum o hashing, però també es pot utilitzar per a xifrar contrasenyes de ma-

nera unidireccional). Com més llarga sigui la contrasenya, resulta més segura,

i per això es recomana utilitzar el segon tipus de xifratge en sistemes d'alta

seguretat. De tota manera, hem de considerar que, si necessitem usar alguns

programes especials per a la gestió d'usuaris, com el NIS, pot ser que no siguin

compatibles amb MD5.

Els grups d'usuaris són un conjunt d'usuaris amb accés al sistema que compar-

teixen unes mateixes característiques, de manera que ens és útil agrupar-los

per a poder donar-los una sèrie de permisos especials en el sistema. Un usuari

ha de pertànyer, almenys, a un grup, encara que pot ser de més d'un. El siste-

ma també utilitza tot aquest mecanisme d'usuaris i grups per a gestionar els

servidors d'aplicacions instal·lats i altres mecanismes. Per aquesta raó, a més

dels usuaris reals, en un sistema hi haurà usuaris i grups que no tenen accés

interactiu però estan vinculats a altres tasques que s'han de fer en l'operatiu.

Exemple

Per exemple, l'usuari Debian-Exim és un usuari definit per a les funcionalitats del gestorde correu Exim que té ID d'usuari (101) i de grup (105), però que no es pot connectarinteractivament (tal com ho indica el /bin/false de la definició de l'usuari en l'arxiu /etc/passwd).

Debian-exim:x:101:105::/var/spool/exim4:/bin/false.

Com ja hem explicat, en tot sistema operatiu hi ha un superusuari (root) que té

privilegis màxims per a efectuar qualsevol operació sobre el sistema. És neces-

sari que existeixi, ja que serà qui s'encarregarà de tota l'administració i gestió

Nota

NIS són una sèrie d'aplicacionsque ens permeten gestionartots els usuaris d'una mateixaxarxa de manera centralitzadaen un sol servidor.

GNUFDL • PID_00167522 12 Nivell d'usuari

de servidors, grups, etc. Aquest usuari no s'ha d'utilitzar per a treballar normal-

ment en el sistema. Només haurem d'entrar com a root quan sigui realment

necessari (actualment, la majoria de les distribucions no permeten entrar com

a root, sinó entrar com a usuari normal i després "elevar-se" com a root per

mitjà de la instrucció su o executar instruccions amb l'ordre sudo) i utilitza-

rem altres usuaris per al treball normal. D'aquesta manera, mai no podrem

danyar el sistema amb operacions errònies o provant programes que poden

ser maliciosos, etc.

Tota la informació d'usuaris i grups es troba als arxius següents:

• /etc/passwd: informació (nom, directori home, etc.) de l'usuari.

• /etc/group: informació sobre els grups d'usuaris.

• /etc/shadow: contrasenyes xifrades dels usuaris i configuració per a la va-

lidació, canvi, etc.

Utilitzar l'arxiu shadow és opcional però recomanable, ja que és un arxiu que

només pot llegir root; per tant, la resta d'usuaris no tindrà accés a les contra-

senyes xifrades i es redueix així la probabilitat que un usuari normal pugui

utilitzar eines de força bruta per a esbrinar les contrasenyes d'altres usuaris o

de root.

Tots aquests fitxers estan organitzats per línies, cada una de les quals identifica

un usuari o grup (depenent del fitxer). En cada línia hi ha diversos camps

separats pel caràcter ":", i és important saber què són aquests camps, per la qual

cosa els explorarem amb una mica més de detall:

1)�/etc/passwd. Per exemple, games:x:5:60:games:/usr/games:/bin/sh.

• Camp 1. Connexió: el nom de l'usuari. No hi pot haver dos noms iguals,

encara que algun pot coincidir amb un grup del sistema.

• Camp 2. Contrasenya xifrada: si no s'utilitza el fitxer shadow, les contrase-

nyes xifrades s'emmagatzemen en aquest camp. Si utilitzem el fitxer sha-

dow, tots els usuaris existents han d'estar també en el shadow i en aquest

camp s'identifica amb el caràcter x.

• Camp 3. ID d'usuari: número d'identificació de l'usuari. És el número amb

el qual el sistema identifica l'usuari. El 0 és el reservat per al root.

• Camp 4. ID del grup: el número de grup al qual pertany l'usuari. Com que

un usuari pot pertànyer a més d'un grup, aquest grup es denomina primari.

• Camp 5. Comentaris: camp reservat per a introduir els comentaris so-

bre l'usuari. Se sol utilitzar per a posar el nom complet o algun tipus

d'identificació personal.

Nota

Informació d'usuaris i grups:• /etc/passwd: informació

dels usuaris.• /etc/group: informació so-

bre els grups d'usuaris.• /etc/shadow: contrasenyes

xifrades dels usuaris i confi-guració per a la validació,canvi, etc.

GNUFDL • PID_00167522 13 Nivell d'usuari

• Camp 6. Directori d'usuari: el directori de l'usuari, que és on pot deixar

tots els seus fitxers. Se solen posar en una carpeta del sistema (generalment

/home/login-usuari).

• Camp 7. Intèrpret d'ordres: un intèrpret d'ordres (shell) és un programa

que s'encarrega de llegir tot el que escrivim amb el teclat i executar els

programes o ordres que indiquem. En el món GNU/linux el més utilitzat

és el Bash (GNU Bourne again shell), si bé n'hi ha altres (csh, ksh, etc.). Si

en aquest camp escrivim /bin/false, no permetrem que l'usuari executi cap

ordre en el sistema, encara que estigui donat d'alta.

2)�/etc/group. Per exemple, netdev:x:110:Debian.

• Camp 1. Nom del grup.

• Camp 2. Contrasenya xifrada: la contrasenya d'un grup s'utilitza per a per-

metre que els usuaris d'un determinat grup es puguin canviar a un altre

o per a executar alguns programes amb permisos d'un altre grup (sempre

que es disposi de la contrasenya).

• Camp 3. ID de grup: número d'identificació del grup. És el número amb

el qual el sistema identifica internament els grups. El 0 està reservat per al

grup de root (els administradors).

• Camp 4. Llista d'usuaris: els noms dels usuaris que pertanyen al grup, se-

parats per comes. Encara que tots els usuaris han de pertànyer a un grup

determinat (especificat en el quart camp del fitxer passwd), aquest camp

es pot utilitzar perquè usuaris d'altres grups també disposin dels mateixos

permisos que té l'usuari a qui s'està fent referència.

3)�/etc/shadow. Per exemple,

root:$1$oE9iKzko$n9imGERnPDayiyat0XQjm.:14409:0:99999:7:::

• Camp 1. Connexió: ha de ser el mateix nom que s'utilitza en el fitxer /etc/

passwd.

• Camp 2. Contrasenya xifrada.

• Camp 3. Dies que han passat, des de l'1/1/1970, fins que la contrasenya

ha estat canviada per última vegada.

• Camp 4. Dies que han de passar fins que la contrasenya es pugui canviar.

• Camp 5. Dies que han de passar fins que la contrasenya s'hagi de canviar.

• Camp 6. Dies abans que caduqui la contrasenya s'avisarà l'usuari que l'ha

de canviar.

• Camp 7. Dies que poden passar després que la contrasenya caduqui abans

de deshabilitar el compte de l'usuari (si no es canvia la contrasenya).

• Camp 8. Dies, des de l'1/1/1970, que el compte és vàlid, i passats aquests

dies serà deshabilitat.

GNUFDL • PID_00167522 14 Nivell d'usuari

• Camp 9. Reservat.

Quan un usuari entra en el sistema, se situa en el seu directori personal i

s'executa l'intèrpret d'ordres (shell) configurat en /etc/passwd en la línia cor-

responent a l'usuari. D'aquesta manera, ja pot començar a treballar. Només el

root del sistema (o els usuaris del seu grup) tenen permís per a manipular la

informació dels usuaris i grups, donar-los d'alta, de baixa, etc. Cada ordre per

a manejar els usuaris té diversos paràmetres diferents per a gestionar tots els

camps que hem vist anteriorment.

A tall d'exemple, podem esmentar:

• adduser: ens serveix per a afegir un nou usuari al sistema. La manera

com s'afegeix (si no li especifiquem res) es pot configurar en el fitxer /etc/

adduser.conf. Admet un conjunt d'opcions diferents per a especificar el

directori d'usuari, l'intèrpret que utilitzarà, etc.

• useradd: crea un nou usuari o canvia la configuració per defecte. Aquesta

ordre i l'anterior ens poden servir per a fer les mateixes accions, encara que

amb diferents paràmetres.

• usermod: amb aquesta ordre podem modificar la majoria dels camps

que es troben en els fitxers passwd i shadow, com el directori personal,

l'intèrpret, la caducitat de la contrasenya, etc.

• chfn: canvia la informació personal de l'usuari, continguda en el camp de

comentaris del fitxer passwd (campos).

• chsh: canvia l'intèrpret d'ordres de l'usuari.

• deluser: elimina un usuari del sistema, i esborra tots els seus fitxers segons

els paràmetres que li passem, fa còpia de seguretat o no, etc. La configura-

ció que s'utilitzarà per defecte amb aquesta ordre s'especifica en el fitxer

/etc/deluser.conf.

• userdel: ordre amb les mateixes possibilitats que l'anterior.

• passwd: serveix per a canviar la contrasenya d'un usuari, la informació de

caducitat, o per a bloquejar o desbloquejar un determinat compte.

• addgroup: permet afegir un grup al sistema.

• groupadd: el mateix que l'ordre anterior, però amb diferents paràmetres.

• groupmod: permet modificar la informació (nom i GID) d'un grup deter-

minat.

Nota

Ordres bàsiques de gestiód'usuaris i grups:• useradd• usermod• chfn• chsh• deluser• userdel• passwd• addgroup• grouppadd• groupmodd• delgroup• groupdel• gpasswd• groups

GNUFDL • PID_00167522 15 Nivell d'usuari

• delgroup: elimina un grup determinat. Si algun usuari el té com a primari,

no es podrà eliminar.

• groupdel: igual que en el cas anterior.

• gpasswd: serveix per a canviar la contrasenya del grup. Per a saber quin

usuari som, podem utilitzar l'ordre whoami, que ens mostrarà el nostre

nom d'entrada.

• groups: serveix per a saber a quins grups pertanyem, i id ens mostrarà

l'usuari i els grups.

També és interessant poder convertir-nos en un altre usuari sense sortir de la

sessió (ordre login o su) o canviar-nos de grup amb l'ordre newgrp. Aquesta

última ordre s'ha d'utilitzar només quan no es pertany al grup en qüestió i se

sap la seva contrasenya (que ha d'estar activada en el fitxer group). Si només

necessitem els permisos del grup en qüestió per a executar una ordre determi-

nada, també podem utilitzar sg.

Com veiem, en GNU/Linux tenim més d'una manera per a executar

una acció determinada. Aquesta és la tònica general que se segueix en

el sistema: podem editar directament els fitxers i modificar-los, utilitzar

algunes de les ordres que hi ha, crear-les nosaltres mateixos, etc. En

definitiva, tenim la possibilitat de seleccionar quina és l'opció que més

ens satisfà.

D'altra banda, i com dèiem anteriorment, GNU/Linux és un sistema operatiu

multiusuari, per la qual cosa en un mateix moment hi pot haver diversos usu-

aris connectats al sistema de manera simultània. Per a esbrinar qui són, es pot

utilitzar l'ordre who, que ens mostra la llista d'usuaris dins del sistema; w, a

més, ens mostra què és el que estan fent. Ens podem comunicar amb un altre

usuari utilitzant l'ordre write, amb la qual apareix el missatge que hem escrit a

la pantalla de l'usuari indicat o wall, que escriu el contingut del fitxer que hem

especificat en tots els usuaris dins del sistema. Per a activar o desactivar l'opció

de rebre missatges, tenim l'ordre mesg. També podem fer un xat personal amb

algun usuari a partir de l'ordre talk.

2.2. El sistema de fitxers i la jerarquia

Tot sistema operatiu necessita desar multitud d'arxius: configuració del siste-

ma, registre d'activitats, d'usuaris, etc. Hi ha diferents sistemes d'arxius carac-

teritzats per la seva estructura, fiabilitat, arquitectura, rendiment, etc., i GNU/

GNUFDL • PID_00167522 16 Nivell d'usuari

Linux és capaç de llegir i escriure arxius en la gairebé totalitat dels sistemes

d'arxius, encara que té els seus sistemes propis optimitzats per a les seves fun-

cionalitats, com per exemple ext3 o ReiserFS.

L'ext4 és una millora compatible amb ext3 que, al seu torn, és una evolució

de l'ext2 que és el més típic i estès. El seu rendiment és molt bo, incorpora

tot tipus de mecanismes de seguretat i adaptació, és molt fiable i incorpora

una tecnologia denominada journaling, que permet recuperar fàcilment errors

en el sistema quan, per exemple, hi ha un tall de llum o l'ordinador sofreix

una parada no prevista. ext4 suporta volums de fins a 1024 PiB (PiB pebibyte

= 250 bytes ≈ 1.000.000.000.000.000 bytes), millora l'ús de la CPU i el temps

de lectura i escriptura..

ReiserFS és un altre dels sistemes utilitzats en Linux que incorpora noves tec-

nologies de disseny, que li permeten obtenir prestacions i utilització de l'espai

lliure més adequades. Qualsevol d'aquests tipus de sistemes d'arxius pot ser

seleccionat en el procés d'instal·lació, i és recomanable ext3 per a la majoria

de les instal·lacions.

Una característica molt important de tots els sistemes *nix és que tots els dis-

positius del sistema es poden tractar com si fossin arxius (independència del

dispositiu físic). És a dir, hi ha el procediment de "muntar el dispositiu" per

mitjà de l'ordre mount en un directori del sistema i després, accedint a aquest

directori, s'accedeix al dispositiu (fins i tot si el dispositiu és remot), per la qual

cosa no hi ha una identificació del dispositiu físic per a treballar amb els fitxers

com en altres sistemes operatius, com A:, C:, etc.).

El sistema de fitxers ext2/3/4 ha estat dissenyat per a manejar de manera òpti-

ma fitxers petits (els més comuns) i de manera acceptable els fitxers grans (per

exemple, arxius multimèdia) si bé es poden configurar els paràmetres del sis-

tema de fitxers per a optimitzar el treball amb aquest tipus d'arxius. Com hem

esmentat anteriorment, el sistema d'arxius parteix d'una arrel indicada amb

/, i les carpetes (directoris) i subcarpetes (subdirectoris) s'organitzen a partir

d'aquesta, de manera que presenta una organització jeràrquica (visualitzada

amb l'ordre tree -L 1) com:

/

|-- bin

|-- boot

|-- cdrom -> media/cdrom

|-- dev

|-- etc

|-- home

|-- initrd.img -> boot/initrd.img-2.6.26-2-686

|-- lib

|-- lost+found

GNUFDL • PID_00167522 17 Nivell d'usuari

|-- media

|-- mnt

|-- opt

|-- proc

|-- root

|-- sbin

|-- selinux

|-- srv

|-- sys

|-- tmp

|-- usr

|-- var

`-- vmlinuz -> boot/vmlinuz-2.6.26-2-686

Aquí es mostra el primer nivell de directoris a partir del /. Tots són directoris,

excepte els que figuren amb el caràcter "->", que són enllaços a arxius (l'arxiu

original es troba a la dreta de la fletxa).

2.3. Directoris del sistema

En les distribucions GNU/Linux se segueix l'estàndard FHS, i tenim com a

directoris en l'arrel (els més importants):

• /bin: ordres bàsiques per a tots els usuaris del sistema.

• /boot: arxius necessaris per a l'arrencada del sistema.

• /dev: dispositius del sistema.

• /etc: arxius de configuració del sistema i de les aplicacions que hi ha

instal·lades.

• /home: directoris personals dels usuaris.

• /lib: biblioteques essencials per al nucli del sistema i els seus mòduls.

• /mnt: punt de muntatge temporal per a dispositius.

• /proc: processos i variables del nucli del sistema.

• /root: directori personal per al root del sistema.

• /sbin: instruccions especials per al root del sistema.

• /tmp: arxius temporals.

• /usr: segona estructura jeràrquica, utilitzada per a emmagatzemar tot el

programari instal·lat en el sistema.

• /var: directori per als gestors de cues o spoolers d'impressió, arxius de re-

gistre (logs), etc.

No s'han d'esborrar aquests directoris, malgrat que sembli que no s'utilitzen,

per al bon funcionament del sistema (moltes aplicacions poden no instal·lar-se

o donar errors si els directoris estàndard no estan definits).

GNUFDL • PID_00167522 18 Nivell d'usuari

Per a moure'ns per l'estructura de directoris hem d'utilitzar les ordres per a fer

una llista dels continguts i canviar de carpeta. Quan entrem en el sistema, és

usual que la connexió ens situï en el nostre directori personal, que general-

ment se sol indicar amb el caràcter "~". Si volem veure el que hi ha en el di-

rectori en el qual estem situats, podem fer una llista dels continguts utilitzant

l'ordre ls o, en la seva versió més completa, ls�-la, que implica tots els fitxers

(incloent-hi els que comencen per un ".", que no es mostren normalment) amb

-a, i en format llarg amb -l. En tots els directoris hi ha dues entrades indicades

amb "." i ".."; la primera fa referència al directori actual i la segona al directori

superior.

Per a canviar de directori podem utilitzar l'ordre cd, la qual, si no li passem cap

paràmetre, ens situarà en el directori personal de l'usuari que l'ha executada.

Totes les ordres accepten adreces relatives; per exemple, ls ./grub si estem en el

directori /boot ens mostrarà el contingut del directori /boot/grub (forma rela-

tiva) o ls /boot/grub també ens mostrarà el contingut del directori /boot/grub,

però des de qualsevol lloc on estiguem (forma absoluta). Una altra ordre útil

per a saber on estem aturats és pwd, que ens indicarà en quin directori som.

2.4. Enllaços

Un element molt utilitzat en els arxius són els enllaços o vincles. Un

enllaç és un pont a un arxiu o directori i representa una referència que

podem posar en qualsevol lloc que ens interessi, i actua com un accés

directe a qualsevol altre.

Aquest mecanisme ens permet accedir a carpetes o fitxers de manera segura i

còmoda, sense haver-nos de desplaçar per la jerarquia de directoris.

Exemple

Si necessitem accedir freqüentment a l'arxiu /etc/network/if-up/mountnfs, per exem-ple, podem utilitzar un enllaç en el nostre directori amb l'ordre ln -s /etc/network/if-up/mountnfs nfs-conf, i fent un cat nfs-conf tindrem el mateix resultat que fent cat /etc/network/if-up/mountnfs, i així evitem haver d'introduir cada vegada tota la ruta completa.

En aquest cas hem creat un enllaç simbòlic paràmetre (-s) és a dir, que si es-

borrem l'arxiu l'enllaç quedarà apuntant a res i donarà un error quan execu-

tem l'ordre cat nfs-conf, però aquest tipus d'enllaç es pot fer en qualsevol re-

curs i en qualsevol de les particions del disc. L'altra possibilitat és fer un enllaç

fort (hard link), permès només per a recursos en la mateixa partició; en aquest

cas, si esborrem l'arxiu, l'enllaç queda actiu fins que no hi hagi més enllaços

apuntant a aquest arxiu (moment en el qual s'esborrarà l'arxiu de destinació).

Aquest recurs s'ha d'utilitzar amb compte (només el root pot fer enllaços forts a

directoris), ja que permet ocultar a quin arxiu està apuntant, mentre que amb

un enllaç simbòlic es pot veure l'arxiu de destinació.

Exemple

Per exemple, si fem ls�. mos-trarà la llista del directori actu-al i si fem ls�.. mostrarà la llistadel directori immediatamentsuperior.

GNUFDL • PID_00167522 19 Nivell d'usuari

2.5. Permisos

Ja que els sistemes *nix són multiusuari, necessitem que els arxius emmagat-

zemats tinguin una sèrie de propietats que permetin llegir, escriure i executar

(paràmetres r, w, x –read, write, execute). Per a això GNU/Linux pot treballar

amb un mètode simplificat (anomenat access control list reduïdes) en què per a

cada element en el sistema d'arxius es consideren tres bits (que representen els

atributs per a rwx) per al propietari de l'element (owner), tres per al grup i tres

per a la resta d'usuaris. Llavors, per a cada element (arxiu, directori, dispositiu,

enllaç, etc.) hi ha 9 bits a més de la identificació de qui és l'amo de l'element

(uid) i a quin grup pertany (gid). Quan fem ls -l tindrem per a cada element

una sortida com la següent:

-rwxr-xr-x 1 root root 4297 2008-01-18 06:09 mountnfs

Els primers deu caràcters (començant per l'esquerra) ens indiquen els permisos

del fitxer de la manera següent:

• Caràcter 1: indica el tipus d'arxiu; els més comuns són "-" per a un arxiu,

d per a un directori, i l per a un enllaç.

• Caràcters 2, 3, 4: ens indiquen, respectivament, els permisos de lectura,

escriptura i execució per al propietari del fitxer. En cas de no tenir el permís

corresponent activat, hi ha el caràcter "-" i si no, r, w o x. En el tercer caràc-

ter, a més, ens podem trobar una s, que ens indica si l'arxiu és de tipus

SetUserId, que significa que en executar-lo obtindrà els permisos del pro-

pietari del fitxer. Si només té el permís x, quan el programa s'executa ho

fa amb els permisos de qui l'hagi llançat.

• Caràcters 5, 6, 7: aquests caràcters tenen exactament el mateix significat

que els anteriors, però fan referència als permisos concedits als usuaris del

grup a què pertany l'arxiu.

• Caràcters 8, 9, 10: igual que en el cas anterior, però per als altres usuaris

del sistema.

La xifra següent (1, en aquest cas) ens indica el nombre d'enllaços forts que

té l'arxiu. Per als directoris, aquest nombre indica quantes carpetes hi ha en

l'interior, a més dels enllaços forts que té. A continuació es troba el propietari

i el grup de l'arxiu, seguit de la mida (en bytes) que ocupa i la data de l'última

modificació. En tots els arxius es desa la data de creació, de l'últim accés i

de l'última modificació, que podem manipular amb l'ordre touch. Al final es

troba el nom del fitxer, en el qual es diferencien minúscules de majúscules, i

aquí podem tenir tot tipus de caràcters sense cap problema (encara que després

GNUFDL • PID_00167522 20 Nivell d'usuari

serà més complicat executar ordres amb aquests caràcters, ja que s'haurà de

posar entre cometes ("") perquè no s'interpretin). Es recomana utilitzar: a-z A-Z

. - _ 0-9.

El mecanisme de SetUserId és molt útil quan un programa necessita tenir

els permisos del seu propietari per a accedir a certs arxius o fer algun tipus

d'operació en el sistema. S'ha de vigilar aquest tipus d'arxius perquè poden

generar problemes de seguretat en el sistema si són mal utilitzats. Per a canviar

els permisos d'un arxiu determinat podem utilitzar l'ordre chmod, i aquesta

acció només la pot fer el propietari de l'arxiu. Hi ha dues maneres comunes

d'utilitzar chmod. Una és: chmod XXX nom_arxiu, en què XXX està comprès

entre 0 i 7, que corresponen al valor en octal dels permisos rwx per al propie-

tari (primer número), el grup (segon) i públic (tercer). Per a treure el número

hem de considerar que 1 vol dir amb permís concedit, i 0, sense; per exemple, r-x

es tradueix com 101, que en octal (o binari) és 5. Per això, r-x--xr-- es tradueix

com 101001100, que queda com 514.

Proteccions

Per a canviar les proteccionsde file a rwxr--r-:chmod 744 filePer a canviar de propietari igrup:chown user filechgrp group file

L'altra manera d'utilitzar l'ordre és indicar de manera explícita quin permís

volem donar o eliminar en l'arxiu, indicant amb les lletres u, g, o l'usuari, el

grup o la resta, respectivament, un + per a agregar el permís i un − per a treure'l,

i r, w, x o s (aquest últim per al SetUserId) per al permís en concret. Per exemple,

chmod go +r mountfs concediria el permís de lectura al grup i als altres usuaris

per a l'arxiu mountnfs. Perquè canviï el propietari d'un fitxer, s'utilitza l'ordre

chown1, i per a canviar el grup d'un arxiu es pot utilitzar l'ordre chgrp. Els

permisos per defecte per als arxius es poden definir amb l'ordre umask, amb

la mateixa notació que per a la primera forma del chmod però complementat

(és a dir, si volem rw-r- -r-- el valor hauria de ser 133).

2.6. Manipulació, patrons, cerques i continguts

L'ordre rm permet eliminar els arxius, i per a eliminar un directori podem uti-

litzar l'ordre rmdir, encara que només l'esborrarà quan sigui buit (si volgués-

sim esborrar completament un directori i tot el seu contingut, podem utilitzar

rm -r, que funciona de manera recursiva). Per a copiar arxius d'un lloc a un

altre tenim l'ordre cp, indicant el fitxer o directori origen i el lloc o nom de

destinació, encara que sigui en el directori actual (si volem moure un arxiu o

directori, es pot utilitzar l'ordre mv).

(1)Aquesta ordre només la pot uti-litzar el root, ja que un usuari po-dria fer una acció maliciosa i des-prés canviar el propietari de l'arxiui responsabilitzar un altre usuari del'acció feta.

Podem utilitzar modificadors en els noms dels arxius o directoris, com per

exemple "*", per a referir-nos a qualsevol cadena, i "?" per a indicar un caràcter

qualsevol. Per exemple, si volem mostrar tots els arxius que comencin per a

i acabin per x caldrà executar ls a*x, però si volem mostrar tots els arxius de

tres lletres que comencin per a i acabin per x, serà ls a?x. Es pot utilitzar "[]"

per a una selecció de caràcters; per exemple ls [Yy]* indicaria tots els arxius

que comencin per Y o per y, i després qualsevol cosa. Podem agregar també

Caràcters modificadors

*: qualsevol cosa,?: un caràcter[Yy]: un o l'altre[A-Z]: un rang[:classe:]: una classe

GNUFDL • PID_00167522 21 Nivell d'usuari

"!", que significa la negació del que indiquem, com en [!Yy], és a dir, que no

comencin per Y o y. Finalment, per a facilitar certes cerques, dins de "[]" podem

especificar classes de caràcters com [:classe:], que pot ser una de les següents:

• alnum: [A-Za-z0-9]

• alpha: [A-Za-z]

• blank: [\]

• cntrl: caràcters de control

• digit: [0-9A-Fae-f]

• graph: caràcters imprimibles (sense espais)

• lower: [a-z]

• print: caràcters imprimibles (amb espais)

• punct: [.,¡!¿?:;]

• space: []

• upper: [A-Z]

• xdigit: [0-9A-Fa-f]

Un altre tipus d'operació molt útil és la cerca d'arxius. Hi ha diverses ordres

per a fer cerques de diferents tipus: find és l'ordre més versàtil per a buscar in-

formació sobre els arxius o directoris (per nom, mida, data, proteccions, etc.),

locate permet utilitzar una base de dades del sistema per a fer cerques més

ràpides que el find, però s'ha de tenir en compte que pot donar informació

no actualitzada i que es pot actualitzar amb updatedb, i whereis indica on es

troba l'arxiu especificat.

Com els arxius poden ser de molts tipus (executables, text, dades, música, etc.)

en els sistemes *nix no s'utilitza l'extensió per a identificar el tipus d'arxiu

sinó un nombre intern a la capçalera de l'arxiu anomenat magic number, que

determina el tipus d'arxiu segons les seves dades (es pot utilitzar l'ordre file

per a llegir i determinar el tipus d'arxiu). Si necessitem veure el contingut d'un

arxiu, una de les ordres bàsiques és cat, o more si l'arxiu és ASCII; llavors el

mostrarà paginat. Si fem un cat d'un arxiu executable alguns dels caràcters

poden desconfigurar el terminal i es pot reinicialitzar amb l'ordre reset, i clear

per a esborrar la pantalla. L'ordre less ens permet moure'ns de manera més

eficient (endavant i endarrere per l'arxiu). Si l'arxiu és binari i volem veure què

conté, podem utilitzar les ordres hexdump per a veure el contingut de forma

hexadecimal o strings per a buscar les cadenes de caràcters. A l'ordre grep li

podem passar com a segon paràmetre el nom de l'arxiu, i com a primer, el patró

que vulguem buscar (segons la sintaxi que hem vist anteriorment, estesa a

altres opcions). A més, l'ordre ens permet múltiples accions més, com comptar

el nombre de línies en les quals apareix el patró (paràmetre -c), etc. Amb cut

podem separar en camps el contingut de cada línia del fitxer especificant quin

caràcter és el separador, molt útil en tasques d'administració. També podem

visualitzar un determinat nombre de línies del començament o del final d'un

arxiu amb les ordres head i tail, respectivament, i amb wc podem comptar

el nombre de línies o paraules, la màxima longitud de línia d'un fitxer, etc.

Finalment, per a comparar diferents arxius hi ha diverses ordres per a fer-ho:

GNUFDL • PID_00167522 22 Nivell d'usuari

diff,�cmp i comm fan comparacions de diferents maneres i mètodes en els

fitxers que indiquem; sdiff a més permet barrejar les dades d'acord amb els

paràmetres indicats.

2.7. Processos

Com hem dit en la introducció, els *nix són sistemes operatius multitasca que

executen processos i fils (threads) mitjançant una tècnica anomenada multi-

programació, que permet executar més d'un procés o fil alhora de manera con-

current i més eficient que si l'executéssim seqüencialment, ja que es pot enca-

valcar l'execució d'entrada o sortida d'un procés amb l'execució en la CPU d'un

altre procés. Per a identificar de manera inequívoca cada procés, el nucli del

sistema els assigna un número denominat PID (process identification), necessari

per a administrar i referenciar el procés.

Per a saber quins processos s'estan executant, podem utilitzar l'ordre ps. Una

altra ordre interessant per a mirar l'execució interactiva dels processos és top,

que mostra la càrrega i l'estat de sistema de manera dinàmica (cal prémer q

–quit– per a sortir de la instrucció).

A més d'això, podem enviar senyals als processos a fi d'informar-los d'algun

esdeveniment, els podem treure de la cua d'execució, eliminar-los, donar-los

més prioritat, etc. Saber manipular correctament tots aquests aspectes també

és molt important, ja que ens permetrà utilitzar el nostre ordinador de mane-

ra més eficient. L'ordre kill ens permet enviar senyals als processos que ens

interessin.

Ordre ps

Per exemple, ps -edaf mostraun conjunt d'informació sobretots els processos en execució ien diferents estats.

En general, tots els programes es dissenyen perquè puguin rebre aquest tipus

de senyals (fins i tot els scripts poden capturar els senyals). D'aquesta manera,

segons el tipus de senyal rebut saben que han de fer unes operacions o d'altres

(per exemple, suspendre l'execució quan un usuari fa un Ctrl-D). Per a veure

els tipus de senyals, consulteu man kill.�killall és una ordre per a fer el mateix,

però utilitza el nom del procés en lloc del PID, i skill és similar, però amb una

sintaxi diferent: per exemple, per a detenir totes les execucions d'un usuari

determinat, podríem utilitzar skill -STOP -u login, amb la qual cosa s'acabarà

l'execució dels processos d'aquest usuari. A més de Ctrl-D o Ctrl-C per a fina-

litzar un procés (la primera és amb espera fins que el procés acabi el seu E/S

i la segona és en el moment que la rep), amb Ctrl-Z podem interrompre un

programa i reviure'l amb fg.

Kill

Per exemple, amb el senyal TERM –que és 15– si fem kill -15 PID, que és equivalent afer Ctrl-C en un procés interactiu sobre un terminal, indiquem al procés que volem queacabi, de manera que en rebre el senyal haurà de desar tot el necessari i acabar l'execució;si el programa no està preparat per a rebre aquest tipus de senyal, podem utilitzar la -9(que obeixen tots els processos) i acabar independentment del que estiguin fent amb kill-9 PID.

Nota

Ordres per a processos:• kill -9 <pid>• skill -STOP -u <login>• ps -edaf• top• pstree• nice [-n increment] <ordre>

GNUFDL • PID_00167522 23 Nivell d'usuari

L'ordre pstree permet veure aquesta jerarquia de manera gràfica, i veurem que

el pare de tots els processos s'anomena init, ja que és el procés inicial per a

posar en marxa els processos restants del sistema, i a partir d'aquest neixen tots

els altres, que al seu torn poden tenir més fills. Aquesta estructura és molt útil

per a identificar d'on vénen els processos (qui els ha posat en marxa) i per a

eliminar-ne un conjunt, ja que, en eliminar un procés pare, també s'eliminen

tots els seus fills.

Un paràmetre important dels processos és un valor anomenat prioritat, que està

relacionat amb la CPU que rebrà aquest procés (com més prioritat més temps

de CPU). El rang de prioritats va des del -20 fins al 19 (les negatives només

les pot utilitzar el root), de major a menor. Per a llançar un procés amb una

prioritat determinada, podem utilitzar l'ordre nice i renice, si volem donar

una prioritat diferent d'un procés que ja estigui en execució. Per defecte, la

prioritat amb què s'executen els programes és la 0. L'ordre time permet calcular

el temps que utilitza un procés per a executar-se (generalment amb finalitats

comptables, per exemple si hem de facturar pel temps de CPU que gasta un

procés).

2.8. Ordres complementàries

Totes les ordres disposen en GNU/Linux (i en tots els *nix) d'un manual com-

plet que indica tots els paràmetres i opcions (man�ordre), i s'utilitza l'ordre less

per a visualitzar-les, i per això podem anar endavant i enrere amb les tecles

d'avançar i retrocedir pàgina, buscar una paraula amb el caràcter "/" seguit de

la paraula (n ens serveix per a buscar les aparicions següents i N, per a les an-

teriors), q per a sortir, etc. Els manuals del sistema es divideixen en diferents

seccions segons la seva naturalesa:

1) Programes executables (aplicacions, ordres, etc.).

2) Crides al sistema proporcionades per l'intèrpret d'ordres.

3) Crides a biblioteques del sistema.

4) Arxius especials (generalment els de dispositiu).

5) Format dels arxius de configuració.

6) Jocs.

7) Paquets de macros.

8) Ordres d'administració del sistema (generalment les que només el root pot

utilitzar).

9) Rutines del nucli.

Si hi ha més d'un manual disponible per a una mateixa paraula, el podem es-

pecificar indicant el número corresponent de la secció que ens interessa abans

de la paraula; per exemple, man 3 printf (man�-k�paraula buscarà entre les pà-

gines del manual les que tinguin la "paraula" passada com a argument, equiva-

lent a apropos, i mandb permetrà actualitzar la base de dades dels manuals).

Nota

Ordres complementàries:a) Manuals:• man <ordre>• man -k <paraula>b) Comprimir:• tar cvf <destinació> <ori-

gen>• tar zcvf <destinació> <ori-

gen>• gzip <file>• bzip <file>c) Espai de disc:• df -k• du -k <directori/file>d) Paràmetres de sistemad'arxius:• dumpe2fs <partició>

e) Sincronitzar sistemad'arxius:• sync

GNUFDL • PID_00167522 24 Nivell d'usuari

Si el manual no ens proporciona tota la informació que necessitem, podem

utilitzar la instrucció info, que és el mateix que el manual però amb informa-

ció estesa.

Una altra ordre útil és la utilitzada per a comprimir un arxiu, agrupar-ne di-

versos en un de sol o veure què conté un arxiu comprimit. Si bé hi ha desenes

de programes diferents en tots els sistemes GNU/Linux trobarem l'ordre tar.

Aquest programa ens permet manipular de qualsevol manera un o diversos ar-

xius per a comprimir-los, agrupar-los, etc. La seva sintaxi és tar�opcions�arxiu-

destinació�arxius-origen, en què si l'arxiu origen és una carpeta hi treballarà de

manera recursiva i desarà a l'arxiu de destinació el contingut de tota la carpeta.

Els paràmetres comuns són c per a crear i f si ho volem desar en un arxiu (tar cf

arxiu.tar o* empaquetarà tots els arxius del directori actual que comencin per

o). Si a més volguéssim comprimir, podríem utilitzar czf, i llavors s'utilitzaria

el programa gzip després d'empaquetar-los. Per a desempaquetar un arxiu de-

terminat, el paràmetre necessari és x, de manera que hauríem d'escriure tar xf

per a indicar l'arxiu empaquetat. Si estigués comprimit, hauríem de passar xzf.

El programa gzip (utilitzat pel tar per a comprimir) usa un format de compres-

sió propi i diferent del popular zip o del compress (estàndard en els *nix però

obsolet) i que es pot utilitzar per a comprimir un arxiu de manera independent

(gunzip per a fer el procés invers o gzip -u). Una altra aplicació de compressió

bastant utilitzada i que proporciona molt bons resultats és el bzip2.

La gestió i manipulació dels discos durs de l'ordinador és un altre aspecte fo-

namental en les tasques d'administració del sistema. Més endavant es veurà

tot un apartat per a discos, però ara tractarem les ordres útils per a obtenir

informació dels discos. El disc dur es divideix en particions, a les quals podem

accedir com si es tractés d'un dispositiu independent, i les denominarem uni-

tat. Això és molt útil perquè ens permet separar de manera adequada la infor-

mació que tinguem en el sistema, tenir més d'un sistema operatiu instal·lat al

mateix disc, etc. L'ordre df ens mostrarà, de cada unitat muntada en el sistema,

l'espai que s'ha utilitzat i el que queda lliure, i l'ordre du ens mostra realment

el que ens ocupa un fitxer en disc o un directori (ens ho mostrarà en blocs de

discos però amb el paràmetre -k en kilobytes).

Un disc és organitzat en pistes i dins de les pistes en sectors (zones on es desarà

la informació) i com aquest últim valor és configurable, quan es crea el sistema

d'arxius amb finalitats d'optimitzar les prestacions de disc o espai utilitzat ens

pot interessar veure aquests paràmetres (per a sistemes ext2/3/4), per la qual

cosa podem utilitzar l'ordre dumpe2fs�partició i esbrinar els paràmetres amb

els quals ha estat creat el disc.

Un altre concepte molt estès és la desfragmentació d'un disc, que no és més que

la reorganització dels blocs dels fitxers perquè quedin en llocs consecutius i

l'accés sigui més ràpid. En els sistemes de fitxers que utilitzem amb GNU/Linux

no és necessari desfragmentar els discos (encara que hi ha programes amb

GNUFDL • PID_00167522 25 Nivell d'usuari

aquesta finalitat), ja que el sistema s'encarrega automàticament de tenir el disc

sempre desfragmentat, i a més, en el procés d'arrencada sempre es comproven

els errors i es fa una desfragmentació total si és necessària.

L'optimització del sistema d'arxius de GNU/Linux prové del fet que totes les

funcions del nucli que s'encarreguen de la gestió de fitxers utilitzen uns mè-

todes per a agilitar els processos de lectura i escriptura. Un és la utilització

d'una memòria cau de disc per a evitar estar llegint constantment i escrivint al

disc físic (procés lent i costós). Això pot representar problemes si tenim un tall

d'alimentació, ja que les últimes operacions de lectura/escriptura no s'hauran

desat perquè són en memòria. El programa fsck comprova i arregla un sistema

de fitxers que hagi quedat en aquest estat. Encara que el podem executar quan

vulguem, el sistema operatiu mateix l'executa quan en el procés d'arrencada

detecta que el sistema no es va tancar adequadament. Per això, per a apagar

l'ordinador correctament hem d'executar l'ordre shutdown, que s'encarrega de

llançar tots els processos necessaris perquè els programes acabin, es desmunti

el sistema de fitxers, etc. En aquest sentit, el sistema de fitxers ext3/4, és més

eficaç que l'ext2, ja que el journaling li permet recuperar més informació dels

arxius perduts i de manera més eficient (la integritat física d'una partició es pot

comprovar amb l'ordre badblocks). Si bé no és aconsellable, es pot desactivar

la memòria cau de disc i si volem en algun moment bolcar de cau a disc, per

a evitar problemes podem executar l'ordre sync.

S'ha de tenir en compte que la majoria de les ordres esmentades s'han

d'executar com a root (o alguns dels usuaris que formin part del grup de root).

GNUFDL • PID_00167522 26 Nivell d'usuari

3. Instal·lació i arrencada de GNU/Linux (conceptesbàsics)

En aquest apartat veurem els passos essencials que se segueixen en la majoria

dels processos d'instal·lació de GNU/Linux, i que seran complementats poste-

riorment amb els tallers d'instal·lació. Si bé cada distribució té el seu entorn

d'instal·lació propi, en totes hi ha uns passos bàsics per a instal·lar el sistema

operatiu, i que es descriuran de manera resumida. És important notar que avui

dia qualsevol de les distribucions té una instal·lació molt optimitzada que ne-

cessita molt poca atenció de l'usuari, ja que obté informació del maquinari

subjacent, per la qual cosa, generalment, per a un usuari novell no és necessari

prendre decisions importants (distribucions com Ubuntu o Fedora, per exem-

ple, són instal·lacions pràcticament automàtiques).

També hem de tenir en compte que un usuari novell pot iniciar el seu camí

en el món Linux amb un altre tipus d'execucions de GNU/Linux que no mo-

difiquen l'ordinador i permeten treballar en el sistema operatiu sense haver-ne

d'instal·lar un altre. És altament recomanable iniciar els primers passos sobre

un GNU/Linux�live: l'usuari s'ha de baixar la imatge del sistema operatiu, cre-

ar-hi un CD o DVD i arrencar des d'aquest dispositiu sense tocar el disc dur de

la màquina. Aquest tipus de distribucions (és recomanable utilitzar Knoppix,

per la seva eficiència i versatilitat en les seves versions per a CD, DVD o USB)

tenen "l'inconvenient" que per a desar el treball de l'usuari s'ha de fer sobre un

dispositiu de disc USB, ja que si es desa sobre el sistema d'arxiu, com que és

a la RAM, es perdran les dades.

Una altra opció totalment recomanable com a introducció (o com a forma de

treball habitual) sense haver de tocar el sistema operatiu d'una màquina és

treballar amb màquines virtualitzades. Per a això, es recomana utilitzar Virtu-

alBox, que permet arrencar una imatge o instal·lar-ne una sobre un sistema

operatiu amfitrió (host); tant en 32 bits com en 64 bits és altament configurable

i si no volem fer una instal·lació es poden trobar gran quantitat de distribuci-

ons amb les seves imatges ja fetes, com per exemple a http://virtualboxes.org/

images/, que té aproximadament 30 distribucions de Linux i 15 distribucions

d'altres sistemes *nix o fins i tot d'Android o sistemes no *nix.

És important que abans d'instal·lar un nou sistema coneguem adequadament

els components maquinari que tenim instal·lats en el nostre ordinador per

a poder configurar-lo adequadament, encara que la distribució que utilitzem

incorpori detecció de maquinari. És possible que en un sol disc dur tinguem

instal·lats dos sistemes operatius (dualboot) o més totalment independents, i si

VirtualBox

VirtualBox que permet arren-car una imatge o instal·lar unSO sobre un altre SO amfi-trió (host) tant en 32 bits comen 64. Si no volem fer unainstal·lació des de 0 es pot tro-bar una gran quantitat de dis-tribucions amb les seves imat-ges ja fetes com per exem-ple en http://virtualboxes.org/images/.

GNUFDL • PID_00167522 27 Nivell d'usuari

bé el procés d'instal·lació d'un altre sistema operatiu al mateix disc no hauria

d'interferir amb les particions dels altres, és aconsellable fer còpies de seguretat

de tots els documents importants.

És necessari, abans de començar, tenir informació de la marca i el model de la

targeta gràfica, la de so, la de xarxa, la marca, el tipus i les característiques del

monitor, i també qualsevol altre maquinari especial que tinguem (la resta del

maquinari serà detectat pel sistema: placa base, la CPU i la memòria RAM).

Generalment, totes les distribucions de GNU/Linux proporcionen algun

tipus de mitjà per a l'arrencada del procés d'instal·lació, i el més comú

és un CD o DVD d'arrencada, per la qual cosa és necessari configurar

la BIOS perquè pugui arrencar (boot) des de CD/DVD. Les instal·lacions

són autoguiades i és important parar atenció a la selecció de l'idioma i

del teclat per a evitar problemes des de l'inici (si bé es podrà configurar

posteriorment).

Per a usuaris ja avançats, hi ha alguna altra manera d'instal·lar GNU/

Linux que permet fer la instal·lació des de qualsevol mitjà: FTP, HTTP,

disc dur, NFS, USB, però és recomanable no utilitzar-les com a primera

experiència.

La partició del disc dur és una de les parts més crítiques de tot el procés, ja

que implica dividir el disc dur en diverses seccions que seran considerades in-

dependents. Si ja tenim un sistema operatiu instal·lat al nostre ordinador, el

disc estarà particionat en una o diverses particions, però si el disc és nou, tin-

drà una única partició. Per a instal·lar GNU/Linux hem de disposar, almenys,

d'una partició per a ús propi (si bé és possible instal·lar-lo sobre altres sistemes

d'arxius, no és recomanable aquesta opció per qüestions de rendiment i fia-

bilitat) i una altra de més petita per a una extensió de la memòria RAM de

l'ordinador, anomenada partició de swap (generalment del doble de la memòria

RAM instal·lada).

El procediment més comú per a reduir, crear o canviar la mida de les partici-

ons és utilitzar eines com les disponibles a Windows Vista, 7 (Administració

de discos o l'aplicació fips amb llicència GPL i per a sistemes FAT) o en qual-

sevol Linux live. Es pot usar gparted per a modificar la mida d'una partició ja

creada sense perdre'n el contingut (si bé es recomana fer còpies de seguretat

dels arxius més importants). El procediment recomanable és engegar amb una

Linux live i utilitzar la instrucció gparted, que és molt eficient i segur.

Com a primer pas és recomanable que GNU/Linux utilitzi dues particions al

disc dur (una per al sistema de fitxers i l'altra per a la swap). Si bé totes les

distribucions tenen un particionament guiat, es pot fer de manera manual

amb diferents utilitats (fdisk, cfdisk, diskDruid, etc.). La manera com GNU/Li-

nux identifica els discos és amb /dev/hdX per als discos IDE i /dev/sdX per als

MBR

La informació de particions i elprograma de càrrega d'un sis-tema operatiu es desen en unazona de dades reservada ano-menada MBR (master boot re-cord) sobre el primer disc.

GNUFDL • PID_00167522 28 Nivell d'usuari

SCSI i Serial ATA, en els quals X és una lletra, corresponent al disc al qual ens

vulguem referir: /dev/hda és el mestre del primer canal IDE, /dev/hdb el segon i

així successivament (o /dev/sda el primer disc SCSI o SATA i /dev/sdb el segon,

etc.). L'aplicació d'instal·lació ens farà una llista dels discos i haurem d'escollir

sobre quin volem fer la instal·lació.

Quan creem una partició podrem escollir entre primària o lògica. En un disc

dur podem tenir fins a 4 particions primàries i fins a 64 lògiques. Si no neces-

sitem més de 4 particions, podem elegir qualsevol dels dos tipus. Si en neces-

sitem més, haurem de tenir en compte que les lògiques se situen dins d'una

de primària (fins a un màxim de 16 per a cada una), de manera que no podem

tenir 4 particions primàries creades i després afegir-ne de lògiques. En aquest

cas, n'hauríem de crear 3 de primàries i fins a 16 lògiques en la quarta partició

primària.

Quan es crea una partició s'ha d'indicar quin sistema de fitxers utilitzarà (Li-

nux ext3, Linux ext4, Linux swap o un altre) i una vegada fetes les particions,

desarem la configuració i hem d'indicar al procés d'instal·lació on volem situ-

ar l'arrel del sistema de fitxers (root filesystem) i la swap del sistema, i a partir

d'aquest moment es podrà continuar amb la instal·lació.

Una part important de la instal·lació són els mòduls del nucli, que són parts

de programari especialitzades que treballen amb alguna part del maquinari o

del sistema. En les distribucions actuals simplement s'ha de seleccionar quin

dispositiu tenim (monitor, xarxa, so, gràfics) i la instal·lació carregarà pràcti-

cament tots els mòduls necessaris, encara que en la majoria hi ha processos

d'autodetecció, per la qual cosa no serà necessari seleccionar pràcticament res.

Si algun mòdul no s'inclou durant la instal·lació, és possible fer-ho després

amb ordres com insmod o modprobe (per a afegir un nou mòdul), lsmod (per

a fer una llista dels instal·lats), rmmod (per a eliminar-ne algun) i també mod-

probe (per a provar-ne algun i, si funciona correctament, incloure'l en el nu-

cli). Tots aquests mòduls són fitxers binaris que solem trobar en el directori

/lib/modules/versió-del-sistema-operatiu/.

Després de configurar els mòduls que s'inclouran en el nucli del sistema ope-

ratiu, haurem de configurar la xarxa (si tenim la targeta necessària). Encara

que en aquest document no entrarem en detall sobre xarxes, descriurem els

conceptes necessaris per a poder fer aquest pas de manera bàsica. La primera

dada que sol·licitarà la instal·lació és el nom del sistema (per a referir-nos-hi

de manera amigable) i a continuació demanarà si a la nostra xarxa utilitzem

un mecanisme anomenat DHCP (consisteix a tenir un servidor especial que

s'encarrega d'assignar automàticament les IP als ordinadors que engeguen).

Si utilitzem aquest mecanisme, ho hem d'indicar, i si no, ens preguntarà la

IP (quatre nombres entre 0 i 255 separats per punts) i la màscara del nostre

ordinador (quatre nombres entre 0 i 255, i és comú utilitzar 255.255.0.0). Si

no coneixem aquestes dades, ens hem de dirigir a l'administrador de la nostra

Partició activa

De totes les particions d'undisc dur en podem elegir unaperquè sigui l'activa. Aquest in-dicador serveix per a indicara la BIOS o a l'EFI del sistema(sistema d'inicialització i càrre-ga del sistema operatiu) quinaés la partició que ha d'iniciar sien l'MBR no troba cap progra-ma d'arrencada.

GNUFDL • PID_00167522 29 Nivell d'usuari

xarxa. Seguidament haurem d'introduir l'IP de la passarel·la de la nostra xarxa

(dispositiu o ordinador que actua de pont entre la nostra xarxa local i Internet;

si no tenim cap dispositiu d'aquest tipus, podem deixar en blanc aquest camp).

A continuació, hem d'especificar el servidor (o servidors) de noms que utilit-

zem, anomenat DNS, que és una màquina que ens proporciona l'equivalència

entre un nom i una adreça IP (és a dir, ens permetrà conèixer per exemple la

IP de www.uoc.es de manera transparent). Si no sabem quins són, haurem de

recórrer a l'administrador de la xarxa.

Si som en una xarxa local podem consultar l'administrador perquè ens pro-

porcioni tota la informació necessària o, si tenim un altre sistema operatiu

instal·lat a l'ordinador, en podrem obtenir aquesta informació, però en cap cas

no hem d'inventar aquests valors, ja que si l'ordinador està connectat a una

xarxa local pot generar problemes a altres ordinadors.

Una vegada configurats aquests aspectes, haurem de seleccionar si volem

instal·lar un petit programa al disc dur perquè en el procés d'arrencada de

l'ordinador puguem elegir quin sistema operatiu dels que tenim instal·lats vo-

lem arrencar (fins i tot si només hem instal·lat GNU/Linux). Les aplicacions

més usuals són el lilo (Linux loader) o el grub (recomanat) (GNU, grand unifi-

ed bootloader), que tenen per objectiu iniciar el procés de càrrega i execució

del nucli del sistema operatiu que li indiquem interactivament o per defecte

després d'un temps d'espera. Totes les distribucions (si no hi ha problemes)

detecten si tenim algun altre sistema operatiu instal·lat en el disc dur i confi-

guren automàticament el sistema d'arrencada. Aquest programa generalment

s'instal·la en l'MBR del disc mestre del primer canal IDE o SCSI, que és el pri-

mer lloc que la BIOS o EFI de l'ordinador inspecciona buscant un programa

d'aquestes característiques.

L'últim pas de la instal·lació és la selecció de paquets per instal·lar a més dels

estrictament necessaris per al funcionament bàsic del sistema operatiu. La ma-

joria dels processos d'instal·lació inclouen dues maneres de seleccionar els pro-

grames del sistema: bàsic o expert. Amb el procés de selecció bàsic, s'agrupen

els paquets disponibles per a grans grups de programes: administració, desen-

volupament de programari, ofimàtica, matemàtiques, etc.; és una opció reco-

manable per a fer els primers passos. Si no seleccionem un paquet després

es podrà fer una instal·lació posterior amb l'eina de la qual disposen totes

les distribucions per a instal·lar o desinstal·lar paquets. Debian GNU/Linux

va ser una de les primeres a incloure aplicacions per a gestionar els paquets;

s'anomena apt i és molt útil per a fer el manteniment i actualització de tots

els paquets instal·lats fins i tot en el sistema operatiu mateix.

Si la instal·lació no ha funcionat correctament, pot passar que no puguem ar-

rencar cap dels sistemes operatius instal·lats (ni el nou ni l'anterior), però to-

tes les distribucions tenen un mode de rescat en l'arrencada (rescue mode), que

ens permetrà arrencar el sistema GNU/Linux des del CD/DVD, accedir al disc

Adreça IP

Una adreça IP és la identifica-ció d'un ordinador dins d'unaxarxa quan utilitzem el proto-col TCP/IP (protocol utilitzaten Internet).

GNUFDL • PID_00167522 30 Nivell d'usuari

dur i arreglar aquelles coses que no han funcionat o recuperar el sistema ope-

ratiu inicial, si bé per a alguns casos són necessaris una sèrie de coneixements

avançats en funció de quina hagi estat la causa d'error.

GNUFDL • PID_00167522 31 Nivell d'usuari

4. Configuracions bàsiques

4.1. El sistema d'entrada

Tant en mode gràfic com en mode text, el procediment d'identificació

i entrada es denomina connexió (login). Generalment, el sistema arren-

carà en mode gràfic, però podem passar a mode text seleccionant el tipus

de sessió al plafó d'entrada o amb Ctrl-Alt-Esborrar (que acaba l'execució

del servidor gràfic).

En mode text es llancen 5 terminals independents, als quals es pot accedir

mitjançant Alt-F1, Alt-F2, etc., que permetran treballar simultàniament amb

diferents comptes alhora. El procés de connexió posa en pantalla, primer, un

missatge que es pot modificar des de l'arxiu /etc/issue i que admet diferents

variables (\d, data actual, \s, nom del SO, \t, hora actual, etc.) i en segon lloc el

missatge del dia des de /etc/motd (creant un fitxer buit anomenat .hushlogin en

el nostre directori d'usuari s'anul·la aquest missatge). A continuació el procés

de connexió llança l'intèrpret per defecte per a l'usuari (indicat en l'últim camp

a /etc/passwd).

L'intèrpret d'ordres executa l'arxiu .profile del directori de l'usuari per a les op-

cions per defecte d'aquest mateix usuari, que es complementa amb /etc/pro-

file, que configura opcions per defecte per a tots els usuaris. Cada intèrpret

a més té arxius de configuració propis, com per exemple el shell Bash, que

executa, a més, dos fitxers més anomenats .bashprofile (que s'executa en cada

connexió) i .bashrc (que s'executa cada vegada que s'obre un nou terminal).

Veurem algunes de les instruccions que podem trobar en aquests arxius:

# ~/.profile: executat per l'intèrpret a l'entrada

# No serà llegit per bash si hi ha ~/.bash_profile o ~/.bash_login

# Vegeu-ne exemples a /usr/share/doc/bash/examples/startup-files

# El valor per defecte d'umask

umask 022

# Si està executant bash executa .bashrc si hi és

if [ -n "$BASH_VERSION" ]; then

if [ -f "$HOME/.bashrc" ]; then

. "$HOME/.bashrc"

fi

GNUFDL • PID_00167522 32 Nivell d'usuari

fi

# Inclou en PATH un directori bin de l'usuari

if [ -d "$HOME/bin" ] ; then

PATH="$HOME/bin:$PATH"

fi

# Canvia l'indicador (prompt)

export PS1='\h:\w\$ '

# ~/.bashrc: executat per bash(1) per a terminals no d'entrada.

# Si no s'executa interactivament no fa res.

[ -z "$PS1" ] && return

# Habilita el suport de color per a l'ordre ls

if [ -x /usr/bin/dircolors ]; then

eval "`dircolors -b`"

alias ls='ls --color=auto'

alias dir='dir --color=auto'

fi

# altres àlies

alias ll='ls -l'

# habilita programmable completion features

if [ -f /etc/bash_completion ]; then

. /etc/bash_completion

fi

Com es pot observar en aquests fitxers (que són un exemple de shell script i que

veurem més endavant), s'inclouen diferents definicions de variables (PATH,

per exemple, que és la variable on es buscaran els programes per a executar-

los sense haver d'incloure tot el camí; PS1, que és la variable que emmagat-

zema l'indicador –prompt–, que és el caràcter que surt a l'esquerra de la línia

d'ordres acabat en $ o % per a l'usuari normal i en # per al root). També tenim

àlies d'ordres o execució condicional d'altres arxius (en el primer si s'està exe-

cutant el bash executa el $HOME/.bashrc). Si es volen executar programes del

directori des del qual estem situats sense necessitat de posar ". /" al principi,

podríem afegir aquesta entrada en la declaració del PATH, però generalment

no s'inclou, ja que pot representar un forat de seguretat. Per al prompt hem

utilitzat l'ordre export per a definir les anomenades variables d'entorn, que es

mantenen durant tota la sessió i es poden consultar amb la mateixa ordre.

Amb set i unset també podem inicialitzar o treure altres variables o atributs

representats per defecte (amb echo�$variable podrem consultar el valor de

cada variable). Algunes de Bash són:

PWD: directori actual.

GNUFDL • PID_00167522 33 Nivell d'usuari

LOGNAME: nom de l'usuari connectat.

BASH_VERSION: versió del Bash que utilitzem.

SHELL: intèrpret d'ordres utilitzat.

RANDOM: genera un nombre aleatori diferent cada vegada que en mostrem

el contingut.

SECONDS: nombre de segons que han passat des que hem obert l'intèrpret

d'ordres.

HOSTNAME: nom del sistema.

OSTYPE: tipus de sistema operatiu que estem utilitzant.

MACHTYPE: arquitectura de l'ordinador.

HOME: directori personal de l'usuari.

HISTFILESIZE: mida de l'arxiu d'història (nombre d'ordres que es desen).

HISTCMD: número d'ordre actual en la història.

HISTFILE: fitxer en el qual es desa la història d'ordres.

La configuració addicional de la connexió gràfica es farà per mitjà de l'entorn

gràfic i dependrà del tipus d'entorn.

4.2. L'intèrpret d'ordres (shell)

Com ja hem avançat, el terme genèric shell s'utilitza per a denominar un pro-

grama que serveix d'interfície entre l'usuari i el nucli del sistema GNU/Linux.

En aquest apartat veurem algunes característiques bàsiques dels intèrpretsin-

teractius de text, que és el programa que veurà l'usuari (i l'atendrà) una vegada

fet el procediment de connexió.

L'intèrpretés el que els usuaris veuen del sistema, ja que la resta del sistema

operatiu roman ocult als seus ulls. L'intèrpret està escrit de la mateixa manera

que un procés (programa) d'usuari; no està integrat en el nucliis'executa com

un programa més de l'usuari.

Quan el sistema GNU/Linux arrenca, sol presentar als usuaris una interfície

d'entrada que pot ser gràfica o en mode text. Aquestes diferents entrades de-

pendran dels modes (o nivells) d'arrencada del sistema (runlevels), que perme-

tran configurar els modes d'arrencada del sistema operatiu.

La figura següent mostra l'arrencada shell en mode text i els processos de sis-

tema involucrats (OKe).

GNUFDL • PID_00167522 34 Nivell d'usuari

En el mode d'arrencada gràfica, la interfície està composta per algun gestor

d'accés que administra el procés de connexióde l'usuari des d'una pantalla

(caràtula) gràfica, en la qual se sol·licita la informació d'entrada corresponent:

el seu identificador com a usuari i la seva paraula de pas (contrasenya). En

GNU/Linux solen ser habituals els gestors d'accés: xdm (propi d'X Window),

gdm (Gnome) i kdm (KDE), i també algun altre associat a diferents gestors de

finestres (window managers) com mostra la figura següent:

Una vegada validat l'accés, l'usuari trobarà una interfície gràfica d'X Window

amb algun gestor de finestres, com Gnome o KDE (vegeu l'últim punt del capí-

tol). Des del mode gràfic també és possible "interactuar" amb el sistema per

mitjà d'un entorn de treball en mode text simplement obrint un emulador de

terminal o simplement terminal (p. ex., Xterm) des dels menús de la interfície

gràfica (en Gnome: Aplicacions → Accessoris → Terminal).

Si l'accés és en mode text (anomenat també modeconsola), una vegada identi-

ficats obtindrem l'accés a l'intèrpret de manera interactiva (es pot passar del

mode gràfic al text amb Crtl+Alt+F1 a F5, que permetrà tenir 5 consoles dife-

rents i tornar-hi amb Crtl+Alt+F7). Un altre mode de treball amb un intèrpret

interactiu és per mitjà d'una connexió remota des d'una altra màquina con-

nectada en xarxa i amb aplicacions com ara Telnet o rlogin (poc utilitzades per

insegures), ssh, o gràfiques com els emuladors X Window.

Una vegada iniciat l'intèrpret interactiu [Qui01], es mostra un indicador

d'ordres(símbol o seqüència de caràcters com $, %, # –utilitzat generalment

per a identificar l'usuari arrel o root– o també quelcom configurable per l'usuari

com MySys) que indica a l'usuari que pot introduir una línia d'ordres.

Després de la introducció, l'intèrpret assumeix la responsabilitat de validar la

sintaxi i posar els processos necessaris en execució, mitjançant una sèrie de

seqüències o fases:

1) Llegir i interpretar la línia d'ordres.

GNUFDL • PID_00167522 35 Nivell d'usuari

2) Avaluar els caràcters comodí com $ * ? o d'altres.

3) Gestionar les redireccions E/S necessàries, les canonades i els processos en

segon pla (background) necessaris (&).

4) Manejar senyals.

5) Preparar l'execució dels programes.

Normalment, les línies d'ordres podran ser execucions d'ordres del sistema,

ordres pròpies de l'intèrpret interactiu, l'engegada d'aplicacions o shell scripts

(seqüències d'ordres, variables, sentències de control, etc., que generalment es

troben en un arxiu ASCII).

Els fitxers de script són directament executables pel sistema sota el nom que

s'hagi donat al fitxer. Per a executar-los, s'invoca l'intèrpret juntament amb el

nom del fitxer, o bé es donen permisos d'execució al shell script.

En certa manera, podem veure el shell script com a codi d'un llenguat-

ge interpretat que s'executa sobre l'intèrpret interactiu corresponent. Per a

l'administrador, els shell scripts són molt importants bàsicament per dues ra-

ons:

1) La configuració del sistema i de la majoria dels serveis proporcionats es fan

mitjançant eines en formade shell scripts.

2) La manera principal d'automatitzar processos d'administració és mitjançant

la creació de shell scripts per part de l'administrador.

La figura següent mostra el flux de control bàsic d'un intèrpret d'ordres:

GNUFDL • PID_00167522 36 Nivell d'usuari

Tots els programes invocats mitjançant un intèrpret posseeixen tres fitxers pre-

definits, especificats pels descriptors de fitxers corresponents (file handles). Per

defecte, aquests fitxers són:

1)� standard� input� (entrada estàndard): normalment assignada al teclat del

terminal (consola); usa el descriptor número 0 (en UNIX els fitxers utilitzen

descriptors sencers).

2)�standard�output (sortida estàndard): normalment assignada a la pantalla

del terminal; usa el descriptor 1.

GNUFDL • PID_00167522 37 Nivell d'usuari

3)�standard�error (sortida estàndard d'errors): normalment assignada a la pan-

talla del terminal; utilitza el descriptor 2.

Això ens indica que qualsevol programa executat des de l'intèrpret tindrà per

defecte l'entrada associada al teclat del terminal, la seva sortida cap a la pan-

talla i, en el cas de produir-se errors, també els envia a la pantalla.

A més, els intèrprets poden proporcionar tres mecanismes següents de gestió

de l'E/S:

1)�Redirecció:�atès que els sistemes UNIX tracten de la mateixa manera els dis-

positius d'E/S i els fitxers, l'intèrpretels tracta a tots simplement com a fitxers.

Des del punt de vista de l'usuari, es poden reassignar els descriptors dels fitxers

perquè els fluxos de dades d'un descriptor vagin a qualsevol altre descriptor;

això s'anomena redirecció. Per exemple, ens referirem a la redirecció dels des-

criptors 0 o 1 com a la redirecció de l'E/S estàndard. Per a això s'utilitzen els

símbols > >> < <<; per exemple ls > dir.txt redirecciona la sortida de la instruc-

ció ls a un fitxer anomenat dir.txt, que si existeix s'esborra i desa la sortida de

l'ordre, i si no, es crea i es desa la sortida. Si fos ls >> dir.txt la sortida s'afegeix

al final si el fitxer existeix.

2)�Canonades�(pipes): la sortida estàndard d'un programa es pot usar com a

entrada estàndard d'un altre per mitjà de canonades. Diversos programes po-

den ser connectats entre si mitjançant canonades per a formar el que es deno-

mina un pipeline. Per exemple ls | sort | more, en què la sortida de la instrucció

ls s'ordena (sort) i la sortida d'aquest es mostra per pantalla en forma paginada.

3)�Concurrència�de�programes�d'usuari: els usuaris poden executar diversos

programes simultàniament, tot indicant que l'execució es produirà en segon

terme (background), oposat al primer terme (o foreground), en què es té un con-

trol exclusiu de pantalla. Una altra utilització consisteix a permetre tasques

llargues en segon terme quan interactuem l'intèrpret amb altres programes en

primer terme. Per exemple, ls >dir.txt & s'executarà en segon termei permetrà a

l'usuari continuar interactuant amb l'intèrpretmentre l'ordre es va executant.

L'intèrpret d'ordres per defecte és el que s'indica en l'últim camp del fitxer

/etc/passwd per a l'usuari, i es pot esbrinar des de la línia d'ordres pel valor de

la variable d'entorn amb el següent:

echo $SHELL

Algunes consideracions comunes a tots els intèrprets d'ordres:

• Tots permeten l'escriptura de shell scripts, que després són interpretats exe-

cutant-los o bé pel nom (si el fitxer té permís d'execució) o bé passant-lo

com a paràmetre a la instrucció de l'intèrpret.

GNUFDL • PID_00167522 38 Nivell d'usuari

• Els usuaris del sistema tenen un intèrpret associat per defecte. Aquesta in-

formació es proporciona en crear els comptes dels usuaris. L'administrador

assigna un intèrpret a cada usuari, o si no s'assigna l'intèrpret per defecte

(Bash en GNU/Linux). Aquesta informació es desa en el fitxer /etc/passwd,

i es pot canviar amb l'ordre chsh;aquesta mateixa ordre amb l'opció -l ens

fa una llista els intèrprets disponibles en el sistema (o vegeu també /etc/

shells).

• Cada intèrpret és en realitat una instrucció executable, normalment pre-

sent en els directoris /bin en GNU/Linux (o /usr/bin).

• Es poden escriure shell scripts en qualsevol intèrpret, però ajustant-se a la

sintaxi de cadascun, que normalment és diferent (de vegades hi ha només

petites diferències). La sintaxi de les construccions, i també les ordres in-

ternes, estan documentats a la pàgina man de cada intèrpret (man bash,

per exemple).

• Cada intèrpret té alguns fitxers d'arrencada associats (fitxers

d'inicialització), i cada usuari els pot adaptar a les seves necessitats, inclo-

ent-hi codi, variables, rutes (path)...

• La potència en la programació es troba a combinar la sintaxi de cada intèr-

pret (de les seves construccions), amb les ordres internes de cada intèrpret,

i una sèrie d'ordres UNIX molt utilitzades en els scripts, com per exemple

cut, sort, cat, more, echo, grep, wc, awk, sed, mv, ls, cp...

• Si com a usuaris estem utilitzant un intèrpret determinat, res no ens im-

pedeix arrencar una còpia nova de l'intèrpret (anomenat subshell), tant si

és el mateix com un altre de diferent. Senzillament, l'invoquem pel nom

de l'executable, ja sigui sh, bash, csh o ksh. També quan executem un shell

script es llança un subshell amb l'intèrpret que correspongui per a executar

l'script demanat.

Atesa la importància dels shell scripts en les tasques d'administració d'un siste-

ma UNIX, en el capítol següent es veuran alguns detalls més sobre l'intèrpret

i exemples de sintaxi i de programació.

4.3. El sistema d'arrencada

Ja hem vist en el punt anterior la manera de configurar durant la instal·lació

de l'arrencada del sistema per mitjà d'un gestor com lilo o grub (recomanable).

Com ja sabem, a partir de la BIOS o EFI, l'ordinador llegeix l'MBR del primer

disc mestre i executa el gestor d'arrencada (si no es troba aquest programa,

s'inspecciona el sector d'arrencada de la partició activa del disc) encara que

recomanem instal·lar grub a l'MBR, que és el primer lloc que s'inspecciona.

GNUFDL • PID_00167522 39 Nivell d'usuari

El grub ens permet múltiples configuracions, permet tenir un petit intèrpret

d'ordres en arrencar l'ordinador, i accedir als arxius de les particions del disc

sense carregar cap sistema operatiu, etc. En aquest subapartat només veurem

algunes configuracions bàsiques, però si es necessiten opcions avançades es

pot consultar la documentació existent a http://www.gnu.org/software/grub/

manual/grub.html.

El grub es carrega en dues fases i durant el procediment d'instal·lació ja es car-

reguen dos fitxers corresponents a cada fase. Si volem instal·lar el grub perquè

no ens mostri cap menú per a seleccionar el sistema operatiu que volem car-

regar, només hem d'executar l'ordre grub i des de l'indicador, executar:

install (hd0, 0)/boot/grub/stage1 d (hd0) (hd0, 0)/boot/grub/stage2

Aquesta instrucció instal·la el grub en l'MBR del disc mestre i, com podem

observar, la manera com es refereixen els discos difereix de la de GNU/Linux

(o lilo). A hdX la X, en lloc de a, b ..., és 0, 1..., i per a les particions també es

comença amb el 0 per a la primera, per la qual cosa hda1 serà en grub (hd0, 0).

El paràmetre d�(hd0) indica que la primera fase del grub s'instal·larà en l'MBR

del primer disc. L'última opció especifica on se situa el fitxer per a la segona

fase de càrrega, que és executada per la primera (una altra manera de fer la

instal·lació del grub és amb l'ordre grub-install).

El pas de paràmetres al nucli Linux en el moment de l'arrencada és molt sim-

ple. Per exemple, passant single o 1 iniciaria el sistema en el runlevel 1, amb ro-

ot=/dev/hda3 especificarem l'arrel del sistema de fitxers, etc. Si bé es poden in-

troduir les ordres interactivament, durant l'arrencada és recomanable utilitzar

un arxiu de configuració com el següent (els comentaris comencen per " # "):

# Arxiu menu.lst en /boot/grub

# Especificació del sistema operatiu que es carrega per defecte

default 0

# Espera de 10 segons abans de carregar el sistema per defecte

timeout 10

# Configuració d'arrencada per a un sistema GNU/Linux

title Debian GNU/Linux

kernel (hd0, 0) /vmlinuz root=/dev/hda1

# Configuració d'arrencada per a un sistema Windows

title Windows

root (hd0, 2)

makeactive

GNUFDL • PID_00167522 40 Nivell d'usuari

Per a instal·lar grub amb aquest menú d'arrencada, hauríem d'executar la ma-

teixa instrucció que anteriorment, però afegint el paràmetre p (hd0, 0)/boot/

grub/menu.lst.

Normalment és la manera habitual de treballar, i per això només haurem

d'entrar a /boot/grub i modificar aquest arxiu. L'arxiu de configuració accepta

diversos paràmetres, a més dels esmentats, com els següents:

• Colors:

color cyan/blue white/blue

• passwd (per a evitar que es pugui editar l'arxiu durant l'arrencada):

password ['--md5'] passwd

• Càrrega�d'un�nucli�específic�amb�initramfs:

title Debian GNU/Linux, kernel 2.6.26-2-686

root (hd0,0)

kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet

initrd /boot/initrd.img-2.6.26-2-686

• Càrrega�d'un�nucli�específic�amb�initramfs�i�en�mode�single�user:

title Debian GNU/Linux, kernel2.6.26-2-686 (single-user mode)

root (hd0,0)

kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro single

initrd /boot/initrd.img-2.6.26-2-686

La càrrega d'un nucli (kernel) amb una imatge anomenada initrd fa referència

a un disc RAM (generat amb mkinitramfs), que es carrega en el moment de

l'arrencada per a accedir a diferents mòduls que s'annexaran al nucli. Aquest

tipus de configuració permet tenir un nucli general i agregar els dispositius en

el moment de la càrrega (mòduls), per la qual cosa podríem utilitzar el nucli en

diferents màquines i amb diferent maquinari només canviant la imatge dels

mòduls de l'initrd.

4.4. Accés a particions i dispositius

Els sistemes tipus Unix tracten tots els dispositius de l'ordinador com si fossin

arxius. Això permet total flexibilitat, ja que es poden aprofitar tots els meca-

nismes i les funcions que s'utilitzen amb fitxers per als dispositius. En el direc-

GNUFDL • PID_00167522 41 Nivell d'usuari

tori /dev es tenen tots els dispositius reconeguts pel sistema. Si el sistema no

reconeix adequadament un dispositiu o volem crear-ne un d'especial, es pot

utilitzar l'ordre mknod, però s'ha d'utilitzar amb compte, ja que l'ús incorrecte

podria danyar parts del sistema.

Per a les unitats d'emmagatzemament, el sistema proveeix instruccions com

mount i umount, que situen (munten) o desmunten tot el sistema d'arxius d'un

determinat dispositiu o unitat en un directori existent del sistema. La mane-

ra bàsica d'utilitzar l'ordre és mount�dispositiu�directori, en què el dispositiu

pot ser qualsevol del canal IDE o SCSI (/dev/hdXX, /dev/sdXX), la disquetera

(/dev/FDX), memòries USB, etc., i directori és la ubicació en la qual muntarem

l'estructura de fitxers del dispositiu, i si el sistema d'arxius no és el mateix amb

el qual estem treballant, s'haurà d'agregar el paràmetre -t filesystem, en què

filesystem és una sigla que es pot consultar a la pàgina del manual de mount.

És recomanable que el directori en el qual muntem aquests dispositius sigui

buit, ja que quan s'utilitza com a punt de muntatge no s'hi pot accedir. Per

a desmuntar un d'aquests dispositius, podem utilitzar umount�directori, en

què el directori ha de ser el punt de muntatge utilitzat. Si muntem dispositius

mòbils com CD o USB, és important no treure el dispositiu del suport, ja que

abans hem d'avisar al sistema perquè actualitzi la memòria cau del sistema de

fitxers del dispositiu (o actualitzar les taules internes en el cas que el dispositiu

solament sigui de lectura). Igualment, tampoc no podem desmuntar el dispo-

sitiu si algun usuari o aplicació està utilitzant algun dels arxius o directoris (en

intentar-ho, el sistema donaria un missatge d'error).

Per defecte, per a poder muntar i desmuntar sistemes d'arxiu, es necessiten

privilegis de superusuari, però es poden cedir aquests permisos a usuaris "ad-

ministradors" afegint una entrada en el fitxer /etc/sudoers, de manera que amb

l'ordre sudo mount ... l'usuari habilitat podrà fer tasques permeses només al root

(consulteu el manual de mount per a altres opcions en el treball amb dispo-

sitius i particions, com per exemple rw, suid, dev, exec, auto, nouser, async, que

són les considerades per defecte).

Tot el muntatge de particions i dispositius es pot fer durant la inicialització del

sistema operatiu per mitjà d'entrades en l'arxiu /etc/fstab. Un exemple típic

d'aquest arxiu és:

# /etc/fstab: static file system information.

#

# <file system> <mount point> <type> <options> <dump> <pass>

proc /proc proc defaults 0 0

/dev/hda1 / ext3 errors=remount-ro 0 1

/dev/hda5 none swap sw 0 0

/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0

GNUFDL • PID_00167522 42 Nivell d'usuari

Cada línia és un mount i els paràmetres són (en ordre): dispositiu per mun-

tar, on es munta, tipus de sistema d'arxius (auto perquè ho detecti automàtica-

ment), opcions de muntatge, especificació de si volem fer còpies de seguretat

(dump), i l'últim camp serveix per a indicar l'ordre de muntatge (0, indica que

l'ordre no és important). L'arrel del sistema d'arxius és el primer que s'ha de

muntar, i per això en aquest camp hi hauria d'haver un 1. Una entrada que

sempre veurem en aquest fitxer i que ens pot sorprendre és el directori /proc,

que té un significat especial. Realment, el que hi ha en aquest directori no són

fitxers, sinó el valor de moltes de les variables que utilitza el nucli del sistema,

que permetrà ajustar paràmetres del nucli com si es tractessin d'un arxiu.

És interessant consultar l'ordre autofs, que permet muntar automàticament

un sistema d'arxiu quan es detecta la inserció d'un dispositiu en el sistema.

4.5. Configuració de dispositius

És important, abans d'intentar configurar algun dispositiu, buscar-ne informa-

ció, i fins i tot abans de comprar-ne un, assegurar-se que disposa de controla-

dors compatibles amb la versió amb què pretenem treballar.

1)�Teclat

Si comencem pel teclat, és important que funcioni d'acord amb el mapa de

caràcters configurat en el procés d'instal·lació. Aquest mapa de caràcters es

troba a /etc/console/boottime.kmap.gz, i si canviem de teclat, només s'ha de

canviar aquest fitxer per l'adequat, que es troba a /usr/share/keymaps/ ordenat

per arquitectures d'ordinadors i països (d'aquests arxius es pot canviar alguna

de les seves entrades per a adaptar-les a les nostres necessitats). Es pot veure el

número que correspon a cada tecla executant com a root l'ordre showkey. Si no

volem reiniciar el sistema en canviar l'arxiu de configuració de teclat, podem

utilitzar l'ordre loadkeys;�dumpkeys ens mostra les que estan configurades

i consolechars permet carregar la lletra que volem per al terminal. Un altre

aspecte relacionat amb el teclat és el tema dels accents, les dièresis, que es

poden configurar a partir del fitxer /etc/inputrc (totes les directives possibles

d'aquest fitxer les tenim especificades al manual de readline). La que pot ser

més útil és la de convert-meta, que en desactivar-la (set convert-meta off) ens

permet utilitzar els accents i les dièresis.

Finalment, una altra configuració important (indirectament relacionada amb

el teclat) és la local, en què es pot configurar la zona geogràfica en la qual ens

trobem per a poder utilitzar tecles especials del teclat, veure les dates en el

format correcte, etc. Aquesta configuració és utilitzada per moltes de les bibli-

oteques del sistema, de manera que en moltes ordres i aplicacions s'utilitzarà

aquesta configuració per a adaptar algunes funcions de l'entorn local. Aquesta

configuració es troba a /etc/locale.gen i es poden utilitzar les ordres locale-gen

i locale, veure-les o actualitzar-les.

Nota

Una altra manera de recon-figurar el mapa de tecles i laconfiguració local en Debianés apt-reconfigure console-datai apt-reconfigure locales, respec-tivament.

GNUFDL • PID_00167522 43 Nivell d'usuari

2)�Targeta�de�xarxa�(Ethernet)

Per a configurar una nova targeta de xarxa (de tipus Ethernet), en primer lloc,

cal afegir el mòdul necessari perquè es reconegui adequadament. Si bé no és

necessari per a algunes targetes, ens hem d'assegurar (abans de comprar la

targeta) que tenim el controlador o mòdul necessari.

Amb l'ordre discover podem saber quin tipus de maquinari tenim i trobar el

mòdul corresponent. Si es vol deixar configurat perquè es carregui, s'haurà

d'incloure a /etc/modules (o també es pot utilitzar modprobe o insmode). Per

a configurar-la a /etc/network/interfaces, es podrà especificar (en Debian) la

configuració de les interfícies del sistema. Una interfície és un dispositiu (real

o lògic) relacionat amb la xarxa a partir del qual el sistema es podrà comunicar.

Un exemple podria ser:

# Interfície de loopback

auto lo

iface lo inet loopback

# NIC auto eth0

iface eth0 inet static

address 192.168.0.10

netmask 255.255.255.0

network 192.168.0.0 # opcional

broadcast 192.168.0.255 # opcional

gateway 192.168.0.1 # opcional

La primera entrada d'aquest arxiu és la interfície de loopback. Aquesta interfície

no es correspon amb cap targeta ni dispositiu real de l'ordinador i permet uti-

litzar els mecanismes de comunicació internament. La directiva auto, davant

del dispositiu, indica que es pot muntar automàticament quan el sistema ar-

renca. La directiva iface especifica el tipus de targeta i protocol que s'hi utilit-

zarà mitjançant la sintaxi iface dispositiu protocol configuració. Per a les targetes

Ethernet, el dispositiu serà ethX, en què la X serà un nombre, començant per

0, que indica el número de targeta instal·lada a l'ordinador. La família del pro-

tocol de comunicació utilitzat amb la targeta sol ser inet per al protocol IPv4

utilitzat a Internet i inet6 per a la nova versió d'IPv6, i en l'últim camp s'indica

com s'obté la configuració de xarxa de la targeta (la seva adreça IP, la xarxa

on es troba, la passarel·la que cal utilitzar, etc.), amb les possibilitats següents

(bàsiques):

• static: haurem de proveir address (adreça IP de la interfície), netmask (màs-

cara de l'adreça IP), gateway (adreça IP de la passarel·la que utilitzem per

a aquesta interfície).

GNUFDL • PID_00167522 44 Nivell d'usuari

• dhcp: per a configurar de manera remota la IP dels ordinadors d'una xarxa

local (dynamic host configuration protocol).

Per a manejar la configuració de xarxa tenim diferents ordres, com ifconfig

(visualitza i configura els dispositius), ifdown i ifup (per a apagar o encendre

la interfície) o route (que ens mostra la taula d'encaminament).

3)�Targeta�sense�fil�(Wi-Fi)

Per a configurar la xarxa sense fil (wireless LAN o Wi-Fi) haurem d'afegir al nu-

cli els mòduls necessaris o utilitzar els que ja estan compilats en el nucli ma-

teix. Se segueix la mateixa norma de nom de dispositius que per a les targetes

Ethernet, i en /etc/network/interfaces (en Debian) haurem d'afegir la configu-

ració necessària perquè s'assigni una IP com en l'exemple següent (considerem

que és el segon dispositiu, per la qual cosa serà eth1):

# Wireless network

auto eth1

iface eth1 inet dhcp

wireless_essid miwifi

wireless_channel 6

wireless_mode managed

wireless_keymode open

wireless_key1 millavehexadecimal

wireless_key2 s: millaveascii

wireless_defaultkey 1

Els paràmetres subsegüents a iface els podrem trobar a la pàgina del manual de

l'ordre iwconfig, que és la que s'utilitza per a configurar els dispositius sense

fil.

4)�Targeta�de�so

Igual com en els casos anteriors, la targeta de so també necessita el mòdul del

nucli per a poder funcionar correctament. Amb l'aplicació discover, podem

descobrir quin mòdul és el que es correspon amb la nostra targeta o amb l'ordre

lspci�|�grep�audio. Per a instal·lar el mòdul, procedirem com amb la targeta

de xarxa amb insmod o modprobe, per a configurar-lo permanentment a /etc/

modules. Si bé amb el mòdul corresponent ja podrem utilitzar la targeta de

so adequadament, generalment també se sol instal·lar la infraestructura de so

ALSA (Advanced Linux Sound Architecture) inclosa per defecte en la majoria

de les distribucions.

5)�Impressora

GNUFDL • PID_00167522 45 Nivell d'usuari

En GNU/Linux la configuració d'impressores es pot fer de diferents mane-

res, si bé lpd (line printer daemon) va ser un dels primers programes de gestió

d'impressió, actualment n'hi ha d'altres més fàcils de configurar i gestionar.

Els més bàsics són:

• lpd: un dels primers dimonis d'impressió dels sistemes tipus Unix. La con-

figuració s'ha de fer manualment.

• lpr: la versió de BSD de l'lpd. És molt recomanable utilitzar algun tipus de

filtre automàtic com magicfilter o apsfilter per a configurar-lo.

• LPRng: aplicacions basades en lpr, amb l'avantatge que incorporen una

eina de configuració denominada lprngtool, que permet configurar-la de

manera gràfica i senzilla.

• gnulpr: la versió de GNU del sistema d'impressió lpr. També incorpora

eines gràfiques de configuració, gestió dels serveis, etc.

• CUPS� (recomanat): de Common UNIX Printing System, aquest conjunt

d'aplicacions és compatible amb les ordres d'lpr i també serveix per a xar-

xes Windows.

Normalment, totes aquestes ordres tenen els seus mètodes de configuració

propis, però utilitzen el fitxer /etc/printcap per a desar-la i utilitzen un dimo-

ni (procés que s'executa indefinidament) perquè el sistema d'impressió sigui

operatiu i fins i tot es pugui imprimir des d'altres ordinadors.

GNUFDL • PID_00167522 46 Nivell d'usuari

5. L'entorn gràfic

Els sistemes *nix utilitzen una arquitectura d'entorn gràfic anomenada X-Win-

dow, dissenyada en la dècada dels vuitanta, que és independent de la plata-

forma i serveix per a qualsevol tipus de *nix. X.Org és una implementació

de codi obert del sistema X-Window (que sorgeix com a bifurcació de pro-

jecte XFree86) i funciona en mode client/servidor, de manera que no podem

connectar gràficament un servidor remot o executar sobre un ordinador lo-

cal aplicacions gràfiques d'un ordinador remot. Avui dia es treballa juntament

amb una infraestructura de DRI (Direct Rendering Infrastructure), que permet

aprofitar els xips de processament de les targetes per a estalviar treball de vi-

sualització al client X-Window.

El sistema X-Window (basat en una biblioteca anomenada xlibs) proporcio-

na els mètodes per a crear les interfícies gràfiques d'usuaris (GUI), però no

n'implementa cap sinó que aquestes són proporcionades per jocs d'eines (to-

olkits), que són biblioteques generalment implementades amb xlibs i que pro-

porcionen un GUI particular. El gestor de finestres és un servidor especial de

X-Window, que s'encarrega de gestionar totes les finestres, els escriptoris, les

pantalles virtuals, etc. Òbviament, totes les aplicacions poden funcionar amb

qualsevol gestor de finestres, ja que aquest només s'encarrega de gestionar la

finestra on està ubicat el programa, i n'hi ha desenes (WMaker, sawmill, olvwm,

etc.), de manera que l'usuari pot elegir el que més li agradi.

Un altre tipus de programari molt relacionat amb X-Window és el que

s'encarrega de proporcionar un entorn integrat per a les aplicacions,

l'escriptori, les eines d'administració del sistema, etc. Els més populars actual-

ment són KDE (K Desktop Environment) i GNOME (GNU Network Object Mo-

del Environment). Tots dos proporcionen un joc d'eines particular, un entorn

d'escriptori amb moltes funcionalitats i configuracions diferents i una llista

d'aplicacions integrades, que com més va creix més, i són els més usats en totes

les distribucions GNU/Linux. A les figures següents podem veure en primer

lloc l'aspecte de KDE i en segon el GNOME (a http://www.xwinman.org/ es

poden veure diferents gestors de finestres i entorns):

GNUFDL • PID_00167522 47 Nivell d'usuari

Actualment, la majoria de les targetes gràfiques del mercat estan suportades

i molts fabricants ja donen suport per a GNU/Linux i proporcionen els seus

controladors propis (drivers).

Per a instal·lar X.Org al nostre ordinador, és necessari baixar els paquets que

contenen les eines bàsiques i el programari per al client i el servidor. General-

ment, aquests paquets se solen denominar xorg, xserver-xorg, etc., i porten im-

plícites diverses dependències de fonts i algunes utilitats bàsiques per al ma-

neig d'X-Window (es pot utilitzar en Debian apt-cache�search�Xorg per a veu-

re els servidors disponibles i apt-get�install�<Xorg.server> per a instal·lar-ne

un en particular). Una vegada instal·lats aquests paquets, hem de configurar

adequadament els dispositius de què disposem per a poder arrencar correcta-

ment el client i el servidor X-Window. En Debian podem utilitzar l'ordre dex-

conf, que utilitzarà la base de dades debconf per a generar l'arxiu de configu-

ració de l'entorn gràfic (normalment ubicat a /etc/X11/xorg.conf).

GNUFDL • PID_00167522 48 Nivell d'usuari

Per a provar la configuració podem executar startx i una vegada que tenim

la pantalla en mode gràfic, en podem canviar la resolució amb les tecles Ctrl-

Alt+ Ctrl-Alt o tornar als terminals de text amb Ctrl-Alt-F1-F5, i amb Ctrl-Alt-

F7 tornaríem a la gràfica. Amb Ctrl-Alt-Esborrar acabaríem la sessió gràfica i

tornaríem al terminal text.

GNUFDL • PID_00167522 49 Nivell d'usuari

Activitats

1. Analitzeu les ordres següents i els seus paràmetres principals:

passwd,�pwd,�cd,�ls,�chmod,�chown,�chgrp,�vi,�man,�cat,�cp,�date,�df,�du,�find,�mail,�mk-dir,�more,�page,�mv,�rm,�rmdir,�who,�w,�ps,�cal,�clear,�zip,�gzip,�compress,�uncompress,dc,�diff,�env,�expr,�exit,�file,�grep,�kill,�ln,�lp,�mesg,�nice,�nohup,�quota,�sed,�awk,�ftp,telnet,�sleep,�sort,�su,�sudo,�tail,�tar,�tee,�pstree,�test,�users,�wc,�write,�cut,�head.

2. Instal·leu VirtualVox sobre un sistema operatiu amfitrió del qual disposeu i carregueu unaimatge ja configurada, tot verificant que el sistema funcioni (incloent-hi sistema gràfic, xarxa,accés a disc de l'amfitrió, etc.).

3. Repetiu el punt anterior instal·lant el sistema des dels CD o DVD enviats per la UOC.

Programació d'ordrescombinades (shellscripts) Remo Suppi Boldrito PID_00167523

GNUFDL • PID_00167523 Programació d'ordres combinades (shell scripts)

© 2010, FUOC. Es garanteix el permís per a copiar, distribuir i modificar aquest document segons els termes de la GNU FreeDocumentation License, Version 1.2 o qualsevol altra de posterior publicada per la Free Software Foundation, sense seccionsinvariants ni textos de la coberta anterior o posterior. Hi ha una còpia de la llicència en l'apartat "GNU Free DocumentationLicense" d'aquest document.

GNUFDL • PID_00167523 Programació d'ordres combinades (shell scripts)

Índex

Introducció.................................................................................................. 5

1. Introducció: l'intèrpret d'ordres.................................................... 7

1.1. Redireccions i pipes....................................................................... 9

1.2. Aspectes generales ....................................................................... 9

2. Elements bàsics d'un shell script.................................................... 11

2.1. Què és un shell script? ................................................................. 11

2.2. Variables i matrius (arrays) .......................................................... 12

2.3. Estructures condicionals ............................................................. 14

2.4. Els bucles ..................................................................................... 16

2.5. Funcions, select, case, arguments i altres qüestions .................... 17

2.6. Filtres: grep.................................................................................... 25

2.7. Filtres: Awk .................................................................................. 26

2.8. Exemples complementaris .......................................................... 29

Activitats...................................................................................................... 33

Bibliografia................................................................................................. 34

GNUFDL • PID_00167523 5 Programació d'ordres combinades (shell scripts)

Introducció

En aquest mòdul veurem la importància fonamental que té l'intèrpret d'ordres

o instruccions (shell) i sobretot analitzarem amb cert detall les seves possibili-

tats per a executar fitxers d'ordres seqüencials i escrits en text pla (ASCII), que

seran interpretats pel shell. Aquests fitxers, anomenats shell scripts, són l'eina

fonamental de qualsevol usuari avançat, i imprescindibles per a un adminis-

trador de sistemes *nix.

GNUFDL • PID_00167523 7 Programació d'ordres combinades (shell scripts)

1. Introducció: l'intèrpret d'ordres

L'intèrpret (shell) és una peça de programari que proporciona una in-

terfície per als usuaris en un sistema operatiu i que proveeix accés als

serveis del nucli. El seu nom anglès prové de l'embolcall extern d'alguns

mol·luscs, ja que és la part externa que protegeix el nucli.

Els intèrprets (o shells) es divideixen en dues categories: línia d'ordres i de grà-

fics, depenent de si la interacció es fa mitjançant una línia d'instruccions (CLI)

o en mode gràfic per mitjà d'una GUI. En qualsevol categoria l'objectiu princi-

pal de l'intèrpret és invocar o "llançar" un altre programa; tanmateix, solen te-

nir capacitats addicionals, com ara veure el contingut dels directoris, interpre-

tar ordres condicionals, treballar amb variables internes, gestionar interrupci-

ons, redirigir entrada/sortida, etc.

Si bé un intèrpret gràfic és agradable per a treballar i permet a usuaris sense

gaires coneixements exercir-se amb certa facilitat, els usuaris avançats prefe-

reixen els de mode text, ja que permeten una manera més ràpida i eficient de

treballar. Tot és relatiu, ja que en un servidor és probable que un usuari admi-

nistrador no utilitzi ni tan sols interfície gràfica, mentre que un usuari d'edició

de vídeo mai no treballarà en mode text. El principal atractiu del sistema *nix

és que també en mode gràfic es pot obrir un terminal i treballar en mode text

com si estigués en un intèrpret de text, o canviar interactivament del mode

gràfic i treballar en mode text (fins amb 5 terminals diferents) i després tornar

al mode gràfic amb una simple combinació de tecles. En aquest apartat ens

dedicarem a l'intèrpret en mode text i a les característiques avançades en la

programació de shell scripts.

Entre els intèrprets més populars (o històrics) en els sistemes *nix tenim:

• Bourne shell (sh).

• Almquist shell (ash) o la seva versió de Debian (dash).

• Bourne-Again shell (bash).

• Korn shell (ksh).

• Z shell (zsh).

• C shell (csh) o la versió Tenex C shell (tcsh).

El Bourne shell ha estat l'estàndard de facto en els sistemes *nix, ja que va ser

distribuït per Unix Version 7 el 1977, i Bourne-Again (Bash) és una versió mi-

llorada del primer escrita pel projecte GNU sota llicència GPL, la qual s'ha

transformat en l'estàndard dels sistemes GNU/Linux. Bash serà l'intèrpret que

analitzarem, ja que, a més de ser l'estàndard, és molt potent, té característi-

GNUFDL • PID_00167523 8 Programació d'ordres combinades (shell scripts)

ques avançades, recull les innovacions plantejades en altres intèrprets i per-

met executar sense modificacions (generalment) scripts fets per a qualsevol

intèrpret amb sintaxi compatible amb Bourne shell. L'ordre cat�/etc/shells ens

proporciona els intèrprets coneguts pel sistema Linux, independentment de

si estan instal·lats o no. L'intèrpret per defecte per a un usuari s'obtindrà de

l'últim camp de la línia corresponent a l'usuari del fitxer /etc/passwd i canviar

d'intèrpret simplement significa executar el nom de l'intèrpret sobre un ter-

minal actiu, per exemple:

RS@DebSyS:~$ echo $SHELL

/bin/bash

RS@DebSyS:~$ tcsh

DebSyS:~>

Una part important és el que es refereix als modes d'execució d'un intèr-

pret. S'anomena login interactiu o entrada interactiva quan prové de l'execució

d'una entrada, fet que implicarà que s'executaran els arxius /etc/profile, ~/

.bash_profile, ~/.bash_login o ~/.profile (la primera de les dues que existeixi i

es pugui llegir) i ~/.bash_logout quan acabem la sessió. Quan és de no-conne-

xió interactiu (s'executa un terminal nou) s'executarà ~/.bashrc, ja que un bash

interactiu té un conjunt d'opcions habilitades respecte a si no ho és (consulteu

el manual). Per a saber si l'intèrpret és interactiu, executeu echo�$- i ens haurà

de respondre himBH, en què i indica que sí que ho és.

Hi ha un conjunt d'ordres internes1 en l'intèrpret, és a dir, integrats amb el

codi d'intèrpret, que per a Bourne és:

:, ., break,�cd,�continue,�eval,�exec,�exit,�export,�getopts,�hash,�pwd,�rea-

donly,�return,�set,�shift,�test,�[,�times,�trap,�umask,�unset.

I a més el Bash inclou:

alias,�bind,�builtin,�command,�declare,�echo,�enable,�help,�let,�local,�lo-

gout,�printf,�read,�shopt,�type,�typeset,�ulimit,�unalias.

Quan el Bash executa un shell script, crea un procés fill que executa un altre

Bash, el qual llegeix les línies de l'arxiu (una línia per vegada), les interpreta

i executa com si vinguessin del teclat. El procés Bash pare espera mentre el

Bash fill executa l'script fins al final, en què el control torna al procés pare,

el qual torna a posar l'indicador o prompt novament. Una ordre d'intèrpret és

una cosa tan simple com touch�arxiu1�arxiu2�arxiu3; consisteix en l'ordre

seguida d'arguments, separats per espais, arxiu1 és el primer argument i així

successivament.

(1)Consulteu el manual per a unadescripció completa.

GNUFDL • PID_00167523 9 Programació d'ordres combinades (shell scripts)

1.1. Redireccions i pipes

Hi ha tres descriptors de fitxers: stdin, stdout i stderr (l'abreviatura std significa

'estàndard'), i en la majoria dels intèrprets (fins i tot en Bash) es pot redirigir

stdout i stderr (junts o separats) a un fitxer, stdout a stderr i viceversa, en què el

número 0 representa stdin, 1 stdout, i 2 stderr.

Per exemple, enviar stdout de l'ordre ls a un fitxer serà ls�-l�>�dir.txt, en què es

crearà un fitxer anomenat dir.txt, que contindrà el que es veuria a la pantalla

si s'executés ls -l

Per a enviar la sortida stderr d'un programa a un fitxer, escriurem grep�xx�yy

2�>�error.txt. Per a enviar l'stdout a l'stderr, farem grep�xx�yy�1�>�&�2 i a la

inversa simplement intercanviant l'1 per 2, és a dir, grep�xx�yy�2�>�&�1.

Si volem que l'execució d'una ordre no generi activitat per pantalla, la qual

cosa es denomina execució silenciosa, només hem de redirigir totes les seves

sortides a /dev/null; per exemple, pensant en una ordre del cron que volem

que esborri tots els arxius acabats en .mov del sistema: rm�-f�$(find�/�-name

"*.mov")�&�>�/dev/null. Però s'ha d'anar amb compte i estar molt segur, ja

que no tindrem cap sortida per pantalla.

Els pipes permeten utilitzar de manera simple tant la sortida d'una ordre com

l'entrada d'una altra; per exemple, ls�-l�|�set�-i�"s/[aeio]/u/g", en què s'executa

l'ordre ls, i la seva sortida, en comptes d'imprimir-se a la pantalla, s'envia (per

un tub o pipe) al programa set, que imprimeix la seva sortida corresponent. Per

exemple, per a buscar en el fitxer /etc/passwd totes les línies que acabin amb

false podríem fer cat�/etc/passwd�|�grep�false$, en què s'executa el cat, i la

seva sortida es passa al grep (el símbol $ al final de la paraula indica al grep

que és final de línia).

1.2. Aspectes generales

Si l'entrada no és un comentari, és a dir (deixant de banda els espais en

blanc i tabulador), la cadena no comença per #, l'intèrpret llegeix i el di-

videix en paraules i operadors, que es converteixen en ordres, operadors

i altres construccions. A partir d'aquest moment, es fan les expansions

i substitucions, les redireccions, i finalment, l'execució de les ordres.

En el Bash es podran tenir funcions, que són una agrupació d'ordres que es

poden invocar posteriorment. I quan s'invoca el nom de la funció d'intèrpret

(s'usa com un nom d'ordre simple), la llista d'ordres relacionades amb el nom

de la funció s'executarà tenint en compte que les funcions s'executen en el

context de l'intèrpret en curs, és a dir, no es crea cap procés nou per a això.

GNUFDL • PID_00167523 10 Programació d'ordres combinades (shell scripts)

Un paràmetre és una entitat que emmagatzema valors, que poden ser un nom,

un nombre o un valor especial. Una variable és un paràmetre que emmagat-

zema un nom i té atributs (1 o més o cap) i es creen amb la sentència declare i

es treuen amb unset; i si no els donem dóna valor, tenen assignada la cadena

nul·la.

Finalment, hi ha un conjunt d'expansions que fa l'intèrpret que es du a terme

en cada línia i que poden ser enumerades com: d'accent/cometes, paràmetres i

variables, substitució d'ordres, d'aritmètica, de separació de paraules i de noms

d'arxius.

GNUFDL • PID_00167523 11 Programació d'ordres combinades (shell scripts)

2. Elements bàsics d'un shell script

2.1. Què és un shell script?

Un shell script és simplement un arxiu (mysystem.sh per a nosaltres) que té el

contingut següent (hem numerat les línies per a referir-nos-hi com el cat -n

però no formen part de l'arxiu):

RS@debian:~$ cat -n mysys.sh

1 #!/bin/bash

2 clear; echo "Informació donada pel shell script mysys.sh."

3 echo "Hola, $USER"

4 echo

5 echo "La data és `date`, i aquesta setmana `date +"%V"`."

6 echo

7 echo "Usuaris connectats:"

8 w | cut -d " " -f 1 - | grep -v USER | sort -u

9 echo

10 echo "El sistema és `uname -s` i el processador és `uname -m`."

11 echo

12 echo "El sistema està engegat des de fa:"

13 uptime

14 echo

15 echo "Això és tot!"

Per a executar-lo podem fer bash�mysys.sh o bé canviar-li els atributs per a

fer-lo executable i executar-lo com una ordre (al final es mostra la sortida des-

prés de l'execució):

RS@debian:~$ chmod 744 mysys.sh

RS@debian:~$ ./mysys.sh

Informació donada pel shell script mysys.sh.

Hola, RS

La data és Sat Apr 17 07:04:36 EDT 2010, i aquesta setmana 15.

Usuaris connectats:

GNUFDL • PID_00167523 12 Programació d'ordres combinades (shell scripts)

RS

El sistema és Linux i el processador és i686.

El sistema està engegat des de fa:

07:04:36 up 1:45, 2 users, load average: 0.29, 0.10, 0.03

Això és tot!

L'script comença amb "#!", que és una línia especial per a indicar amb quin

intèrpret s'ha de llegir aquest script. La línia 2 és un exemple de dues ordres

(una esborra la pantalla i l'altra imprimeix el que hi ha a la dreta) en la mateixa

línia, i per això han d'estar separades per ";". El missatge s'imprimeix amb la

sentència echo (ordre interna) però també es podria haver utilitzat la sentència

printf (també ordre interna) per a una sortida amb format. Quant als aspectes

més interessants de la resta, la línia 3 mostra el valor d'una variable, la 5 forma

una cadena amb la sortida d'una ordre (reemplaçament de valors), la 8 executa

la seqüència de 4 ordres amb paràmetres encadenats per pipes�"|" i la 10 (similar

a la 5) també reemplaça valors d'ordres per a formar una cadena de caràcters

abans d'imprimir-se per pantalla.

Per a depurar un shell script podem executar l'script amb bash�-x�mysys.sh o

incloure en la primera línia -x:�#�/bin/bash�-x.

També es pot depurar una secció de codi incloent-hi:

set -x # activa depuració des d'aquí

codi per depurar

set +x # per a la depuració

2.2. Variables i matrius (arrays)

Es poden usar variables però no hi ha tipus de dades. Una variable de Bash pot

contenir un nombre, un caràcter o una cadena de caràcters; no es necessita

declarar una variable, ja que es crearà només assignar-li un valor. També es pot

declarar amb declare i després assignar-li un valor:

#!/bin/bash

a="Hola UOC"

echo $a

declare b

echo $b

b="Com esteu?"

#!/bin/bash

Així evitem que si l'usuari té unaltre intèrpret, l'execució donierrors de sintaxi, és a dir, ga-rantim que aquest script sem-pre s'executarà amb bash.

GNUFDL • PID_00167523 13 Programació d'ordres combinades (shell scripts)

echo $B

Com es pot veure, es crea una variable a i se li assigna un valor (per a delimi-

tar-lo s'ha de posar entre " ") i es recupera el VALOR d'aquesta variable posant-li

un $ al principi, i si no se li posa $, només imprimirà el nom de la variable,

no el valor. Per exemple, per a fer un script que faci una còpia (backup) d'un

directori, incloent-hi la data i hora, en el moment de fer-ho, en el nom de

l'arxiu (intenteu fer això tan fàcil sobre un sistema W i només amb el SO i

acabareu frustrats):

#!/bin/bash

OF=/home/$USER-$(date +%d%m%Y).tgz

tar -cZf $OF /home/$USER

Aquest script introdueix una cosa nova, ja que estem creant una variable

i assignem un valor (resultat de l'execució d'una ordre en el moment de

l'execució). Fixeu-vos en l'expressió $(date +%d%m%Y), que es posa entre () per

a capturar-ne el valor. USER és una variable d'entorn i només es reemplaçarà

pel seu valor. Si volguéssim agregar (concatenar) a la variable USER, per exem-

ple, una cadena més, hauríem de delimitar la variable amb {}. Per exemple:

RS@debian:~$OF=/home/${USER}uppi-$(date +%d%m%Y).tgz

RS@debian:~$ echo $OF

/home/RSuppi-17042010.tgz

Així, el nom del fitxer serà diferent cada dia. És interessant veure el reemplaça-

ment d'ordres que fa el Bash amb els parèntesis; per exemple, echo $(ls).

Les variable locals es poden declarar anteposant local, i això en delimita

l'àmbit.

#!/bin/bash

HOLA=Hola

function uni {

local HOLA=UOC

echo -n $HOLA

}

echo -n $HOLA

uni

echo $HOLA

La sortida serà HolaUOCHola, en què hem definit una funció amb una variable

local que recupera el seu valor quan s'acaba d'executar la funció.

GNUFDL • PID_00167523 14 Programació d'ordres combinades (shell scripts)

Les variables les podem declarar com a ARRAY[INDEXNR]=valor, en què IN-

DEXNR és un nombre positiu (començant des de 0) i també podem declarar

una matriu com declare�-a�ARRAYNAME, i es poden fer assignacions múlti-

ples amb: ARRAY=(value1�value2...�valueN)

RS@debian:~$ array=( 1 2 3)

RS@debian:~$ echo $array

1

RS@debian:~$ echo ${array[*]}

1 2 3

RS@debian:~$ echo ${array[2]}

3

RS@debian:~$ array[3]=4

RS@debian:~$ echo ${array[*]}

1 2 3 4

RS@debian:~$ echo ${array[3]}

4

RS@debian:~$ unset array[1]

RS@debian:~$ echo ${array[*]}

1 3 4

2.3. Estructures condicionals

Les estructures condicionals ens permeten decidir si es fa una acció o no;

aquesta decisió es pren avaluant una expressió.

• La més bàsica és: if expressió� then sentència, en què sentència només

s'executa si expressió s'avalua com a verdadera. 2 < 1 és una expressió que

s'avalua falsa, mentre que 2 > 1 s'avalua verdadera.

• Els condicionals tenen altres formes, com ara: if expressió�then sentència1

else sentència2. Aquí sentència1 s'executa si expressió és verdadera. D'altra

manera, s'executa sentència2.

• Una altra forma més de condicional és: if expressió1� then sentència1�el-

se�if expressió2�then sentència2�else sentència3. En aquesta forma només

s'afegeix else if expressió2 then sentència2, que fa que sentència2 s'executi si

expressió2 s'avalua verdadera. La sintaxi és:

if [expressió];

then

codi si 'expressió' és verdadera.

fi

GNUFDL • PID_00167523 15 Programació d'ordres combinades (shell scripts)

Un exemple en el qual el codi que s'executarà si l'expressió entre claudàtors és

verdadera es troba entre la paraula then i la paraula fi, que indica el final del

codi executat condicionalment:

#!/bin/bash

if [ "pirulo" = "pirulo" ]; then

echo expressió avaluada com a verdadera

fi

Un altre exemple amb variables i comparació per igualtat i per diferència (=

o !=):

#!/bin/bash

T1="pirulo"

T2="pirulon"

if [ "$T1" = "$T2" ]; then

echo expressió avaluada com a verdadera

else

echo expressió avaluada com a falsa

fi

if [ "$T1" != "$T2" ]; then

echo expressió avaluada com a verdadera

else

echo expressió avaluada com a falsa

fi

Un exemple d'expressió de comprovació si hi ha un fitxer (cal vigilar amb els

espais després de [ i abans de ]):

FILE=~/.basrc

if [ -f $FILE ]; then

echo el fitxer $FILE existeix

else

echo fitxer no trobat

fi

if [ 'test -f $FILE' ]

echo Una altra manera d'expressió per a saber si existeix o no

fi

Hi ha versions curtes d'if, com per exemple:

GNUFDL • PID_00167523 16 Programació d'ordres combinades (shell scripts)

[ -z "${COLUMNS:-}" ] && COLUMNS=80

És la versió curta de:

if [ -z "${COLUMNS:-}" ]; then

COLUMNS=80

fi

2.4. Els bucles

El bucle for és diferent del d'altres llenguatges de programació, ja que permet

iterar sobre una sèrie de "paraules" contingudes dins d'una cadena. El bucle

while executa una secció de codi si l'expressió de control és verdadera, i només

es para quan és falsa (o es troba una interrupció explícita dins del codi en

execució). El bucle until és gairebé idèntic al bucle while, tret que el codi

s'executa mentre l'expressió de control s'avalua com a falsa. Vegem-ne uns

exemples i observem-ne la sintaxi:

#!/bin/bash

for i in $( ls ); do

echo element: $i

done

En la segona línia declarem i com la variable que rebrà els diferents valors

continguts a $( ls ), que seran els elements del directori obtingut en el moment

de l'execució. El bucle es repetirà (entre do i done) tantes vegades com elements

tingui la variable i en cada iteració la variable i adquirirà un valor diferent de

la llista.

Una altra sintaxi acceptada podrà ser:

#!/bin/bash

for i in `seq 1 10`;

do

echo $i

done

La sintaxi de while és:

#!/bin/bash

comptador=0

while [ $comptador -lt 10 ]; do

echo El comptador és $comptador

GNUFDL • PID_00167523 17 Programació d'ordres combinades (shell scripts)

let comptador=comptador+1

done

Com podem veure, a més de while hem introduït una compara-

ció en l'expressió per menor "-lt" i una operació numèrica amb let

comptador=comptador+1. La sintaxi d'until és equivalent:

#!/bin/bash

comptador=20

until [ $comptador -lt 10 ]; do

echo Comptador-Until $comptador

let comptador-=1

done

En aquest cas veiem l'equivalència de la sentència i a més una altra manera de

fer operacions sobre les mateixes variables amb "-=".

2.5. Funcions, select, case, arguments i altres qüestions

Les funcions són la manera més fàcil d'agrupar seccions de codi, que es podran

tornar a utilitzar. La sintaxi és function nom { codi }, i per a cridar-les només és

necessari que siguin dins del mateix arxiu i escriure el seu nom.

#!/bin/bash

function sortir {

exit

}

function hola {

echo Hola UOC!

}

hola

sortir

echo Mai no arribareu a aquesta línia

Com es pot veure tenim dues funcions, sortir i hola, que després s'executaran

(no és necessari declarar-les en un ordre específic) i com la funció sortir executa

un exit en l'intèrpret mai no arribarà a executar l'echo final. També podem

passar arguments a les funcions, que seran llegits per ordre (de la mateixa

manera com es llegeixen els arguments d'un script): $1 el primer, $2 el segon

i així successivament:

#!/bin/bash

function sortir {

exit

GNUFDL • PID_00167523 18 Programació d'ordres combinades (shell scripts)

}

function hola-amb-parametres {

echo $1

}

hola-amb-parametres Hola

hola-amb-parametres UOC

sortir

echo Mai no arribareu a aquesta línia

El select és per fer a opcions i llegir des de teclat:

#!/bin/bash

OPCIONS="Sortir Opció1"

select opt in $OPCIONS; do

if [ "$opt" = "Sortir" ]; then

echo Sortir. Adéu.

exit

elif [ "$opt" = "Opció1" ]; then

echo Hola UOC

else

clear

echo opció no permesa

fi

done

El select permet fer menús en mode text i és equivalent a la sentència for,

només que itera sobre el valor de la variable indicada en el select. Un altre

aspecte important és la lectura d'arguments, com per exemple:

#!/bin/bash

if [ -z "$1" ]; then

echo ús: $0 directori

exit

fi

A=$1

B="/home/$USER"

C=backup-home-$(date +%d%m%Y).tgz

tar -cZf $A$B $C

Si el nombre d'arguments és 0, escriu el nom de l'ordre ($0) amb un missatge

d'ús. La resta és similar al que hem vist anteriorment excepte per al primer

argument ($1). Fixeu-vos amb atenció en l'ús de " i la substitució de variables.

GNUFDL • PID_00167523 19 Programació d'ordres combinades (shell scripts)

El case és una altra forma de selecció; mirem aquest exemple que ens alerta

en funció de l'espai de disc que tenim disponible:

#!/bin/bash

space=`df -h | awk '{print $5}' | grep % \

| grep -v Use | sort -n | tail -1 | cut -d "%" -f1 -`

case $space in

[1-6]*)

Message="tot bé."

;;

[7-8]*)

Message="Podríeu començar a esborrar alguna cosa en $space %"

;;

9[1-8])

Message="Uff. Millor un disc nou. Partició $space % fins a dalt."

;;

99)

Message="Pànic! No teniu espai en $space %!"

;;

*)

Message="No teniu res..."

;;

esac

echo $Message

A més de parar atenció a la sintaxi del case, podem mirar com s'escriu una

ordre en dues línies amb "\", el filtratge de seqüència amb diversos grep i | i

una ordre interessant (filtre) com awk (la millor ordre de tots els temps).

Moltes vegades, podeu voler sol·licitar a l'usuari alguna informació, i hi ha

diverses maneres per a fer-ho:

#!/bin/bash

echo Si us plau, escriviu el nom

read nom

echo "Hola, $nombre!"

Com a variant, es poden obtenir múltiples valors amb read:

#!/bin/bash

echo Si us plau, escriviu el nom i el primer cognom

read NO AP

GNUFDL • PID_00167523 20 Programació d'ordres combinades (shell scripts)

echo "Hola $AP, $NO!"

Si fem echo 10 +10 i esperàveu veure un 20 quedareu desil·lusionats; la forma

d'avaluació directa és amb echo�$((10+10)) o també echo�$[10+10] i si neces-

siteu operacions com fraccions o d'altres podeu utilitzar bc, ja que l'anterior

només serveix per a nombres enters. Per exemple, echo $[3/4] donarà 0, però

echo�3/4|bc�-l sí que funcionarà. També recordem l'ús del let; per exemple,

let�a=75*2 assignarà 150 a la variable a.

Un exemple més:

RS@debian:~$ echo $date

20042011

RS@debian:~$ echo $((date++))

20042011

RS@debian:~$ echo $date

20042012

És a dir, com a operadors podem utilitzar:

• VAR++ VAR-- variable postincrement i postdecrement.

• ++VAR --VAR com l'anterior però abans.

• + - operadors unaris.

• ! ~ negació lògica i negació en string.

• ** exponent.

• / + - % operacions.

• < < > > desplaçament a esquerra i dreta.

• < = >= < > comparació.

• == != igualtat i diferència.

• & ^ | operacions AND, OR exclusiu i OR.

• && || operacions AND i OR lògics.

• expr ? expr : expr avaluació condicional.

• = *= /= %= += -= < < = >>= &= ^= |= operacions implícites.

• , separador entre expressions.

Per a capturar la sortida d'una ordre, és a dir, el resultat de l'execució, podem

utilitzar el nom de l'ordre entre accents oberts ` `.

#!/bin/bash

A=`ls`

for b in $A ;

do

file $b

done

GNUFDL • PID_00167523 21 Programació d'ordres combinades (shell scripts)

Per a la comparació tenim les opcions següents:

• s1 = s2 verdader si s1 coincideix amb s2.

• s1 != s2 verdader si s1 no coincideix amb s2.

• s1 < s2 verdader si s1 és alfabèticament anterior a s2.

• s1 > s2 verdader si s1 és alfabèticament posterior a s2.

• -n s1 s1 no és nul (conté un o més caràcters).

• -z s1 s1 és nul.

Per exemple, cal anar amb compte perquè si S1 o S2 són buits, ens donarà un

error d'interpretació (parse):

#!/bin/bash

S1='cadena'

S2='Cadena'

if [ $S1!=$S2 ];

then

echo "S1('$S1') no és igual que S2('$S2')"

fi

if [ $S1=$S1 ];

then

echo "S1('$S1') és igual que S1('$S1')"

fi

Quant als operadors aritmètics i relacionals, podem utilitzar:

a) Operadors aritmètics:

• + (addició).

• - (sostracció).

• * (producte).

• / (divisió).

• % (mòdul).

b) Operadors relacionals:

• -lt (<).

• -gt (>).

• -li (< =).

• -ge (>=).

• -eq (==).

• -ne (!=).

GNUFDL • PID_00167523 22 Programació d'ordres combinades (shell scripts)

Fem un exemple de script que ens permetrà rebatejar fitxers S1 amb una sèrie

de paràmetres (prefix o sufixos) d'acord amb els arguments. La manera serà p

[prefix] fitxers, o si no, s [sufix] fitxers, o també r [patró-antic] [patró-nou] fitxers

(i com sempre diem, els scripts són millorables):

#!/bin/bash -x

# renom: reanomena múltiples arxius d'acord amb certes regles

# Basat en un original de F. Hudson. Gener de 2000

# comprova si vull reanomenar amb prefix i deixo només els noms

# d'arxius

if [ $1 = p ]; then

prefix=$2 ; shift ; shift

# si no hi ha entrades d'arxius acabo.

if [ "$1" = '' ]; then

echo "no s'han especificat arxius"

exit 0

fi

# Interacció per a reanomenar

for arxiu in $*

do

mv ${arxiu} $prefix$arxiu

done

exit 0

fi

# comprova si vull reanomenar amb prefix i deixo només els noms

# d'arxius

if [ $1 = s ]; then

sufix=$2 ; shift ; shift

if [ "$1" = '' ]; then

echo "no s'han especificat arxius"

exit 0

fi

for arxiu in $*

do

mv ${arxiu} $arxiu$sufix

done

exit 0

fi

# comprova si és una substitució de patrons

if [ $1 = r ]; then

shift

# s'ha inclòs això com a mesura de seguretat

if [ $# -lt 3 ] ; then

echo "ús: renom r [expressió] [substitut] arxius... "

exit 0

GNUFDL • PID_00167523 23 Programació d'ordres combinades (shell scripts)

fi

VELL=$1 ; NOU=$2 ; shift ; shift

for arxiu in $*

do

nou=`echo ${arxiu} | sed s/${VELL}/${NOU}/g`

mv ${arxiu} $nou

done

exit 0

fi

# si no mostro l'ajuda

echo "ús:"

echo " renom p [prefix] arxius..."

echo " renom s [sufix] arxius..."

echo " renom r [patró-antic] [patró-nou] arxius..."

exit 0

Cal parar una atenció especial a "", '', `` {}, etc, per exemple:

RS@debian:~$ date=20042010

RS@debian:~$ echo $date

20042010

RS@debian:~$ echo \$date

$date

RS@debian:~$ echo '$date'

$date

RS@debian:~$ echo "$date"

20042010

RS@debian:~$ echo "`date`"

Sat Apr 17 14:35:03 EDT 2010

RS@debian:~$ echo "el que se m'ocorre és: \"Estic cansat\""

el que se m'ocorre és: \"Estic cansat\"

RS@debian:~$ echo "\"

>

(espera més entrades: feu Ctrl-C)

remo@debian:~$ echo "\\"

\

RS@debian:~$ echo grand{et,ot,às}

grandet grandot grandàs

Una combinació d'entrada de teclat i operacions/expressions per a calcular un

any de traspàs:

#!/bin/bash

clear;

echo "Entreu l'any que cal verificar (4 dígits), i després [ENTER]:"

GNUFDL • PID_00167523 24 Programació d'ordres combinades (shell scripts)

read year

if (( ("$year" % 400) == "0" )) || (( ("$year" % 4 == "0") \

&& ("$year" % 100 !="0") )); then

echo "$year és de traspàs."

else

echo "$year l'any no és de traspàs."

fi

Una ordre interessant que combina read amb delimitador en una expressió

(està posat tot en una línia i per això la sintaxi està separada per ;). El resultat

serà "interessant" (ens mostrarà totes les cadenes donades pel find en una línia

i sense /:

find "$PWD" -name "m*" | while read -d "/" file; do echo $file; done

Un aspecte interessant per a treballar amb string (vegeu el manual de Bash:

man bash) és ${VAR:OFFSET:LENGTH}.

RS@debian:~$ export str="unstring molt llarg"

RS@debian:~$ echo $str

unstring muy largo

RS@debian:~$ echo ${str:4}

ring molt llarg

RS@debian:~$ echo $str

unstring molt llarg

RS@debian:~$ echo ${str:9:3}

mol

RS@debian:~$ echo ${str%llarg}

unstring molt

La instrucció trap ens permetrà capturar un senyal (per exemple, de teclat)

dins d'un script.

#!/bin/bash

# Per a acabar feu des d'un altre terminal kill -9 pid

trap "echo ' Ja!'" SIGINT SIGTERM

echo "El pid és $$"

while : # això és el mateix que "while true".

do

sleep 10 # L'script no fa res.

done

GNUFDL • PID_00167523 25 Programació d'ordres combinades (shell scripts)

2.6. Filtres: grep

El grep és un filtre de patrons molt útil i versàtil; a continuació en podem veure

alguns exemples:

RS@debian:~$ grep root /etc/passwd busca patró root

root:x:0:0:root:/root:/bin/bash

RS@debian:~$ grep -n root /etc/passwd a més numera les línies

1:root:x:0:0:root:/root:/bin/bash

RS@debian:~$ grep -v bash /etc/passwd | grep -v nologin

mostra els que no tenen el patró i bash ni el patró nologin

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

sync:x:4:65534:sync:/bin:/bin/sync

...

RS@debian:~$ grep -c false /etc/passwd compta els que tenen false

7

RS@debian:~$ grep -i ps ~/.bash* | grep -v history

busca el patró ps en tots els arxius que comencen per .bash en el directori /home excloent-hi

els que tinguin history en l'arxiu

/home/RS/.bashrc:[ -z "$PS1" ] && return

/home/RS/.bashrc:export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups

/home/RS/.bashrc:# ... or force ignoredups and ignorespace

...

RS@debian:~$ grep ^root /etc/passwd busca l'inici de línia

root:x:0:0:root:/root:/bin/bash

RS@debian:~$ grep false$ /etc/passwd busca el final de línia

Debian-exim:x:101:105::/var/spool/exim4:/bin/false

statd:x:102:65534::/var/lib/nfs:/bin/false

RS@debian:~$ grep -w / /etc/fstab busca /

/dev/hda1 / ext3 errors=remount-ro 0 1

RS@debian:~$ grep [yf] /etc/group busca y o Y

sys:x:3:

tty:x:5:

....

RS@debian:~$ grep '\<c...h\>' /usr/share/dict/words busca començant per c i acabant per h amb

un màxim de tres.

GNUFDL • PID_00167523 26 Programació d'ordres combinades (shell scripts)

catch

cinch

cinch's

....

RS@debian:~$ grep '\<c.*h\>' /usr/share/dict/words busca començant per c i acabant per h totes.

caddish

calabash

...

2.7. Filtres: Awk

Awk, o també la implementació de GNU gawk, és una ordre que accepta un

llenguatge de programació dissenyat per a processar dades basades en text, ja

siguin fitxers o fluxos de dades, i ha estat la inspiració de Larry Wall per a

escriure Perl. La seva sintaxi més comuna és awk�'programa'�arxius... i pro-

grama pot ser: patró�{acció}�patró�{acció}... awk llegeix l'entrada d'arxius una

línia alhora. Cada línia es compara amb cada patró en ordre; per a cada patró

que concordi amb la línia s'efectua l'acció corresponent. Un exemple pregunta

pel primer camp si és root de cada línia de l'arxiu /etc/passwd i la imprimeix

considerant com a separador de camps el ":" amb -F:; en el segon exemple re-

emplaça el primer camp per root i imprimeix el resultat canviat.

RS@debian:~$ awk -F: '$1=="root" {print}' /etc/passwd

root:x:0:0:root:/root:/bin/bash

RS@debian:~$ awk -F: '$1="root" {print}' /etc/passwd

root x 0 0 root /root /bin/bash

root x 1 1 daemon /usr/sbin /bin/sh

root x 2 2 bin /bin /bin/sh

root x 3 3 sys /dev /bin/sh

root x 4 65534 sync /bin /bin/sync

root x 5 60 games /usr/games /bin/sh

root x 6 12 man /var/cache/man /bin/sh

L'awk divideix automàticament l'entrada de línies en camps, és a dir, una ca-

dena de caràcters que no siguin blancs separats per blancs o tabuladors; per

exemple, el who té 5 camps i awk ens permetrà filtrar cada un d'aquests camps.

RS@debian:~$ who

RS tty7 2010-04-17 05:49 (:0)

RS pts/0 2010-04-17 05:50 (:0.0)

RS pts/1 2010-04-17 16:46 (:0.0)

remo@debian:~$ who | awk '{print $4}'

05:49

05:50

GNUFDL • PID_00167523 27 Programació d'ordres combinades (shell scripts)

16:46

L'awk anomena aquests camps $1 $2... $NF, en què NF és una variable igual

que el nombre de camps (en aquest cas NF = 5). Per exemple:

ls -al | awk '{print NR, $0} Agrega nombre d'entrades (la variable NR compta el nombre de línies,

$0 és la línia sencera.

awk '{printf "%4d %s\n", NR, $0}' significa un nombre decimal (NR) un string ($0) i un new line

awk -F: '$2 == "" ' /etc/passwd donarà els usuaris que en l'arxiu passwd no tinguin posada la

contrasenya

El patró es pot escriure de diverses maneres:

$2 == "" si el segon camp és buit

$2 ~ /^$/ si el segon camp coincideix amb la cadena buida

$2 !~ /./ si el segon camp no concorda amb cap caràcter (! és negació)

length($2) == si la longitud del segon camp és 0, length és una funció interna de l'awk

~ indica coincidència amb una expressió

!~ significa el contrari (sense coincidència)

NF % 2 != 0 mostra la ratlla només si hi ha un nombre parell de camps

awk 'lenght ($0) 32 {print "Línia", NR, "llarga", substr($0,1,30)} ' /etc/passwd avalua las

línies de /etc/passwd i genera un substring</i>

Hi ha dos patrons especials, BEGIN i END. Les accions BEGIN es fan abans que

la primera línia s'hagi llegit; es pot usar per a inicialitzar les variables, imprimir

encapçalaments o posicionar separadors d'un camp assignant-los a la variable

FS, per exemple:

awk 'BEGIN {FS = ":"} $2 == "" ' /etc/passwd igual que l'exemple d'abans

awk 'END { print NR } ' /etc/passwd imprimeix el nombre de línies processades al final de la

lectura de l'última ratlla.

L'awk permet operacions numèriques en forma de columnes, per exemple, per

a sumar tots els nombres de la primera columna:

{ s=s + 1} END { print s} i per a la suma i la mitjana END { print s, s/NR}

Les variables s'inicialitzen a zero en declarar-se, i es declaren en utilitzar-se,

per la qual cosa resulta molt simple (els operadors són els mateixos que a C):

{ s+=1} END {print s} Per exemple, per a comptar línies, paraules i caràcters:

GNUFDL • PID_00167523 28 Programació d'ordres combinades (shell scripts)

{ nc += length($0) +1 nw +=NF } END {print NR, nw, nc}

Hi ha variables predefinides en l'awk:

• FILENAME nom de l'arxiu actual.

• FS caràcter delimitador del camp.

• NF nombre de camps del registre d'entrada.

• NR número del registre de l'entrada.

• OFMT format de sortida per a nombres (%g per defecte).

• OFS cadena separadora de camp a la sortida (blanc per defecte).

• ORS cadena separadora de registre de sortida (new line per defecte).

• RS cadena separadora de registre d'entrada (new line per defecte).

Operadors (ídem C):

= += -= *= /= %= || && ! >> >>= << <<= == != ~ !~

+ - * / %

++ --

Funcions predefinides a awk:

cos(), exp(), getline(), index(), int(), length(), log(), sin(), split(), sprintf(), subs-

tr().

A més suporta dins d'acció sentències de control amb la sintaxi similar a C:

if (condició)

proposició1

else

proposició2

for (exp1;condició;exp2)

while (condició) {

proposició

expr2

}

continue continua, avalua la condició novament

break trenca la condició

next llegeix la línia d'entrada següent

exit salta a END

També l'awk maneja arranjaments, per exemple, per a fer un head de /etc/

passwd:

GNUFDL • PID_00167523 29 Programació d'ordres combinades (shell scripts)

awk '{ line[NR] = $0} \

END { for (i=NR; i>2; i--) print line[i]} ' /etc/passwd

Un altre exemple:

awk 'BEGIN { print "Usuari UID Shell\n------- --- -----" } $3 >= 500 { print $1, $3, $7 |

"sort -r"}' FS=":" /etc/passwd

Usuari UID Shell

------- --- -----

RS 1001 /bin/bash

nobody 65534 /bin/sh

debian 1000 /bin/bash

RS@debian:~$ ls -al | awk '

BEGIN { print "File\t\t\tOwner" }

{ print $8, "\t\t\t", \

$3}

END { print "done"}

'

File Owner

. RS

.. root

.bash_history RS

.bash_logout RS

.bashrc RS

.config RS

...

2.8. Exemples complementaris

1) Un exemple complet per a esborrar els registres (esborra /var/log/wtmp i

es queda amb 50 línies –o les que passi l'usuari en línia d'ordres– de /var/log/

messages)

#!/bin/bash

#Variables

LOG_DIR=/var/log

ROOT_UID=0 # només el pot executar el root

LINES=50 # Línies por defecte.

E_XCD=86 # No em puc canviar de directori

E_NOTROOT=87 # Sortida de no-root error.

if [ "$UID" -ne "$ROOT_UID" ] # Sóc root?

then

echo "Heu de ser root. Em sap greu."

GNUFDL • PID_00167523 30 Programació d'ordres combinades (shell scripts)

exit $E_NOTROOT

fi

if [ -n "$1" ] # Nombre de línies per preservar?

then

lines=$1

else

lines=$LINES # valor per defecte.

fi

cd $LOG_DIR

if [ `pwd` != "$LOG_DIR" ]

# també pot ser if [ "$PWD" != "$LOG_DIR" ]

then

echo "No puc anar a $LOG_DIR."

exit $E_XCD

fi #

# Una altra manera de fer-ho seria:

# cd /var/log || {

# echo "No puc !" >&2

# exit $E_XCD;

# }

tail -n $lines messages > mesg.temp # Deso temporalment

mv mesg.temp messages # Moc.

cat /dev/null > wtmp #Esborro wtmp.

echo "Registres esborrats."

exit 0

# Un zero indica que tot ha anat bé.

2) Utilització de l'expr.

#!/bin/bash

echo "Aritmètics"

echo

a=`expr 5 + 3`

echo "5 + 3 = $a"

a=`expr $a + 1`

echo

echo "a + 1 = $a"

echo "(increment)"

a=`expr 5 % 3`

# mòdul

GNUFDL • PID_00167523 31 Programació d'ordres combinades (shell scripts)

echo

echo "5 mod 3 = $a"

# Lògics

# 1 si true, 0 si false,

#+ oposat a normal Bash convention.

echo "Lògics"

x=24

y=25

b=`expr $x = $y` # per igual.

echo "b = $b" # 0 ( $x -ne $y )

a=3

b=`expr $a \> 10`

echo 'b=`expr $a \> 10`, per la qual cosa...'

echo "If a > 10, b = 0 (false)"

echo "b = $b" # 0 ( 3 ! -gt 10 )

b=`expr $a \< 10`

echo "If a < 10, b = 1 (true)"

echo "b = $b" # 1 ( 3 -lt 10 )

echo

# Compte amb els operadors d'escapada \.

b=`expr $a \<= 3`

echo "If a <= 3, b = 1 (true)"

echo "b = $b" # 1 ( 3 -le 3 )

# S'utilitza un operador "\>=" operator (greater than or equal to).

echo "String"

echo

a=1234zipper43231

echo "String base \"$a\"."

b=`expr length $a`

echo "Long. de \"$a\" es $b."

# index: posició del primer caràcter que satisfà en la cadena

#

b=`expr index $a 23`

echo "Posició numèrica del \"2\" en \"$a\" és \"$b\"."

# substr: extract substring, starting position & length specified

b=`expr substr $a 2 6`

echo "Substring de \"$a\", començant a 2,\

i de 6 chars és \"$b\"."

# Using Regular Expressions ...

b=`expr match "$a" '[0-9]*'` # comptador numèric.

echo Nombre de dígits de \"$a\" és $b.

b=`expr match "$a" '\([0-9]*\)'` # compte amb els caràcters d'escapada

echo "Els dígits de \"$a\" són \"$b\"."

exit 0

GNUFDL • PID_00167523 33 Programació d'ordres combinades (shell scripts)

Activitats

1. Creeu un script interactiu que calculi el nombre de dies entre dues dates introduïdes perl'usuari segons el format dia/mes/any. També haureu de calcular el nombre d'hores si l'usuariintrodueix hora d'inici i hora de final, en el format hh:mm. Si introdueix només una hora,es calcularà fins a les 23:59 del dia donat com a final del període per calcular.

2. Creeu un script que es faci una còpia (recursiva) dels arxius a /etc, de manera que unadministrador del sistema pugui modificar els arxius d'inici sense temor.

3. Escriviu un script anomenat homebackup que automatitzi el tar amb les opcions correctes ien el directori /var/backups per a fer una còpia de seguretat del directori principal de l'usuariamb les condicions següents:

a) Fer un test del nombre d'arguments. L'script s'ha d'executar sense arguments, i si n'hi ha,ha d'imprimir un missatge d'ús.b) Determinar si el directori de còpies de seguretat té suficient espai lliure per a emmagatze-mar la còpia de seguretat.c) Preguntar a l'usuari si vol una còpia completa (tot) o una còpia incremental (només elsarxius que hagin canviat). Si l'usuari no té una còpia de seguretat completa, s'haurà de fer, i encas d'una còpia de seguretat incremental, només es pot fer si la còpia de seguretat completano té més d'una setmana.d) Comprimir la còpia de seguretat utilitzant qualsevol eina de compressió.e) Informar a l'usuari que es farà en cada moment, ja que això pot trigar algun temps i aixís'evitarà que l'usuari es posi nerviós si la sortida no apareix a la pantalla.f) Imprimir un missatge que informi l'usuari sobre la mida de la còpia de seguretat sensecomprimir i comprimida, el nombre d'arxius desats o actualitzats i el nombre de directorisdesats o actualitzats.

4. Escriviu un script que executi un navegador web simple (en mode text), utilitzant wget ilinks�-dump per a mostrar les pàgines HTML en un terminal.

L'usuari té 3 opcions: introduir una adreça URL, entrar b per a retrocedir (back) i q per a sortir.Les 10 últimes URL introduïdes per l'usuari s'emmagatzemen en una matriu, des d'on l'usuaripot restaurar l'URL utilitzant la funcionalitat b (back).

GNUFDL • PID_00167523 34 Programació d'ordres combinades (shell scripts)

Bibliografia

És recomanable complementar la lectura en què s'ha basat part d'aquesta documentació,sobretot per a aspectes avançats, ja que aquí només s'ha vist un breu resum de l'essencial:

Barnett, Bruce. AWK. General Electric Company.http://www.grymoire.com/Unix/Awk.html

"Big Admin: Script Examples".http://www.sun.com/bigadmin/scripts/filter.jsp

[Coo] Cooper, Mendel. "Advanced Bash-Scripting Guide".http://tldp.org/LDP/abs/html/index.html

Garrels, Machtelt. "Bash Guide for Beginners".http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html

"Man bash".http://www.gnu.org/software/bash/manual/bashref.html

[Bas] Mike, G. "Programación en BASH - COMO de introducción".http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/

Robbins, Arnold. UNIX in a Nutshell (3a. ed.).http://oreilly.com/catalog/unixnut3/chapter/ch11.html

"The GNU awk programming language".http://tldp.org/LDP/Bash-Beginners-Guide/html/chap_06.html

Migració icoexistència ambsistemes no Linux Josep Jorba Esteve PID_00167524

GNUFDL • PID_00167524 Migració i coexistència amb sistemes no Linux

© 2010, FUOC. Es garanteix el permís per a copiar, distribuir i modificar aquest document segons els termes de la GNU FreeDocumentation License, Version 1.2 o qualsevol altra de posterior publicada per la Free Software Foundation, sense seccionsinvariants ni textos de la coberta anterior o posterior. Hi ha una còpia de la llicència en l'apartat "GNU Free DocumentationLicense" d'aquest document.

GNUFDL • PID_00167524 Migració i coexistència amb sistemes no Linux

Índex

Introducció.................................................................................................. 5

1. Sistemes informàtics: ambients..................................................... 7

2. Serveis en GNU/Linux....................................................................... 11

3. Tipologies d'ús..................................................................................... 14

4. Migrar o coexistir.............................................................................. 17

4.1. Identificar requisits de serveis .................................................... 19

4.2. Procés de migració ...................................................................... 20

4.2.1. Estacions de treball ........................................................ 21

4.2.2. Màquines clients d'escriptori ......................................... 22

5. Taller de migració: anàlisi de casos d'estudi.............................. 26

5.1. Migració individual d'un usuari d'escriptori Windows a un

sistema GNU/Linux ..................................................................... 26

5.2. Migració d'una petita organització que disposa de sistemes

Windows i alguns UNIX ............................................................. 29

5.3. Migració d'un servidor Windows a un servidor Samba en

GNU/Linux .................................................................................. 32

Activitats...................................................................................................... 39

Bibliografia................................................................................................. 40

GNUFDL • PID_00167524 5 Migració i coexistència amb sistemes no Linux

Introducció

Una vegada feta una primera aproximació als sistemes GNU/Linux, el pas

següent és integrar-los a l'entorn de treball com a sistemes de producció. Se-

gons el sistema actual que estigui en ús, podem plantejar, o bé una migració

total a sistemes GNU/Linux, o bé una coexistència mitjançant serveis compa-

tibles.

La migració a l'entorn GNU/Linux es pot fer de manera progressiva,

substituint serveis parcialment, o bé substituint tots els serveis de l'antic

sistema pels equivalents GNU/Linux.

En els entorns distribuïts actuals, el paradigma més present és el de client-ser-

vidor. Qualsevol tasca en el sistema global és gestionada per un o més servi-

dors dedicats, i les aplicacions, o els usuaris directament, accedeixen als serveis

prestats.

Pel que fa a l'ambient de treball, ja sigui en el cas més simple, com l'usuari

individual, o bé en un de complex, com un entorn empresarial, en cada en-

torn es necessitarà un conjunt de serveis que haurem de seleccionar, i adaptar

després les màquines clients i servidors, perquè puguin accedir-hi o proporci-

onar-los els seus serveis.

Els serveis poden englobar molts aspectes diferents. N'hi sol haver de diversos

tipus, ja sigui per a compartir recursos o informació. Són habituals servidors

d'arxius, d'impressió, de Web, de noms, correu, etc.

L'administrador, normalment, seleccionarà un conjunt de serveis que hauran

de ser presents en l'ambient de treball, depenent de les necessitats dels usuaris

finals o de l'organització, i haurà de configurar el suport adequat a la infra-

estructura, en forma de servidors que suportin la càrrega de treball esperada

(tant càrrega interna, com càrrega de l'exterior, si n'hi ha).

GNUFDL • PID_00167524 7 Migració i coexistència amb sistemes no Linux

1. Sistemes informàtics: ambients

En el procés d'algunes instal·lacions de distribucions de GNU/Linux, ens po-

dem trobar sovint que ens pregunten pel tipus d'ambient, o per les tasques a les

quals estarà dedicat el nostre sistema. Això permet moltes vegades escollir un

subconjunt de programari que s'instal·larà per defecte, per ser el més adequat

a la funció prevista. És habitual que ens preguntin si el sistema es destinarà a:

a)�Estació�de�treball�(workstation): aquest tipus de sistema incorpora algunes

aplicacions particulars, que seran les més usades. El sistema, bàsicament, es

dedica a l'execució d'aquestes aplicacions i a un petit conjunt de serveis de

xarxa.

b)�Servidor: s'integren la majoria de serveis de xarxa o, en tot cas, algun de

particular, el qual serà el servei principal del sistema.

c)�Estació�dedicada�a�càlcul: aplicacions intensives en càlcul, renderitzadors,

aplicacions científiques, gràfics DAO (CAD, en anglès), etc.

d)�Estació�gràfica: escriptori amb aplicacions que necessiten interacció amb

l'usuari en forma gràfica.

Usualment, podem compondre el nostre sistema GNU/Linux a partir d'una o

més d'aquestes possibilitats.

Més en general, si haguéssim de separar els ambients de treball [Mor03]

en els quals es pot utilitzar un sistema GNU/Linux, podríem identificar

tres tipus principals d'ambient: estació de treball (workstation), servidor

i escriptori (desktop).

També es podria incloure un altre tipus de sistemes, els que anomenaríem

genèricament dispositius incrustats (embedded), o bé sistemes mòbils de petites

dimensions, com per exemple un PDA, un telèfon mòbil intel·ligent (smartp-

hone), una videoconsola portàtil, etc. GNU/Linux ofereix, així mateix, suport

per a aquests dispositius, amb nuclis reduïts i personalitzats específics.

Exemple

Funcions

Els sistemes GNU/Linux es po-den dedicar a funcions de ser-vidor, a estació de treball o aescriptori.

Destaquem, per exemple, un treball inicial fet per la firma Sharp en els seus

models Zaurus, un PDA amb Linux d'altes prestacions (diversos models van es-

tar disponibles en la dècada dels noranta i la primeria del 2000). O també altres

iniciatives Linux de tipus incrustat com els TPV (terminals de punt de venda).

O videoconsoles com la GP2X. També és especialment destacable l'evolució al

Nota

Característiques i història de laplataforma Android a:http://en.wikipedia.org/wiki/Android_(operating_system)http://www.android.com

GNUFDL • PID_00167524 8 Migració i coexistència amb sistemes no Linux

mercat dels smartphones de la plataforma Android de Google Inc., basada en la

màquina virtual Java sobre un nucli Linux modificat, i també altres platafor-

mes mòbils, com Nokia Maemo i Intel Moblin.

Pel que fa als tres principals ambients, vegem com es desenvolupa cada un

d'aquests sistemes informàtics en un entorn GNU/Linux:

1) Un sistema de tipus estació�de�treball sol ser una màquina d'alt rendiment,

utilitzada per a una tasca específica en lloc d'un conjunt general de tasques.

L'estació de treball, clàssicament, era composta d'una màquina d'altes pres-

tacions amb maquinari específic adequat a la tasca que calia desenvolupar.

Se solia tractar d'una màquina Sun Sparc, IBM Risc o Silicon Graphics (entre

d'altres) amb les seves variants de UNIX de propietat. Aquestes màquines d'alt

cost s'orientaven a un segment clar d'aplicacions, ja fos el disseny gràfic 3D

(el cas de Silicon o Sun) o bases de dades (IBM o Sun). Avui dia, molts dels

PC actuals tenen un rendiment comparable a aquests sistemes (encara que no

igual), i la frontera entre un d'aquests sistemes i un PC ja no és tan clara, grà-

cies a l'existència de GNU/Linux com a alternativa a les versions de UNIX de

propietat. Es pot destacar que molts d'aquests fabricants (Sun, IBM, Silicon)

estan oferint GNU/Linux com a opció d'operatiu per als seus sistemes actuals

de gamma alta, normalment mitjançant convenis amb distribuïdors Linux co-

mercials, com Red Hat o Novell SUSE.

2) Un sistema de tipus servidor té un objectiu concret, que és oferir serveis a

altres màquines de la xarxa: ofereix característiques o una funcionalitat clara

a la resta de màquines. En sistemes informàtics relativament petits (per exem-

ple, menys de 5-10 màquines) no hi sol haver un sistema exclusiu de servidor

(encara que acostumen a ser comuns els d'arxius i impressió), i sol estar com-

partit amb altres funcionalitats, per exemple també com a màquina de tipus

escriptori. En sistemes mitjans (unes quantes desenes de màquines), hi sol ha-

ver una o més màquines dedicades a actuar de servidor, ja sigui la màquina

exclusiva que centra tots els serveis (correu, Web, etc.) o un parell de màquines

dedicades a repartir-se els serveis principals.

En sistemes grans (un centenar o més de màquines, fins i tot milers), per la

capacitat de càrrega pot ser necessari que hi hagi un bon grup de servidors,

cada un dedicat normalment a algun servei en exclusiva, o fins i tot es pot

dedicar un conjunt de màquines exclusivament a un servei. És més, si aquests

serveis es proporcionen –cap a dins o cap a fora de l'organització– mitjançant

accés per clients directes o obert a Internet, depenent de la capacitat de càrrega

que hàgim de suportar haurem de recórrer a solucions de tipus SMP (màquines

amb diversos processadors interconnectats a la mateixa màquina) o de tipus

clústers d'alta disponibilitat (agrupació de màquines que es distribueixen la

càrrega d'un determinat servei).

GNUFDL • PID_00167524 9 Migració i coexistència amb sistemes no Linux

Els serveis que podem necessitar de manera interna (o externa), es podrien

englobar (entre d'altres) dins d'aquestes categories de serveis:

a)�Aplicacions: el servidor disposa d'execució d'aplicacions i com a clients

només n'observem l'execució i hi interactuem. Pot englobar, per exemple, ser-

veis de terminals i execució d'aplicacions en Web.

b)�Fitxers: ens proporciona un espai comú i accessible des de qualsevol punt

de la xarxa on podem emmagatzemar i recuperar els nostres fitxers.

c)�Base�de�dades: se centralitzen dades que es consultaran o les produiran les

aplicacions del sistema en xarxa (o bé altres serveis).

d)�Impressió: es disposa de conjunts d'impressores, en els quals es gestionen

les seves cues i els treballs que s'hi enviïn des de qualsevol punt de la xarxa.

e)�Correu�electrònic: s'ofereixen serveis per a rebre, enviar o reexpedir correu

procedent o destinat tant a l'interior com a l'exterior.

f)�Web: servidor (o servidors) propis de l'organització, d'utilització interna o

externa per als clients.

g)�Informació�de�xarxa: en organitzacions grans és imprescindible poder lo-

calitzar els serveis oferts, recursos compartits o els usuaris mateixos. Es neces-

siten serveis que permetin aquesta localització i la consulta de les propietats

de cada tipus d'objecte.

h)�Serveis�de�noms: es necessiten serveis que permetin anomenar i traduir els

diferents noms pels quals es coneix un mateix recurs.

i)�Serveis�d'accés�remot: en cas de no disposar d'accés directe, hem de disposar

de mètodes alternatius que ens permetin interaccionar des de l'exterior, que

ens deixin accedir al sistema que vulguem.

j)�Serveis�de�generació�de�noms: en l'anomenament de màquines, per exem-

ple, es pot donar una situació molt variable de nombre o que no siguin sempre

les mateixes. Hem de proporcionar mètodes per a identificar-les clarament.

k)�Serveis�d'accés�a�Internet: en moltes organitzacions no cal que hi hagi ac-

cessos directes, sinó accessos per mitjà de passarel·les (gateways) o per servidors

intermediaris (proxys).

l)�Serveis�de�filtratge: mesures de seguretat per a filtrar informació incorrecta

o que afecti la nostra seguretat, i protegir o limitar l'accés als recursos.

GNUFDL • PID_00167524 10 Migració i coexistència amb sistemes no Linux

3) Un sistema de tipus escriptori seria simplement una màquina que s'utilitza

per a les tasques informàtiques rutinàries, de tots els dies (per exemple, el PC

que tenim a casa o a l'oficina).

Exemple

Podríem definir les tasques següents com a comunes (s'inclouen alguns dels

programes GNU/Linux més utilitzats):

• Tasques�ofimàtiques. El programari clàssic d'un paquet ofimàtic: proces-

sador de text, full de càlcul, presentacions, alguna petita base de dades,

etc. Podem trobar paquets com l'OpenOffice (gratuït), l'StarOffice (de pa-

gament, produït per Sun), el KOffice (de KDE), o diversos programes com

el Gnumeric, l'AbiWord, que formarien un paquet per a Gnome (denomi-

nat GnomeOffice).

• Navegació� web. Navegadors com el Mozilla Firefox, el Konqueror,

l'Epiphany, etc.

• Suport� de�maquinari (dispositius USB, d'emmagatzemament, etc.). En

GNU/Linux estan suportats pels controladors adequats, normalment pro-

porcionats en el nucli, o bé per fabricants. També hi ha eines d'anàlisi

de maquinari nou, com Kudzu/HAL (Fedora/Red Hat) o discover (Debian).

Mitjans i entreteniment (gràfics, processament d'imatges, fotografia digi-

tal, jocs i més): en GNU/Linux hi ha una quantitat enorme d'aquestes apli-

cacions, de qualitat molt professional: Gimp (retoc fotogràfic), Sodipodi,

Xine, MPlayer, Gphoto, etc.

• Connectivitat (accés a l'escriptori de manera remota, accés a altres sis-

temes). En aquest aspecte en GNU/Linux hi ha una quantitat enorme

d'eines, ja siguin les de TCP/IP mateix –com ftp, telnet, ssh, web, etc.– o les

d'X Window, que té capacitats d'escriptori remot per a qualsevol màquina

UNIX, com Rdesktop (per a connectar-se a escriptoris Windows), o VNC

(que permet connectar-se a UNIX, Windows, Mac, etc.).

Nota

Pàgines web de paquetsofimàtics:http://openoffice.orghttp://www.koffice.org/http://live.gnome.org/Gnome-Office

GNUFDL • PID_00167524 11 Migració i coexistència amb sistemes no Linux

2. Serveis en GNU/Linux

GNU/Linux disposa de servidors adaptats per a qualsevol ambient de

treball.

Les categories dels serveis que hem apuntat tenen equivalents en serveis que

podem proporcionar des dels nostres sistemes GNU/Linux a la resta de màqui-

nes de la xarxa (i dels quals també podrem actuar com a client):

a)�Aplicacions: GNU/Linux pot oferir serveis de terminals remots, ja sigui per

connexió directa mitjançant interfícies en sèrie de terminals "passius", que ser-

veixin per a visualitzar les aplicacions o interactuar-hi. Una altra possibilitat

és la connexió remota de manera textual, des d'una altra màquina, per mitjà

de serveis TCP/IP com els rlogin, telnet, o de manera segura amb ssh. GNU/Li-

nux proporciona servidors per a tots aquests protocols. En el cas d'executar

aplicacions gràfiques, disposem de solucions mitjançant X Window de mane-

ra remota. Qualsevol client UNIX, Linux o Windows (o d'altres) que disposi

d'un client X Window pot visualitzar l'execució de l'entorn i les seves aplica-

cions. Així mateix, hi ha altres solucions, com VNC, per al mateix problema.

Quant a les aplicacions via Web, GNU/Linux disposa del servidor Apache, i

qualsevol dels múltiples sistemes d'execució web estan disponibles, ja siguin

Servlets/JSP (amb Tomcat) Perl PHP, XML, webservices, etc., i també servidors

d'aplicacions web com Oracle/BEA WebLogic, IBM Websphere, JBoss (lliure),

que també s'executen sobre plataformes GNU/Linux.

b)�Fitxers: es poden servir fitxers de múltiples maneres, des de proporcionar-hi

accés per FTP fins a servir de manera transparent a altres màquines UNIX i

GNU/Linux amb NFS, o bé actuar de client o servidor per a màquines Windows

mitjançant Samba/CIFS.

c)�Base�de�dades: suporta una gran quantitat de bases de dades client-servidor

de tipus relacional, com MySQL i PostgreSQL, i diverses de comercials, com

Oracle o IBM DB2, entre d'altres.

d)�Impressió: pot servir impressores locals o remotes, tant a sistemes UNIX

amb protocols TCP/IP com a Windows mitjançant Samba/CIFS.

GNUFDL • PID_00167524 12 Migració i coexistència amb sistemes no Linux

e)�Correu� electrònic: ofereix tant serveis perquè els clients obtinguin cor-

reu a les seves màquines (servidors POP3 o IMAP), com agents MTA (mail

transfer agent) per a recuperar i retransmetre correu, com el servidor Sendmail

(l'estàndard UNIX) o d'altres com Exim o Postfix i, en el cas de trameses ex-

ternes, el servei SMTP.

f)�Web: està disponible el servidor HTTP Apache, ja sigui en les seves versions

1.3.x o en les noves 2.0.x/2.2.x. A més, podem integrar servidors d'aplicacions

web, com Tomcat, per a servir Servlets/JSP, o servidors d'aplicacions com JBoss.

g)�Informació�de�xarxa: serveis com NIS, NIS+ o LDAP ens permeten centra-

litzar la informació de les màquines, usuaris i recursos diversos de la nostra

xarxa, i això facilita l'administració i els serveis als usuaris, de manera que

aquests no depenguin de la seva situació a la xarxa. Si la nostra organització

té una certa estructura interna, aquests serveis ens permeten modelar-la (mit-

jançant estructures jeràrquiques), deixant accés als recursos a qui els necessita.

h)�Serveis�de�noms: serveis com el DNS per als noms de les màquines i la

seva traducció des d'IP o a IP, per exemple, mitjançant el servidor Bind (el DNS

estàndard UNIX).

i)�Serveis�d'accés�remot: ja sigui per a executar aplicacions o per a obtenir

informació remota de les màquines. Els servidors podrien ser els que hem co-

mentat per a aplicacions: X Window, VNC, etc., i també els que permeten exe-

cutar algunes instruccions remotes sense interactivitat, com rexec, rsh, ssh, etc.

j)�Serveis�de�generació�de�noms: serveis com DHCP permeten xarxes TCP/IP,

una generació dinàmica (o estàtica) de les adreces IP que es disposen en funció

de les màquines que en necessitin.

k)�Serveis�d'accés�a�Internet: en determinades situacions es pot tenir un únic

punt de sortida a Internet (o diversos). Aquests punts solen actuar com a in-

termediaris, ja que tenen l'accés i el redirigeixen als possibles accessos a Inter-

net per part dels clients. També solen actuar de cau (cache) de continguts. En

GNU/Linux podem disposar, per exemple, de l'Squid. Dins d'aquesta catego-

ria, també podria entrar l'actuació d'un sistema GNU/Linux de passarel·la (ga-

teway) o d'encaminador, ja sigui per a dirigir paquets cap a altres xarxes o per a

buscar rutes de retramesa alternatives. També en el cas de petites instal·lacions

com les domèstiques, podríem incloure l'accés a Internet mitjançant mòdem

per als serveis PPP.

l)�Serveis�de�filtratge: una de les mesures de seguretat més utilitzades actual-

ment és la implantació de tallafocs (firewalls). Consisteix en tècniques de fil-

tratge dels paquets entrants o sortints, dels diferents protocols que estiguem

GNUFDL • PID_00167524 13 Migració i coexistència amb sistemes no Linux

usant, per a posar barreres als no desitjats. En GNU/Linux disposem de meca-

nismes com ipchains (obsolet) i iptables (més modern, també denominat Net-

filter) per a implementar els tallafocs.

GNUFDL • PID_00167524 14 Migració i coexistència amb sistemes no Linux

3. Tipologies d'ús

GNU/Linux ofereix, com a sistema, característiques vàlides per a l'ús

des de l'usuari personal fins a l'usuari d'una infraestructura de mitjana

o gran escala.

Des de la perspectiva dels usuaris dels sistemes GNU/Linux, podríem diferen-

ciar usuaris individuals, de mitjana escala i d'organització àmplia:

a)�L'usuari�individual�o�usuari�domèstic: aquest tipus d'usuari disposa d'una

o diverses màquines a la seva llar, que seran compartides o no. En general,

en aquest ambient, GNU/Linux s'utilitzaria per a desenvolupar un sistema

d'escriptori, en el qual serà important la part gràfica: l'escriptori de GNU/Li-

nux. També està adquirint importància, pel creixement dels continguts digi-

tals (foto, vídeo, música), la utilització de GNU/Linux en un ambient domès-

tic, com a servidor de mitjans digitals, o servidor d'arxius, en forma de servi-

dors creats a mida, o de productes comercials de tipus NAS (network attached

storage) casolans que proporcionen servidors Samba, NFS, FTP, impressió, cò-

pia de seguretat i reproducció en temps real de vídeo i àudio.

Quant a la part d'escriptori, tenim dues opcions principals, en forma dels en-

torns Gnome i KDE. Els dos entorns constitueixen opcions perfectament vàli-

des. Tots dos disposen de serveis de visualització i execució de les aplicacions,

i també d'un ampli conjunt d'aplicacions pròpies bàsiques que ens permeten

desenvolupar tot tipus de tasques rutinàries. Els dos entorns ofereixen un es-

criptori visual amb diferents menús, barres d'utilitat i icones, i també navega-

dors de fitxers propis i aplicacions d'utilitat variades. Cada entorn pot executar

les seves aplicacions pròpies i les disponibles en l'altre entorn, encara que cada

aplicació té una execució més bona en el seu entorn propi, en tenir un aspecte

visual més d'acord amb l'entorn per al qual es va dissenyar.

Quant a les aplicacions per a l'usuari personal, inclouríem les típiques del sis-

tema d'escriptori. En el cas que l'usuari disposi d'una xarxa a casa seva, com

per exemple un petit conjunt d'ordinadors amb una xarxa de tipus Ethernet,

també podrien ser interessants serveis per a compartir fitxers i impressores en-

tre les màquines. Podrien ser necessaris serveis com NFS, si hi ha altres mà-

quines Linux, o bé Samba, si hi ha màquines amb Windows (o Mac). Els sis-

temes NAS casolans intenten integrar tots aquests serveis juntament amb un

conjunt d'emmagatzemament en disc (RAID), accessible per xarxa mitjançant

diferents protocols (FTP, HTTP, NFS, Samba...).

GNUFDL • PID_00167524 15 Migració i coexistència amb sistemes no Linux

En el cas de tenir una connexió a Internet d'algun proveïdor d'accés (ISP),

segons la forma de connexió utilitzada, necessitaríem controlar els dispositius

i els protocols corresponents:

• Connexió�per�mòdem: els mòdems telefònics solen utilitzar el protocol

PPP de connexió amb el proveïdor. Hauríem d'habilitar aquest protocol

i configurar els comptes que tinguem habilitats en el proveïdor. Un pro-

blema important amb Linux és el tema dels winmodems. Aquests mòdems

(amb excepcions) no estan suportats, ja que no són un mòdem real, sinó

una simplificació de maquinari més un programari controlador, i la majo-

ria funciona únicament amb Windows, per la qual cosa cal evitar-los (si

no estan suportats) i comprar mòdem "reals" (complets).

• Connexió�mitjançant� un�mòdem� ADSL: el funcionament seria sem-

blant, es podria utilitzar el protocol PPP o un altre denominat EoPPP. Això

pot dependre del fabricant del mòdem i del tipus, Ethernet o USB.

• Connexió�per�ADSL�amb�encaminador: la configuració és molt simple,

ja que en aquesta situació només cal configurar la targeta de xarxa Ethernet

o la targeta wireless en el nostre sistema per a connectar a l'encaminador

ADSL (aquest sol proporcionar serveis d'IP dinàmica per a les màquines

client).

Una vegada la interfície a Internet està connectada i configurada, l'últim punt

és incloure el tipus de serveis que necessitarem. Si només volem actuar com a

clients a Internet, n'hi haurà prou que utilitzin les eines client dels diferents

protocols, ja sigui ftp, telnet, el navegador web, el lector de correu o notícies,

etc. Si a més volem oferir serveis cap a l'exterior –per exemple, publicar una

web (servidor web) o permetre el nostre accés extern a la màquina (serveis de

ssh, telnet, ftp, X Window, VNC, etc.), en aquest cas, servidor– hem de recordar

que això només serà possible, en principi, si el nostre proveïdor ens ofereix

adreces IP fixes (estàtiques) per a la nostra màquina. D'una altra manera, la

nostra adreça IP canviaria a cada connexió i la possibilitat de proporcionar un

servei es tornaria molt difícil o impossible (hi ha possibles solucions a aquest

problema, com els serveis, gratuïts, oferts per l'empresa DynDNS).

Un altre servei interessant seria compartir l'accés a Internet entre les màqui-

nes de què disposem a partir d'un sistema GNU/Linux que estigui connectat a

l'exterior (que actua de servidor intermediari o passarel·la per a la resta de mà-

quines). De fet, diversos encaminadors ADSL són en realitat servidors d'aquest

tipus, i molts fabricants utilitzen un GNU/Linux incrustat en el microprogra-

mari (firmware) dels encaminadors. Tot i així, si disposem d'una única màqui-

na amb accés a Internet (mòdem telefònic o mòdem ADSL), podem establir

aquesta màquina amb connexió compartida per a la resta de la nostra xarxa

casolana.

GNUFDL • PID_00167524 16 Migració i coexistència amb sistemes no Linux

b)�Usuari�de�mitjana�escala: és un usuari d'una organització de mitjana esca-

la, ja sigui una petita empresa o un grup d'usuaris. Aquests usuaris disposaran

de connectivitat en xarxa local (per exemple, una LAN) amb algunes màqui-

nes i impressores connectades. I tindran accés directe a Internet, bé per mitjà

d'algun servidor intermediari (punt o màquina destinats a la connexió exter-

na), o bé d'unes quantes màquines connectades físicament a Internet. En ge-

neral, en aquest ambient, el treball sol ser en part local i en part compartit (ja

siguin recursos com les impressores o les aplicacions comunes). Normalment,

necessitarem sistemes d'escriptori; per exemple, en una oficina podem utilit-

zar les aplicacions ofimàtiques juntament amb clients Internet, i potser també

sistemes de tipus estació de treball. Per exemple, en treballs d'enginyeria o ci-

entífics es poden utilitzar aplicacions de DAO (en anglès CAD), de processa-

ment d'imatges, aplicacions de càlcul matemàtic intensiu, etc., i segurament

hi haurà algunes màquines més potents destinades a aquestes tasques.

Es pot comentar que aquest ambient està una mica en transició per a esdevenir

el comú de l'usuari individual, ja que a causa de les connexions de banda ampla

disponibles a les llars com més va s'amplien més les característiques de l'usuari

domèstic i s'apropen a aquest segon ambient. De fet, de vegades l'usuari de

mitjana escala se sol denominar SOHO (small office, home office).

En aquest ambient d'ús, necessitarem serveis de compartició de recursos com

fitxers, impressores, possiblement aplicacions, etc. Per tant, en un sistema

GNU/Linux seran adequats els serveis d'NFS, serveis d'impressió i Samba (si

hi ha màquines Windows amb què calgui compartir fitxers o impressores).

També és possible que tinguem necessitat d'entorns de bases de dades, algun

servidor intern de Web amb aplicacions compartides, etc.

c)�Usuari�d'organització� àmplia: aquest tipus d'usuari és una evolució de

l'anterior, i se'n diferencia en la mida de l'organització i en els recursos de què

pot disposar, que podrien arribar a ser molt alts, de manera que es necessitari-

en alguns recursos de sistemes de directori de xarxa de tipus NIS, NIS+ o LDAP

per a poder manejar la gran quantitat d'informació de l'organització i reflec-

tir-ne l'estructura, i també, segurament, disposar de grans infraestructures de

serveis cap als clients externs, en general en forma de llocs web amb aplicaci-

ons diferents.

En aquest tipus d'organitzacions es presenten nivells d'heterogeneïtat elevats,

tant en el maquinari com en el programari dels sistemes, i podríem trobar

moltes arquitectures i diferents sistemes operatius, per la qual cosa la tasca

principal consisteix a facilitar la compatibilitat de les dades via bases de dades

i formats de documents estàndard, que facilitin la interconnexió mitjançant

protocols, clients i servidors estàndard (amb elements TCP/IP).

GNUFDL • PID_00167524 17 Migració i coexistència amb sistemes no Linux

4. Migrar o coexistir

A continuació, plantejarem un altre aspecte important en el procés d'adopció

dels sistemes GNU/Linux. Suposem que o bé som principiants en el maneig

d'aquest sistema o, al contrari, que som experimentats i volem adoptar un o

diversos sistemes GNU/Linux com a usuaris individuals, per al treball en la

nostra petita organització, o que ens estem plantejant substituir la infraestruc-

tura completa (o parcial) de la nostra gran empresa o organització.

Fer aquesta migració no és quelcom trivial: cal avaluar les opcions mit-

jançant un estudi en el qual s'analitzin tant els costos com les prestaci-

ons que esperem obtenir. A més, es pot dur a terme de manera total o

parcial, amb cert grau de coexistència amb els sistemes antics.

Ens trobem davant d'un projecte de migració, total o parcial, dels nostres sis-

temes informàtics a GNU/Linux, i com a administradors som responsables

d'aquest procés.

Com en tot projecte, caldrà estudiar la manera de respondre qüestions com: és

rendible el canvi, en prestacions, en cost? Amb quin objectiu ho fem? Quins

requisits volem o hem de complir? Podem fer o és necessària una migració

completa? Hi ha d'haver coexistència amb altres sistemes? Caldrà formar de

nou els usuaris? Podrem utilitzar el mateix maquinari o en necessitarem un de

nou? Hi haurà costos afegits importants? O, simplement... sortirà bé? Aques-

tes i moltes preguntes més són les que haurem d'intentar respondre. En el cas

empresarial, la resposta implicaria la definició d'un projecte o pla de migració,

amb els seus objectius, l'anàlisi de requisits, el procés d'implantació, els estudis

econòmics, els plans de formació d'usuaris, els calendaris de fases de desenvo-

lupament i implementació, etc. No entrarem en això, però ens plantejarem

algunes de les qüestions de manera senzilla. I en l'apartat 5 examinarem uns

petits casos pràctics de qüestions que cal examinar en el procés de migració.

A més, en el moment en què comencem la migració als sistemes GNU/Linux

és quan començarem a apreciar els avantatges que aportarà a la nostra orga-

nització:

a)�Costos: reducció dels costos, en llicències de programari del sistema i de

les aplicacions. GNU/Linux té un cost zero quant a les llicències, si s'obté des

de la Xarxa (per exemple, en forma d'imatges dels CD de la distribució), o un

cost menyspreable tenint en compte que la millor comparació per a sistemes

GNUFDL • PID_00167524 18 Migració i coexistència amb sistemes no Linux

equivalents en prestacions serien sistemes Windows Server, amb costos que

se situen en rangs de diversos milers d'euros per llicència, sense incloure gran

part del programari extra que proporciona una distribució GNU/Linux típica.

Però cal anar amb compte, perquè no s'han de desestimar els costos de mante-

niment i formació. Si la nostra organització només està formada per usuaris i

administradors Windows, podem tenir costos alts en nova formació, personal,

i potser manteniment. Per això, les grans empreses volen dependre d'algun

distribuïdor comercial de GNU/Linux que els implanti i mantingui el siste-

ma, com, per exemple, les versions empresarials que ofereixen Red Hat, SUSE

i d'altres. Aquestes versions GNU/Linux també tenen costos de llicència alts

(comparables a Windows), però, al contrari, estan ja adaptades a estructures

empresarials i porten programari propi per a gestionar la infraestructura in-

formàtica de les empreses. Un altre aspecte important, que resumiria aques-

ta estimació de costos, és el concepte de TCO (total cost of ownership), com

a avaluació global dels costos associats que ens trobarem en emprendre un

desenvolupament tecnològic. No solament cal avaluar els costos de llicènci-

es i maquinària, sinó també els costos de suport i formació de les persones i

productes implicats, que poden ser tan importants o més que els de la solució

implementada.

b)�Suport: GNU/Linux té el suport de manteniment més gran que hagi tingut

un sistema operatiu, i majoritàriament gratis. Malgrat això, algunes empreses

no l'adopten per certs temors, i objecten que no hi ha suport del producte, i

es dediquen a comprar distribucions comercials que els ofereixen contractes

de suport i manteniment. GNU/Linux té una comunitat de suport mundial

ben establerta, per mitjà de diferents organitzacions que proporcionen docu-

mentació lliure (els famosos howto), fòrums d'usuaris especialitzats, comuni-

tats d'usuaris de pràcticament qualsevol regió o país del món, etc. Qualsevol

dubte o problema amb què ens trobem es pot buscar (per exemple, amb algun

dels cercadors en Internet), i podem tenir respostes en minuts. Si hem trobat

un error o una situació no provada, en podem informar en diversos llocs (fò-

rums, llocs de desenvolupament, llocs d'errors de distribucions, etc.) i obtenir

solucions en hores o pel cap alt en alguns dies. Sempre que aparegui un dubte o

algun problema, cal intentar primer alguns procediments (així es desenvolupa

l'aprenentatge d'administració), i si no obtenim solució en un temps pruden-

cial, consultar la comunitat GNU/Linux per si a algun altre usuari (o un grup)

li ha ocorregut el mateix problema i ha obtingut solució. Si no, sempre podem

informar del problema (llocs d'errors de les distribucions), que ens plantegin

algunes solucions temporals, o es comencin a elaborar revisions dels paquets

de programari afectats, si es considera que és un problema important.

Algunes fonts de suport GNU/Linux

Linux Howto's: http://www.tldp.org/

HowtoForge: http://howtoforge.org/

Linux Questions: http://www.linuxquestions.org/

GNUFDL • PID_00167524 19 Migració i coexistència amb sistemes no Linux

Linux Forum: http://www.linuxforums.org/forum/

Suport de Debian:

http://www.debianhelp.org/

http://forums.debian.net/

http://www.debian-administration.org/

Suport de Fedora:

http://fedoraforum.org/

http://fedorasolved.org/

http://fedoraunity.org/

4.1. Identificar requisits de serveis

Si tenim uns sistemes ja funcionant, haurem de tenir implantats alguns serveis

dels quals els usuaris seran clients, o serveis que ajudin la infraestructura del

suport informàtic. Els serveis entraran dins d'alguna de les categories vistes

anteriorment, amb les opcions GNU/Linux que comentem.

Els sistemes GNU/Linux no són "nous" en absolut, i deriven (com hem vist en

la introducció) d'una història de més de quaranta anys d'ús i desenvolupament

dels sistemes UNIX. Gràcies a això, una de les primeres coses que veurem és

que no ens falta suport per a cap tipus de servei que vulguem. A tot estirar, hi

haurà diferències en la manera de fer les coses. A més, molts dels serveis que

s'utilitzen en els sistemes informàtics van ser pensats, investigats, desenvolu-

pats i implementats al seu dia per a UNIX, i posteriorment van ser adaptats a

altres sistemes (com Windows, amb més o menys encert).

Moltes de les empreses que disposen de UNIX de propietat participen

en GNU/Linux i ofereixen alguns dels seus desenvolupaments a la co-

munitat.

Qualsevol servei disponible en cada moment podrà ser adaptat en els sistemes

GNU/Linux amb serveis equivalents (si no iguals).

Exemple

Un cas famós és el dels servidors Samba [Woo00] [Sam]. Windows ofereix el que deno-minen compartir arxius i impressores en xarxa mitjançant uns protocols propis denominatsgenèricament SMB (server message block) [Smb] (amb suport de xarxa en els protocols Net-Bios i NetBEUI). També és d'ús comú el nom CIFS (common Internet file system), que éscom es va denominar el protocol en una segona revisió (que continuava incloent SMBcom a protocol base). Aquests protocols permeten compartir carpetes d'arxius (o discos)i d'impressores en una xarxa de màquines Windows (en una configuració de treball engrup, o en dominis Windows). En UNIX aquesta idea ja era antiga quan va aparèixer enWindows, i es disposava de serveis com NFS de compartició d'arxius o la gestió remotad'impressores, sota protocols TCP/IP.

Un dels problemes de substituir els serveis Windows de compartició basats en NetBios/NetBEUI (i últimament amb NetBios sobre TCP/IP), era com donar suport a aquests pro-tocols, ja que, si volíem conservar les màquines client amb Windows, no podíem utilitzar

GNUFDL • PID_00167524 20 Migració i coexistència amb sistemes no Linux

els serveis UNIX (encara que diferents fabricants han implementat clients UNIX per aWindows, solen ser una opció o bé cara o bé no completa). Per a aquest problema, Sambaes va desenvolupar com un servidor per a UNIX que suportava els protocols Windowsi podia substituir una màquina client-servidor Windows de manera transparent; els usu-aris clients amb Windows no notarien absolutament res. És més, el resultat va ser queen la major part dels casos el rendiment era comparable, si no millor que en la màquinaoriginal amb els serveis Windows.

Actualment Samba [Sam] evoluciona constantment per mantenir la compatibilitat delsserveis Windows de compartició d'impressores i arxius, a causa dels canvis generals aquè Microsoft sotmet els protocols SMB/CIFS [Smb] (base que Samba implementa) encada versió nova de Windows; en particular, l'evolució des dels esquemes de treball engrup en les seves versions client de l'operatiu, als esquemes centralitzats en servidor (oen grups), amb serveis particulars d'autenticació d'usuaris (NTLM, NTLMv2, Kerberos)i emmagatzemament centralitzat de la gestió del sistema com Active Directory. Tambées varia la configuració de servidors de dominis en les diferents versions de WindowsServer existents (ja siguin amb servidors controladors primaris, còpia de seguretat o ActiveDirectory).

Actualment, en els processos de migració amb Samba haurem d'observar quines configu-racions de clients/servidors Windows (i les seves versions) hi ha en el sistema informàtic,i també quins mecanismes d'autenticació dels usuaris o gestió de la informació s'utilitzen(grups, dominis, sistema d'autenticació). A més, necessitarem conèixer l'estructuració delsistema informàtic en dominis (i els seus servidors controladors, membres o servidorsaïllats), per a poder fer un mapatge complet i correcte envers solucions basades sobreSamba, i en serveis complementaris d'autenticació d'usuaris (winbind, kerberos, nss_ldap)i gestió de directoris (com per exemple OpenLDAP) [Sama] [Samb].

4.2. Procés de migració

En el procés de migració, cal tenir en compte què es vol migrar, i si es vol fer

de manera completa o parcial, perquè coexisteixi amb altres serveis o equips

o amb un sistema operatiu diferent.

En aquests ambients, en les grans organitzacions, en les quals trobem

un gran nombre de sistemes heterogenis, caldrà tenir en compte que

segurament no es migraran tots, en especial els sistemes de tipus estació

de treball dedicats a l'execució d'alguna aplicació bàsica per a una tasca.

Pot ser que no hi hagi l'aplicació equivalent o simplement ens podem

voler quedar amb aquests sistemes per raons de cost o per rendibilitzar

la inversió feta.

Podem migrar diversos elements, ja sigui els serveis que oferim, les màquines

que els serveixen o els clients que hi accedeixen. Els elements que es migrin

poden ser variats.

En la migració, passarem per la substitució d'un servei per un altre equivalent,

normalment amb el menor impacte possible si no volem substituir també els

clients.

En cas de clients Windows, podem usar el servidor Samba per a substituir els

serveis d'arxius i impressores que proporcionaven les màquines Windows. Si

es tracta d'altres serveis, els podrem substituir pels equivalents GNU/Linux. En

el cas de substituir només algun servei, normalment s'inhabilitarà el servei en

GNUFDL • PID_00167524 21 Migració i coexistència amb sistemes no Linux

la màquina que l'oferia i s'habilitarà en el sistema nou. Poden ser necessaris

canvis en els clients (per exemple, adreces de la nova màquina o paràmetres

relacionats amb el servei).

Si la funció la complia completament una màquina servidora, cal analitzar si

la màquina estava dedicada a un o a més serveis i si tots podran ser substituïts.

En aquest cas, només cal reemplaçar la màquina antiga per la nova (o man-

tenir l'antiga) amb els serveis sota GNU/Linux i, en tot cas, modificar algun

paràmetre en els clients si fos necessari. Normalment, abans d'efectuar el can-

vi, és convenient provar la màquina separadament amb alguns clients per a

assegurar-nos que compleix la seva funció correctament i substituir les màqui-

nes en algun període d'inactivitat del sistema.

En qualsevol cas, segurament caldrà fer còpies de seguretat de les dades ante-

riors al nou sistema, per exemple, el sistema de fitxers o les aplicacions dispo-

nibles al servidor original. Un altre dels punts previs que cal tenir en compte

és la portabilitat de les dades; un problema que sovint presenta difícil solució

si en l'organització s'utilitzaven formats de dades o aplicacions dependents

d'una plataforma.

Alguns casos pràctics de problemes amb què es troben algunes empreses avui dia són:

• Aplicacions�web�amb�ASP�o�ASP.NET: algunes d'aquestes aplicacions només es po-den dur a terme en plataformes web amb Windows i el servidor web IIS de Microsoft.Caldria evitar-les si en algun moment pensem fer una migració de plataformes i novolem reescriure-les o pagar una empresa perquè ho faci. En plataformes GNU/Linuxestà disponible el servidor web Apache (el més utilitzat en Internet), que també espot utilitzar amb Windows. Aquest servidor suporta ASP en Perl (en Windows se solutilitzar Visual Basic, C# i JavaScript generalment) i hi ha solucions de tercers pera migrar els ASP o convertir-los més o menys. Però si la nostra empresa depenguésd'això, seria molt costós en temps i diners. Una solució pràctica hauria estat fer elsdesenvolupaments web en Java (que sí que és portable entre plataformes) o altres so-lucions com PHP. En aquest punt es pot destacar el projecte Mono [Mon] (patrocinatper Novell) per a la portabilitat de part de l'entorn .NET de Microsoft a GNU/Linux,en particular gran part de les API de .NET, el llenguatge C# i l'especificació ASP.NET.Permeten una migració flexible d'aplicacions .NET basades en l'API .NET que estiguisuportada per la plataforma Mono. D'altra banda, com a alternativa GPL a Mono, espot assenyalar el projecte DotGnu [Dgn] de l'FSF.

• Bases�de�dades: utilitzar, per exemple, un SQL Server de Microsoft, ens fa totalmentdependents de la seva plataforma Windows. A més, si utilitzem solucions de propie-tat en un entorn concret per a aplicacions de la base de dades, seran de transferènciadifícil. Altres bases de dades, com Oracle i DB2 (d'IBM) són més portables perquèdisposen de versió per a les diferents plataformes (GNU/Linux inclosa), o per a uti-litzar llenguatges de programació més portables. També es podria treballar amb sis-temes de bases de dades PostgreSQL o MySQL (també tenen versió per a Windows)disponibles en GNU/Linux, i que permeten una transició més fàcil. Així mateix, si escombina amb el desenvolupament web tenim moltes facilitats. En aquest sentit, avuidia s'utilitzen sistemes com aplicacions web amb Java, ja siguin miniaplicacions deservidor, miniaplicacions o EJB, o bé solucions com les famoses LAMP, combinacióde GNU/Linux, Apache, MySQL i PHP.

4.2.1. Estacions de treball

En aquestes migracions el problema més gran parteix de les aplicacions, ja que

són les que donen la seva raó de ser a l'estació de treball, ja siguin programes

de DAO, d'animació, d'enginyeria o científics. Aquí serà important que les pu-

GNUFDL • PID_00167524 22 Migració i coexistència amb sistemes no Linux

guem substituir per aplicacions iguals o, com a mínim, compatibles amb les

mateixes característiques o amb la funcionalitat esperada, o amb portabilitat

de formats de dades o fitxers. Normalment, la major part d'aquestes aplicaci-

ons ja provenen d'un món UNIX, ja que la majoria d'aquestes estacions de tre-

ball estaven pensades com a màquines UNIX. Per això, potser n'hi hagi prou

amb una recompilació o una adaptació mínima al nou sistema GNU/Linux, si

disposem del codi font (com sol passar en moltes aplicacions científiques). Si

es tracta d'aplicacions comercials, els fabricants (de programari d'enginyeria i

científic) les comencen a adaptar a GNU/Linux, encara que en aquests casos

les aplicacions solen ser molt cares (poden valdre perfectament de milers a

centenars de milers d'euros). També per a alguns programaris hi ha solucions

lliures compatibles en més o menys mesura. Cal examinar quines solucions

lliures tenim i si s'adapten mínimament a les nostres necessitats.

4.2.2. Màquines clients d'escriptori

Les màquines d'escriptori continuen essent un maldecap en el món GNU/Li-

nux, ja que ofereixen bastants problemes addicionals. En els servidors, les mà-

quines es destinen a funcionalitats clares, que en general no requereixen in-

terfícies gràfiques complexes (moltes vegades amb comunicació textual és su-

ficient), el maquinari és de propòsit específic i d'altes prestacions, es compra

per a unes funcionalitats concretes i les aplicacions solen ser els servidors ma-

teixos inclosos en el sistema operatiu o alguns de tercers. A més, aquestes mà-

quines solen ser gestionades per personal de tipus administrador que té amplis

coneixements del que gestiona. Per contra, en el cas de l'escriptori, ens trobem

amb un factor problemàtic (en si mateix, i encara més per als administradors):

els usuaris finals del sistema. Els usuaris d'escriptori esperen disposar de po-

tents interfícies gràfiques, més o menys intuïtives, i d'aplicacions que perme-

tin desenvolupar les seves tasques rutinàries, normalment ofimàtiques. Aquest

tipus d'usuari (amb excepcions) no té necessàriament uns coneixements in-

formàtics elevats. En general, els seus coneixements són d'ofimàtica i sol usar

un nombre reduït d'aplicacions amb més o menys domini. Aquí GNU/Linux

té un problema clar, ja que UNIX com a tal mai no va ser pensat com un sis-

tema purament d'escriptori, i només va ser adaptat a posteriori amb sistemes

gràfics com X Window i els diferents entorns d'escriptori, com els actuals de

GNU/Linux: Gnome i KDE. A més, l'usuari final sol estar acostumat a sistemes

Windows (que copen gairebé un 95% del mercat d'escriptori), encara que la

tendència també està canviant, amb més plataformes disponibles en escriptori

com Mac OS X (de fet, un UNIX amb interfície d'escriptori pròpia, encara que

pot usar també X Window).

GNUFDL • PID_00167524 23 Migració i coexistència amb sistemes no Linux

L'ambient d'escriptori és una batalla encara per lliurar per als sistemes

GNU/Linux; han de vèncer la desconfiança dels usuaris a canviar de sis-

tema i saber explicar que ofereixen alternatives de senzillesa i aplicaci-

ons, que solucionen les tasques dels usuaris.

En el cas de l'escriptori, GNU/Linux ha de superar uns quants obstacles. Un

dels més crítics és que no està preinstal·lat a les màquines (aquesta tendèn-

cia està canviant gràcies a alguns fabricants i a l'emergent mercat dels portà-

tils tipus notebook), fet que obliga l'usuari a tenir coneixements per a poder-lo

instal·lar.

Altres problemes podrien ser:

• Desconfiança�de�l'usuari: una pregunta que es pot plantejar un usuari és:

per què he de canviar de sistema? M'oferirà el mateix el nou entorn? Una

de les raons bàsiques per a fer el canvi seria el programari de qualitat i el

seu preu, del qual una bona part és lliure. En aquest punt, afecta el tema de

les còpies de programari il·legals. Sembla que els usuaris consideren que el

seu programari és gratis, quan en realitat estan en una situació il·legal. El

programari GNU/Linux ofereix gran qualitat a baix cost (o gratis en molts

casos) i ofereix múltiples alternatives per a una mateixa tasca.

• Senzillesa: de vegades, l'usuari es mostra perdut si el sistema no li ofereix

algunes referències que el facin semblant al que ja coneix, com el compor-

tament de la interfície, o que les eines siguin semblants en funcionalitat

(de fet, el que es denomina la usabilitat del sistema). Espera que, en gene-

ral, no necessiti gaire temps extra per a aprendre i manejar el nou sistema.

GNU/Linux encara presenta alguns problemes en les instal·lacions més o

menys automàtiques, per a les quals, encara que milloren dia a dia, encara

és necessari un cert grau de coneixement. En aquest punt, es pot destacar

la facilitat d'instal·lació en diferents ambients oferta per distribucions re-

cents orientades a escriptori com Ubuntu [Ubu], que han permès que la

instal·lació sigui molt senzilla i fins i tot més que la de les altres platafor-

mes. Un altre problema habitual és el suport del maquinari del PC; mal-

grat que està millorant molt, els fabricants actualment no li paren l'atenció

adequada (en part per la quota de mercat d'usuari personal). Fins que no

hi hagi una intenció clara en aquest aspecte, no podrem tenir el mateix

suport que en altres sistemes de propietat (com en Windows). Encara que

cal destacar el treball de la comunitat del nucli de Linux per donar el su-

port adequat a noves tecnologies, en alguns casos ajudant el fabricant, o

preparant suport primari (si no està suportat pel fabricant) o alternatiu a

l'ofert pel fabricant.

• Transparència: els entorns GNU/Linux tenen molts mecanismes comple-

xos, com els dimonis, serveis, fitxers ASCII difícils de configurar, etc. Per a

GNUFDL • PID_00167524 24 Migració i coexistència amb sistemes no Linux

un usuari final, seria necessari poder ocultar totes aquestes complexitats,

mitjançant programes gràfics, assistents de configuració, etc. És un dels

camins que han pres algunes distribucions com Red Hat, Mandriva, Ubun-

tu o Novell SUSE.

• Suport�d'aplicacions�conegudes: un usuari ofimàtic típic tindrà el pro-

blema de la portabilitat de les seves dades, o del tractament dels formats

d'aquestes. Què fa amb les dades que tenia fins al moment? Aquesta qües-

tió s'està millorant dia a dia, gràcies als paquets ofimàtics, que comencen

a tenir les funcionalitats necessàries per a un usuari d'escriptori. Per exem-

ple, si ens plantegem una migració des d'un ús d'un paquet Office de Win-

dows, podem trobar paquets com l'OpenOffice (programari lliure i gratuït),

que pot llegir (i crear) els formats (amb algunes restriccions) de fitxers Of-

fice (de diferents versions). La compatibilitat de formats no és que sigui

difícil, quan són oberts, però en el cas Windows Microsoft continua man-

tenint una política de formats tancats (amb algunes modificacions en els

últims temps), i cal fer un treball considerable per a poder utilitzar aquests

formats, mitjançant reenginyeria inversa, un procés bastant costós. A més,

en l'era d'Internet, en què la informació se suposa que es mou lliurement,

els formats tancats sense documentar són més un obstacle que una altra

cosa. El millor és utilitzar formats oberts editables com l'RTF (encara que

aquest cas també té algun problema, per les múltiples versions que hi ha), o

bé formats basats en XML (l'OpenOffice genera els seus documents propis

en formats basats en XML), o PDF per a la documentació de lectura. També

cal destacar els esforços fets recentment per la comunitat OpenOffice per

a la creació de l'estàndard OpenDocument (usat per aquest programa a

partir de les versions 2.x i adoptat per altres paquets ofimàtics), que han

permès disposar d'un format lliure com a estàndard ISO per a la creació

de documents. Aquest fet ha obligat Microsoft a obrir (parcialment) el seu

format en les versions a partir d'Office 2007, i ha incorporat els formats do-

cumentats OpenXML (i ha inclòs suport per als formats OpenDocument),

ja que moltes administracions públiques obliguen en els seus contractes de

sistemes d'informació que els formats de dades siguin estàndards oberts.

• Alternatives�vàlides: el programari que es deixa d'usar ha de tenir alter-

natives que compleixin el treball anterior en l'altre sistema. En la ma-

joria d'aplicacions hi ha una o diverses alternatives amb funcionalitats

semblants, si no superiors. Es poden trobar per Internet diferents llistes

d'equivalències (més o menys completes) d'aplicacions Windows amb les

seves corresponents GNU/Linux (n'hem comentat algunes anteriorment

en aquest mòdul).

• Suport�d'execució�d'altres�aplicacions�de�diferents�sistemes: en algunes

condicions és possible executar aplicacions d'altres sistemes UNIX (de la

mateixa arquitectura, per exemple Intel x86), o bé d'MS DOS o Windows,

mitjançant paquets de compatibilitat o algun tipus d'emuladors. GNU/Li-

nux disposa d'eines d'escriptori remot per a altres plataformes, i de su-

Nota

Per a exemples d'aplicacionsequivalents vegeu:http://www.linuxalt.com/http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_softwarehttp://www.linuxrsp.ru/win-lin-soft/table-eng.html

GNUFDL • PID_00167524 25 Migració i coexistència amb sistemes no Linux

port d'aplicacions Windows amb paquets com Wine, que permet executar

abundant quantitat de programari sense problemes. Una altra possibilitat,

per a programari que s'hagi de mantenir, és la creació de màquines virtuals

que executin la plataforma amb el programari que no hem pogut migrar.

Sistemes com VirtualBox, Vmware o d'altres ens donaran suport en aquest

cas.

La major part d'aquests problemes que apareixen en les migracions d'escriptori

s'estan superant a poc a poc i ens permetran, en el futur, gaudir de més quo-

ta d'usuaris GNU/Linux a l'escriptori i, a mesura que augmentin, disposar

d'aplicacions millors, ja que les empreses de programari implementaran versi-

ons per a GNU/Linux.

En el cas empresarial, això es pot superar amb una migració suau, primer de

les etapes de servidors i estacions de treball, per a passar després per un procés

de formació àmplia dels usuaris en els nous sistemes i aplicacions i, finalment,

integrar-los al seu escriptori.

Un procés que ajudarà en gran manera és la introducció del programari de co-

di obert en diferents fronts, per exemple en les fases educatives i en les admi-

nistracions públiques. En aquest sentit, són pioners la comunitat autònoma

d'Extremadura, amb la seva distribució GNU/Linux anomenada Linex, el Gua-

daLinex de la Junta d'Andalusia, o bé recents mesures per a implantar aquest

programari en l'educació primària, o les iniciatives d'algunes universitats de

dur a terme cursos i matèries amb aquests sistemes.

GNUFDL • PID_00167524 26 Migració i coexistència amb sistemes no Linux

5. Taller de migració: anàlisi de casos d'estudi

En aquest taller, intentarem aplicar el que hem estudiat en aquest mòdul per

a analitzar uns processos de migració senzills i algun detall de les tècniques

necessàries (en el cas de tècniques de xarxa o servidors específics, les veurem

juntament amb la resta de continguts dels materials d'administració i admi-

nistració avançada).

Ens plantejarem els casos d'estudi següents:

• Migració individual d'un usuari d'escriptori Windows a un sistema GNU/

Linux.

• Migració d'una petita organització que disposa de sistemes Windows i al-

guns UNIX.

• Migració d'un servidor Windows aïllat (standalone) a un servidor Samba

en GNU/Linux.

5.1. Migració individual d'un usuari d'escriptori Windows a un

sistema GNU/Linux

Un usuari es planteja la migració a GNU/Linux [Ray02b]. Primer, es passarà

per un període de convivència, de manera que l'usuari disposarà de tots dos

sistemes, i dedicarà cada un a una sèrie de tasques: continuarà desenvolupant

tasques en Windows mentre es familiaritza amb el nou sistema i trobarà pro-

gramari equivalent, o programari nou que li permeti fer altres tasques que

abans no podia fer.

La migració és, per a un usuari personal, potser un dels processos més

complexos; cal oferir-li alternatives al que ja utilitza normalment, de

manera que l'adaptació no comporti gaires complexitats extra i es pugui

adaptar progressivament amb facilitat al nou sistema.

Podem fer una instal·lació dual [Ban01] [Sko03b] del sistema original (un Win-

dows, per exemple), juntament amb el sistema GNU/Linux.

Un primer pas en una determinada configuració de màquina consistirà a ve-

rificar que el nostre maquinari sigui compatible amb Linux [Pri02], ja sigui

per mitjà d'alguna llista de compatibilitat de maquinari o verificant-ho amb el

fabricant, per si fos necessari adquirir nous components o configurar d'alguna

manera particular l'existent. Si desconeixem el nostre maquinari, el podem ve-

rificar o bé en Windows amb l'"administrador de dispositius" (al panell de con-

trol), o amb algun programari de reconeixement de maquinari. D'altra banda,

Nota

Sobre Linux Hardware Howtovegeu:http://www.tldp.org/HOWTO/HardwareHOWTO/index.html

GNUFDL • PID_00167524 27 Migració i coexistència amb sistemes no Linux

un mètode recomanable és la utilització de distribucions GNU/Linux de tipus

live CD (Knoppix, Ubuntu, Fedora Live), que ens permetran sense instal·lació

física comprovar el funcionament de GNU/Linux en el nostre maquinari, ja

que l'únic requisit és la possibilitat d'arrencada del sistema des de CD/DVD

(en alguns casos, es necessitarà modificar la configuració BIOS per a perme-

tre aquesta arrencada). Hi ha live CD com Knoppix [Knp] amb gran suport de

maquinari per a les comprovacions, i també en la majoria de les distribucions

GNU/Linux que solen oferir live CD per a la comprovació inicial de funciona-

ment (en alguns casos, per exemple amb l'Ubuntu [Ubu], la instal·lació com-

pleta es pot fer des del live CD mateix). En tot cas, es pot assenyalar que la

prova amb un live CD concret no ens impedeix que puguin sorgir dificultats

en la instal·lació final, perquè el live CD no és de la mateixa distribució GNU/

Linux que la que instal·larem finalment o perquè les versions del sistema o les

aplicacions no són les mateixes.

Quant a la instal·lació física en disc, necessitarem disposar o bé d'espai lliure en

disc no particionat, o bé, si estem en particions de tipus FAT32/NTFS, podem

alliberar espai amb programes que permetin el reajustament de la mida de les

particions, que permeten retallar la partició existent (una còpia de seguretat

de les dades és evidentment recomanable). Actualment, la major part de les

distribucions suporten diferents esquemes de particionament del disc i el retall

de particions, encara que depenent de la distribució poden sorgir problemes

(es recomana una còpia de seguretat prèvia sempre al procés d'instal·lació). En

cas de no disposar de l'espai suficient, o de tenir particions amb sistemes de

fitxers que presentin problemes (per exemple, NTFS en algunes distribucions),

caldrà plantejar comprar un nou disc dur complementari, que dedicarem to-

talment o en part a GNU/Linux. Si la màquina disposa d'arrencada des d'USB,

una possibilitat és disposar d'un disc dur extern USB i fer la instal·lació allà.

També és molt usada la virtualització mitjançant màquines virtuals de tipus

VirtualBox o Vmware, que ens permet instal·lar una distribució sobre un PC

virtual, encara que en aquest cas no tindrem una experiència d'instal·lació

amb el nostre maquinari real.

Una vegada completada la revisió del maquinari, haurem de decidir la distri-

bució del sistema GNU/Linux que usarem (una possibilitat apuntada abans és

escollir un live CD que ens hagi satisfet, i passar a la instal·lació de la distribu-

ció). Si l'usuari és poc experimentat en GNU/Linux, o té coneixements bàsics

d'informàtica, és millor decidir-se per alguna de les distribucions més "amiga-

bles" per a l'usuari, com Fedora, Mandriva, Novell SUSE o similars. Es poden

destacar les facilitats d'Ubuntu en aquest punt. Si tenim més coneixements o

estem temptats d'experimentar, podem provar una distribució Debian. En el

cas de les comercials, la distribució, la majoria de vegades, amb un maquinari

compatible (en alguns casos com Red Hat, Ubuntu Server i Novell SUSE, amb

les versions empresarials les distribuïdores certifiquen el maquinari que supor-

ten), s'instal·la perfectament sense problemes, i es fan configuracions bàsiques

que permeten ja utilitzar l'operatiu. En el procés haurem d'instal·lar el progra-

GNUFDL • PID_00167524 28 Migració i coexistència amb sistemes no Linux

mari, que serà definit per uns conjunts de programari orientats a servidors, a

aplicacions concretes, o a aplicacions d'escriptori com les ofimàtiques, aplica-

cions de desenvolupament (si ens interessa la programació), etc.

Una vegada instal·lat el sistema, es planteja el tema de la compartició de dades

[Gon00] [Kat01]. Com compartim dades entre els dos sistemes? Hi ha possibi-

litat de compartir algunes aplicacions? Per a això hi ha diverses solucions:

a)�Mètode�per�"intermediari": consisteix a compartir les dades, per exemple,

mitjançant disquets (opció una mica ja obsoleta des de l'aparició de disposi-

tius USB portàtils). En el cas dels disquets, el millor són les utilitats denomi-

nades mtools, que permeten accedir a disquets amb format MSDOS de manera

transparent, i ofereixen múltiples instruccions de línia que funcionen de ma-

nera molt semblant a MSDOS o Windows. Aquestes instruccions s'anomenen

exactament com les originals d'MSDOS, només que amb una m al davant; per

exemple: mcd, mcopy, mdir, mdel, mformat, mtype, etc.

b)�Mètode�directe: consisteix a usar directament els sistemes de fitxers de Win-

dows (ja siguin els discos durs interns de la màquina, o unitats portàtils exter-

nes de tipus flaix o discos durs USB). Com veurem en la unitat d'administració

local, GNU/Linux pot llegir i escriure una gran quantitat de sistemes de fitxers,

entre els quals hi ha FAT, FAT32 i NTFS (només de lectura en alguns casos de

distribucions antigues, encara que la majoria de distribucions ja incorporen, o

l'ofereixen com a opció, el suport NTFS per mitjà del controlador ntfs-3g [Nt3],

que permet l'escriptura). S'ha de passar per un procés denominat de muntatge,

que permet incorporar el sistema de fitxers de Windows a un punt de l'arbre

d'arxius de Linux. Per exemple, podríem muntar el nostre disc Windows en

/mnt/Windows i accedir des d'aquest punt a les seves carpetes i arxius, i es per-

meten escriptures i lectures. Amb els fitxers de text ASCII cal tenir en compte

amb les conversions, ja que UNIX i Windows els tracten de manera diferent:

en UNIX, el final de línia té un sol caràcter, l'avenç de línia, ASCII 10, mentre

que en Windows n'hi ha dos, un retorn i un avenç de línia, ASCII 13 i 10 (com

a detall curiós en MAC és l'ASCII 13). Amb això, sol ser habitual que, en llegir

un fitxer ASCII DOS/Windows, contingui caràcters "estranys" al final de línia.

Hi ha editors com l'Emacs que els tracta de manera transparent i, en tot cas, hi

ha utilitats GNU/Linux que permeten convertir-los d'un format a l'altre (amb

utilitats com duconv, recode, dos2UNIX, UNIX2dos).

c)� Ús� d'aplicacions: hi ha algunes alternatives per a poder executar les

aplicacions (no totes) d'MSDOS i Windows. Per a GNU/Linux hi ha emu-

ladors d'MSDOS com Dosemu [Sun02] o DosBox, i per a Windows hi ha

el programari d'execució Wine [Win]. Aquest pot executar un gran nom-

bre d'aplicacions de Windows (per exemple, permet executar algunes versi-

ons de l'Office i l'Internet Explorer), i es continua millorant constantment.

Si l'execució d'aplicacions Windows és imprescindible, ens pot ajudar algun

programari comercial, que dóna suport extra a Wine. Hi ha, per exemple,

Win4Lin, CrossOver, i algun cas de suport especial per a jocs, com Cedega.

GNUFDL • PID_00167524 29 Migració i coexistència amb sistemes no Linux

Una altra solució possible és l'ús de les màquines virtuals; un exemple de pro-

gramari d'ampli ús és VMware o VirtualBox, que crea com a màquina virtual

un PC complet, simulat per programari, en el qual es pot instal·lar un gran

nombre diferent de sistemes operatius. Vmware i VirtualBox està disponible

en versions per a Windows i per a GNU/Linux, la qual cosa permet tenir un

GNU/Linux instal·lat amb un Windows executant-se virtualment a sobre, o

un Windows amb GNU/Linux en virtual. Hi ha també altres solucions de mà-

quina virtual lliures com QEmu, KVM i Bochs. En un altre segment, les mà-

quines virtuals, o genèricament la virtualització, és orientada a la creació de

servidors virtuals, amb solucions com Vmware Server, o els projectes oberts

Xen, OpenVZ o Vserver, en els quals és possible fer coexistir diverses màquines

virtuals corrent sobre un operatiu (mitjançant modificacions en el nucli que

suportin aquesta virtualització), o fins i tot sobre el maquinari directament

(sense operatiu complet, només una petita capa programari de virtualització

de recursos).

A part de compartir la informació (aplicacions o dades), es poden buscar apli-

cacions GNU/Linux que substitueixin les originals de Windows a mesura que

l'usuari vagi aprenent a utilitzar-les, i observi que compleixen les funcionali-

tats esperades.

Un cas típic seria el paquet ofimàtic, en què l'usuari pot traslladar l'ús a l'OpenOffice,que té un alt grau de compatibilitat amb els fitxers de l'Office i un funcionament bastantsemblant, o bé el KOffice (per a l'escriptori KDE), o el Gnumeric i l'AbiWord (per a Gno-me). En el cas del processament d'imatges tenim el Gimp, amb funcionalitats semblants al'Adobe Photoshop. I multitud de reproductors multimèdia: Xine, MPlayer (o també unaversió del RealPlayer). A Internet, es poden trobar llistes d'equivalències de programesentre Windows i GNU/Linux.

5.2. Migració d'una petita organització que disposa de sistemes

Windows i alguns UNIX

Considerem ara una organització que tingui màquines Windows i algunes mà-

quines UNIX dedicades a serveis, o a estacions de treball, i uns usuaris una

mica "anàrquics". Per exemple, estudiem la situació següent: l'organització té

una petita xarxa local de màquines Windows repartides pels usuaris, com a

màquines d'igual a igual en un grup de treball Windows (no hi ha dominis

Windows Server).

El grup és variat: tenim màquines amb Windows 98, XP, Vista, 7, però perso-

nalitzades per cada usuari amb el programari que necessita per al seu treball

diari: ja sigui l'Office, el navegador, el lector de correu o entorns de desenvo-

lupament per als programadors de diferents llenguatges (per exemple C, C++,

Java).

Es disposa d'alguns recursos de maquinari extra, com diverses impressores con-

nectades a la xarxa local (accepten treballs TCP/IP), i es permeten utilitzar des

de qualsevol punt de l'organització. I hi ha una màquina compartida, amb

alguns recursos especials, com escàner, enregistradora de CD i directoris com-

Nota

Llistes d'equivalències:http://www.linuxrsp.ru/win-lin-soft/table-eng.htmlhttp://www.linuxeq.com/

GNUFDL • PID_00167524 30 Migració i coexistència amb sistemes no Linux

partits per xarxa, on els usuaris poden deixar els seus directoris amb els seus

fitxers per a processos de còpia de seguretat o per a recuperar, per exemple,

imatges escanejades.

També disposem de diverses estacions de treball, en aquest cas Sun Microsys-

tems Sparc, que executen Solaris (UNIX comercial de Sun). Aquestes estaci-

ons són dedicades al desenvolupament i a algunes aplicacions científiques i

gràfiques. Aquestes màquines disposen de serveis d'NFS per a compartir ar-

xius i NIS+ per a manejar la informació dels usuaris que s'hi connecten i que

ho puguin fer des de qualsevol de manera transparent. Algunes de les màqui-

nes inclouen serveis específics; n'hi ha una de destinada al servidor web de

l'organització i una altra de destinada al servidor de correu.

Es planteja la possibilitat de fer una migració a GNU/Linux per interessos de

desenvolupament de programari i per l'interès particular d'alguns usuaris de

disposar d'aquest sistema.

A més, s'aprofitarà la migració per a intentar solucionar alguns problemes: de

seguretat (alguns sistemes antics Windows no són la millor manera de com-

partir arxius) i d'ús de la impressora (es vol restringir perquè la despesa en

paper i el cost associat són alts) a unes quotes més raonables. D'altra banda,

s'ofereix certa llibertat als usuaris; no els obligarem a canviar de sistema, en-

cara que els farem el suggeriment. I aprofitarem l'ocasió per a comprar maqui-

nari nou que complementi l'existent, per exemple, si les estacions de treball

estan mancades d'espai de disc, la qual cosa representa limitacions d'espai per

al correu i els comptes d'usuari.

La migració en una organització (encara que sigui petita) planteja mol-

tes dificultats: tindrem diferents ambients de treball, maquinari i pro-

gramari heterogeni, i més d'una vegada, reticències dels usuaris al canvi.

Després de tota aquesta petita descripció de la nostra organització (en altres

casos més complexos, podria omplir diverses pàgines o ser un document sen-

cer d'anàlisi de la situació present i les propostes futures), ens comencem a

plantejar possibilitats per a solucionar tot això:

1)�Què�fem�amb�les�estacions�de�treball�actuals? El cost en manteniment i

llicències de programari és elevat. Hem de cobrir el manteniment d'error a les

estacions, maquinari car (en aquest cas, discs SCSI) i ampliacions de memòria

també cares. El cost del sistema operatiu i les seves actualitzacions també és

car. En aquest cas, tenim dues possibilitats (depenent del pressupost de què

disposem per al canvi):

• Podem reduir costos convertint les màquines a sistemes GNU/Linux.

Aquests sistemes són d'arquitectura Sparc i hi ha distribucions que supor-

GNUFDL • PID_00167524 31 Migració i coexistència amb sistemes no Linux

ten aquesta arquitectura. Podríem substituir els serveis pels seus equiva-

lents GNU/Linux. La substitució seria pràcticament directa, ja que ja usem

un sistema UNIX.

• Una altra possibilitat seria l'eliminació del maquinari de Sun i convertir

les estacions a PC potents amb GNU/Linux. Això en simplifica el mante-

niment posterior, encara que té un alt cost inicial.

2)�I�amb�el�programari�de�les�estacions�de�treball? Si les aplicacions són de

desenvolupament propi, pot ser suficient tornar a compilar-les o l'adaptació

simple al nou entorn. Si són comercials, haurem de veure si l'empresa les pot

proporcionar per a entorns GNU/Linux, o si podem trobar reemplaçaments

amb funcionalitat semblant. En el cas dels desenvolupadors, els seus entorns

de llenguatges C, C++ i Java es poden portar fàcilment. En cas de C i C++,

es pot utilitzar el compilador GNU GCC i hi ha multitud d'IDE per al desen-

volupament (Eclipse, KDevelop, Anjuta...). En el cas de Java, es pot utilitzar

l'OpenJDK com les implementacions pròpies de Sun en GNU/Linux i entorns

diversos de codi obert (Eclipse d'IBM o Netbeans).

3)�I�els�usuaris? A aquells que estiguin interessats en GNU/Linux els podem

instal·lar equips duals amb Windows i GNU/Linux perquè comencin a provar

el sistema i, si volen, passar finalment a un únic sistema GNU/Linux. Podem

trobar dos tipus d'usuaris: els purament ofimàtics necessitaran el paquet ofimà-

tic, navegador i correu; això els ho podem oferir amb un escriptori GNU/Linux

com el Gnome o el KDE i programari com l'OpenOffice, el navegador Mozi-

lla/Firefox, i el correu Mozilla Thunderbird (o qualsevol altre, com el Kmail,

l'Evolution...). L'equivalència és més o menys directa, depèn de les ganes que

els usuaris tinguin de provar i usar el nou programari. Per als desenvolupadors,

el canvi pot ser més directe, ja que els podem oferir molts més entorns i eines

flexibles. Es podrien passar completament a sistemes GNU/Linux o treballar

directament amb les estacions de treball.

4)�I�les�impressores? Es pot establir alguna estació de treball com a servidor

d'impressió (ja sigui per cues TCP/IP o per servidor Samba) i controlar les im-

pressions mitjançant quotes.

5)�La�màquina�compartida? El maquinari compartit es pot deixar a la mateixa

màquina o es pot controlar des d'un sistema GNU/Linux. Quant a l'espai de

disc compartit, es pot moure a un servidor Samba que substitueixi l'actual.

6)�Ampliem�l'espai�del�disc? Dependrà del pressupost. En podem millorar el

control mitjançant un sistema de quotes que reparteixi l'espai d'una manera

equitativa i posi límits a la saturació.

GNUFDL • PID_00167524 32 Migració i coexistència amb sistemes no Linux

5.3. Migració d'un servidor Windows a un servidor Samba en

GNU/Linux

En aquest cas, descrivim el procés bàsic necessari per a efectuar una possible

migració d'un servidor Windows que comparteix carpetes i impressora a un

servidor Samba en un sistema GNU/Linux.

Suposem una màquina que pertany a un grup de treball GRUP, que comparteix

una impressora anomenada PRINTER i que té una carpeta compartida DADES

que no és més que el disc D de la màquina. Diversos clients Windows accedei-

xen a la carpeta per a lectura/escriptura, dins d'una xarxa local amb adreces

IP 192.168.1.x, en què x serà 1 per al nostre servidor Windows, i els clients

tenen altres valors (les xarxes 192.168.x.x s'utilitzen sovint com a adreces per

a muntar xarxes privades internes).

En el nostre procés construirem un servidor Samba, que és el que ens permetrà

l'execució en GNU/Linux del protocol SMB/CIFS (Server Message Block / Com-

mon Internet File System). Aquest protocol permet la interacció del sistema

d'arxius i de les impressores per mitjà de xarxes en múltiples sistemes opera-

tius. Podem muntar carpetes pertanyents a Windows a les màquines GNU/Li-

nux, o bé part dels arxius de GNU/Linux a Windows, i el mateix amb les im-

pressores de l'un o de l'altre. El servidor és compost de dos dimonis (processos

de sistema) anomenats smbd i nmbd (depenent de la versió de Samba també

n'hi ha un tercer anomenat winbind que s'utilitza en entorns de dominis Win-

dows per a unir-se o proporcionar serveis d'Active Directory).

Gràcies als programaris com Samba, la migració des d'entorns Windows

és molt flexible i ràpida i fins i tot amb millores de prestacions o en

rendiment.

El procés smbd gestiona les peticions dels clients cap als arxius o impressores

compartits. L'nmbd gestiona el sistema de noms de les màquines i els recursos

sota el protocol NetBIOS (creat per IBM). Aquest protocol és independent de la

xarxa que s'usa (actualment, Microsoft utilitza generalment en NT/2000/XP/

Vista/7 NetBIOS sobre TCP/IP). L'nmbd també proporciona serveis WINS, que

és el servei d'assignació de noms, que s'executa sobre Windows NT/Server si

tenim una col·lecció de màquines. És una espècie de combinació de DNS i

DHCP per a entorns Windows. El procés és una mica complex; en resum, quan

una màquina Windows arrenca, o bé té una adreça IP estàtica, o bé dinàmica

per mitjà d'un servidor DHCP, i a més pot ser que tingui un nom NetBIOS (el

nom que l'usuari assigna a la màquina: en identificació de xarxa). El client

WINS contacta amb el servidor per a informar de quina és la seva adreça IP. Si

Nota

Aquesta migració sol compor-tar un procés bastant més ex-tens que les bases exposades.Consulteu la bibliografia per aveure'n els passos complets.

GNUFDL • PID_00167524 33 Migració i coexistència amb sistemes no Linux

una màquina de xarxa pregunta posteriorment pel nom NetBios, es contacta

amb el servidor WINS per a obtenir-ne l'adreça IP i s'estableixen les comuni-

cacions. L'nmbd executa aquest procés sobre GNU/Linux.

Com qualsevol altre servei de xarxa, no s'hauria d'executar sense considerar

quins riscos pot representar l'activació i com els podem minimitzar. Pel que

fa a Samba, cal tenir presents els temes de seguretat, ja que estem obrint part

dels nostres arxius i les impressores locals o de la xarxa. Haurem de verificar

bé les restriccions de comunicació que posem per no donar accés a usuaris

o màquines no desitjades. En aquest exemple bàsic, no comentarem aquests

temes. En un cas real, hauríem d'examinar les opcions de seguretat i restringir

l'accés només a qui realment volem.

En el procés de migració, primer haurem de configurar el sistema GNU/Linux

per al suport de Samba [Woo00]. Es necessita el suport en el nucli dels sistemes

de fitxers Samba (smbfs), que ja està activat. Cal afegir que, actualment, hi ha

un suport addicional en el nucli per mitjà de mòdul (cifs) [Ste07], el qual, a

partir de la versió del nucli 2.6.20, es considera el mètode per defecte, i smbfs

queda en segon terme. El mòdul cifs aporta suport per a noves prestacions

relacionades amb el protocol CIFS (com a extensió de SMB). Aquests mòduls

ens permeten, mitjançant els noms de sistemes de fitxers smbfs i cifs, fer ope-

racions de muntatge de sistemes de fitxers Windows en l'arbre de directoris

de Windows (mount -t smbfs o mount -t cifs). A part que el suport del nucli es

decanta envers el mòdul cifs, hi ha algunes característiques que poden neces-

sitar suport smbfs, amb la qual cosa sol ser habitual disposar dels dos mòduls

activats en el nucli. També cal destacar la qüestió de la configuració: mentre

que smbfs basa la seva operació en la configuració Samba (com veurem, al fit-

xer smb.conf), al mòdul cifs se li proporciona la configuració en les operacions

(per exemple, en el procés de muntatge mitjançant mount).

En el cas de l'ús del servidor Samba, a més del suport de nucli, necessitarem

instal·lar els paquets de programari associats: caldrà examinar quins paquets

relacionats amb Samba hi ha en la distribució i instal·lar els que tinguin a veure

amb el funcionament de servidor. I, també si es vol, els relacionats amb Samba

com a client, en el cas que vulguem ser clients de màquines Windows o provar,

des del nostre GNU/Linux, els recursos compartits de les màquines Windows.

En una distribució Debian, aquests paquets són: samba, samba-common, smb-

client, smbfs. També pot ser interessant instal·lar swat, que és una eina gràfica

basada en web per a l'administració dels serveis Samba. Per al nostre servidor

GNU/Linux de Samba [Woo00] [War03], en l'exemple proposat, haurem de

transferir els continguts del disc D anterior (on teníem el nostre sistema de

fitxers compartit) de la màquina original a la nova màquina i col·locar el seu

contingut en alguna ruta per defecte, per exemple /home/DADES, ja sigui per

còpia de seguretat, transferència FTP, o usant Samba com a client per a trans-

ferir els arxius.

GNUFDL • PID_00167524 34 Migració i coexistència amb sistemes no Linux

Quant a la utilització de GNU/Linux com a client Samba, és bastant senzilla.

Mitjançant l'ús d'instruccions client per a un ús ocasional d'un sistema de fit-

xers:

1) Muntem un directori compartit Windows (suposem que host és el nom del

servidor Windows), en un punt de muntatge predefinit (ja existent):

smbmount //host/carpeta /mnt/windows

2) Col·loquem l'accés a la "carpeta" Windows de la màquina host en el nostre

directori local, i accedim en l'arbre de directoris al següent:

/mnt/windows

3) A continuació, quan ja no estigui en ús, podem desmuntar el recurs amb

el següent:

smbumount /mnt/windows

Si no coneixem els recursos compartits, en podem obtenir una llista amb el

següent:

smbclient -L host

I també podem utilitzar smbclient //host/carpeta, que és un programa semblant

a un client FTP.

En cas de voler fer els sistemes de fitxers disponibles permanentment, o pro-

porcionar determinades configuracions particulars, podem estudiar l'ús de

mount directament (les utilitats smbxxxx l'utilitzen), ja sigui amb els sistemes

de fitxers (suportats en el nucli) smbfs o cifs, tenint en compte els paràmetres

(autenticació d'usuaris/grups Windows o altres paràmetres de servei) que hau-

rem d'aportar depenent del cas, i de la configuració Samba preexistent [Ste07],

i integrar els punts de muntatge a l'arrencada del sistema (configuració de /

etc/fstab, entre d'altres).

En el cas del servidor Samba, una vegada tinguem instal·lat tot el programari

Samba, haurem de configurar el servidor per mitjà del seu fitxer de configura-

ció. Segons la versió (o la distribució), aquest fitxer pot estar en /etc/smb.conf o

bé en /etc/samba/smb.conf. Les opcions mostrades aquí pertanyen a un Sam-

ba 3.x.x instal·lat sobre Debian. Altres versions poden tenir algunes modifica-

cions menys importants.

Durant la instal·lació dels paquets de programari, és habitual que ens pregun-

tin algunes dades sobre la seva configuració. En el cas de Samba, ens pregunta

pel grup de treball a què se servirà, i haurem de col·locar el mateix nom del

grup que en Windows. També ens pregunta si volem contrasenyes xifrades,

Nota

És important consultar sempreles pàgines man, o "manuals",que acompanyin les ordres iaplicacions Samba, o els fitxersde configuració.

GNUFDL • PID_00167524 35 Migració i coexistència amb sistemes no Linux

recomanables per seguretat (abans en els Windows 9x s'enviaven en text en

brut, en el que constitueix un exemple clar d'escassa seguretat i d'alta vulne-

rabilitat del sistema).

A continuació, passem a veure el procés de configuració del fitxer smb.conf.

Aquest fitxer té tres apartats principals:

1) Global (característiques bàsiques de funcionament per a tots els serveis).

2) Browser, Name Resolution, Domain Options (controla el que altres màquines

veuen dels nostres recursos i com actuem, si de client o servidor dels recursos

compartits per samba/cifs).

3) Share (controla què compartim).

També podem examinar el fitxer de configuració de Samba des d'aquestes sec-

cions, que són apartats del fitxer separats per indicacions com [nom_seccio].

Així apareixen les seccions [globals] amb les configuracions corresponents als

apartats 1 (Global) i 2 (Browser, Name Resolution, Domain Options) esmentats.

En l'apartat 3 (Share), podem trobar diferents seccions:

a) [homes]: una secció especial que ens indica no un servei, sinó una sèrie

de serveis destinats perquè cada usuari amb directori personal en Linux pu-

gui ser accessible a la Xarxa mitjançant Samba, amb autenticació prèvia de la

màquina client, que ens demanarà l'usuari corresponent i la contrasenya. Un

mètode senzill de configurar aquests serveis en entorns locals de mida petita/

mitjana és utilitzar els mateixos usuaris i contrasenyes tant en l'entorn Win-

dows com en Samba sobre Linux. Com veurem més endavant en els materials

d'administració avançada, en entorns més grans hi ha determinats mètodes

que ens permeten tenir sincronitzats els usuaris entre els dos entorns, o substi-

tuir completament mitjançant un servidor Samba Linux els serveis de directori

tipus ADS (Active Directory Service), que ens permetran controlar tots els usu-

aris i serveis de la xarxa homogènia dels dos entorns des del servidor Samba.

b) [printers]: una altra secció especial, que ens permet proporcionar serveis

d'impressió des de Samba per a totes les impressores definides en el sistema.

És una solució ràpida, que es pot fer alternativament per a cada impressora, si

només en volem proporcionar algunes de concretes o limitar-ne l'ús.

c) Finalment, apareixeran diferents seccions dedicades a cada servei que do-

nem d'alta i configurem [resource], en què definirem quin recurs proporcionem

i sota quines característiques individuals.

Aquesta configuració podria quedar així:

[global]

workgroup = GRUP

GNUFDL • PID_00167524 36 Migració i coexistència amb sistemes no Linux

server string = Samba Server Version %v

log file = /var/log/samba/log.%m

max log size = 50

cups options = raw

[homes]

comment = Home Directories

read only = No

browseable = No

browsable = No

[printers]

comment = All Printers

path = /var/spool/samba

printable = Yes

browseable = Yes

[media]

path = /mnt/media

valid users = user1,user2

read only = No

En aquest exemple ràpid de configuració ens proporcionen uns paràmetres

globals. Es desactiven els homes i en canvi es fan disponibles totes les impres-

sores en printers i un recurs de disc disponible denominat media, que és acces-

sible per a dos usuaris per a lectura i escriptura.

Vegem una configuració bàsica, pas per pas, del fitxer de configuració Samba.

Al manual (extens) d'aquest fitxer de configuració Samba es poden veure les

opcions disponibles (man smb.conf). Editarem el fitxer amb algun editor i ani-

rem veient algunes de les línies del fitxer (els caràcters '#' o ';' al principi de línia

són comentaris, si la línia conté ';' és un comentari; per a habilitar una línia,

si és alguna línia opcional de configuració, l'haurem d'editar i treure el ';' ):

workgroup = GRUP

Aquí està indicat el grup de treball Windows del qual les màquines Windows

clients seran membres.

server string = %h server (Samba %v)

Podem col·locar una descripció textual del nostre servidor. La h i la v que apa-

reixen són variables de Samba, que fan referència al nom de host i a la versió de

Samba. Per seguretat, és millor treure la v, ja que amb això s'informa a l'exterior

de quina versió de Samba tenim. Si hi ha errors de seguretat coneguts, això

es pot aprofitar.

GNUFDL • PID_00167524 37 Migració i coexistència amb sistemes no Linux

hosts allow = 192.168.1

Aquesta línia pot ser present o no, i la podem incloure per a habilitar quins

amfitrions seran servits; en aquest cas, tots els del rang 192.168.1.x.

printcap name = /etc/printcap

El fitxer printcap és on GNU/Linux desa la definició de les impressores, i és

aquí on Samba en buscarà la informació.

guest account = nobody

Aquest és el compte de "convidat". Podem crear un compte diferent, o només

habilitar l'accés a Samba als usuaris donats d'alta en el sistema GNU/Linux (o

usuaris que definim nous només per a Samba).

log file = /var/log/samba/log.%m

Aquesta línia ens diu on es desaran els fitxers del registre de sessió (log) de Sam-

ba. Se'n desa un per cada client (la variable m és el nom del client connectat).

encrypt passwords = true

És convenient, per seguretat, usar xifratge de contrasenyes (passwords) si tenim

màquines clients amb Windows 98, NT o superiors. Aquestes contrasenyes es

desen en un fitxer /etc/samba/smbpasswd, que es genera per als usuaris de

la instal·lació de Samba. Les contrasenyes es poden canviar amb la instrucció

smbpasswd. També hi ha una opció anomenada UNIX passwdord sync, que per-

met que el canvi sigui simultani per a les dues contrasenyes (usuari Samba i

usuari Linux).

A continuació, descriurem la secció Share Definitions:

[homes]

Aquestes línies permeten donar accés als comptes dels usuaris des de les mà-

quines Windows. Si no ho volem, afegim ';' a l'inici d'aquestes línies, i les mà-

quines, en connectar-se, veuran el nom comment. En principi, l'escriptura està

deshabilitada, i per a habilitar-la només cal posar yes en l'opció writable.

Qualsevol compartició d'un directori concret (en Samba se sol denominar par-

tició un grup de dades compartides), es farà com els exemples que apareixen

(vegeu, per exemple, la definició de compartir el CD-ROM en les línies que

comencen per [cdrom]). En path es col·loca la ruta d'accés.

Nota

Vegeu man smb.conf

GNUFDL • PID_00167524 38 Migració i coexistència amb sistemes no Linux

En el nostre cas, per exemple, posaríem un nom DADES a la partició en la ruta

/home/DADES, on havíem copiat el disc D de la màquina original Windows i

la ruta per defecte on es pot trobar, a més d'un alt nombre d'opcions que pot

modificar l'usuari.

També hi ha una definició [profiles] que permet controlar els perfils (profiles)

dels usuaris Windows, és a dir, el directori on es desa la seva configuració

d'escriptori Windows, el menú d'inici, etc.

El mètode és semblant per a les impressores: es fa una partició amb el nom

de la impressora (el mateix que s'hagi donat en GNU/Linux) i en la ruta per

defecte es col·loca l'adreça de la cua associada a la impressora (en GNU/Linux

la trobem en: /var/spool/samba/PRINTER). Utilitzarem l'opció printable = yes si

volem que s'enviïn treballs amb Samba. També es pot determinar quins usuaris

poden accedir (valid users).

Una vegada fets aquests canvis, només els hem de desar i reiniciar Samba per-

què llegeixi la nova configuració. En Debian:

/etc/init.d/samba restart

Ara, el nostre directori compartit i la impressora per a Samba estaran disponi-

bles, de manera que serveixin als usuaris sense que aquests no notin cap di-

ferència respecte a les connexions anteriors amb el servidor Windows.

Abans d'utilitzar la configuració Samba anterior, també la podem comprovar

amb la instrucció testparam, que verificarà que la configuració de Samba sigui

correcta, i a més ens assenyalarà els errors de configuració comesos. Respecte al

reinici de Samba, depenent de la distribució haurem de reiniciar els diferents

serveis, que en les últimes versions són els dimonis/serveis smb, nmb i winbind

(per exemple, en Fedora serà necessari reiniciar aquests tres serveis).

GNUFDL • PID_00167524 39 Migració i coexistència amb sistemes no Linux

Activitats

1. En la descripció de serveis GNU/Linux, es troba a faltar alguna funcionalitat? Quin altretipus de serveis afegiríeu?

2. En el segon cas d'estudi del taller (el de l'organització), com canviaríeu la infraestructurainformàtica si disposéssiu d'un pressupost de cost zero, un pressupost mitjà o un pressupostalt? Presenteu algunes solucions diferents de les exposades.

3. Les tecnologies de virtualització com VMware o VirtualBox són màquines virtuals per pro-gramari que permeten instal·lar operatius sobre un PC virtual. Se'n pot aconseguir una versióde demostració a http://www.vmware.com o http://www.virtualbox.org. Proveu (en cas quedisposeu d'una llicència Windows) d'instal·lar-la sobre Windows, i després un GNU/Linuxsobre el PC virtual (o al revés). Quins avantatges ens aporta aquest sistema de compartir elsoperatius? Quins problemes ocasiona?

4. Si disposeu de dues màquines per a instal·lar-hi un servidor Samba, podeu provar lainstal·lació o configuració del servidor en configuracions de client Samba UNIX – servidorWindows, o client Windows – servidor Samba en GNU/Linux. Ho podeu provar també enuna sola màquina, utilitzant la mateixa màquina com a servidor i client Samba.

GNUFDL • PID_00167524 40 Migració i coexistència amb sistemes no Linux

Bibliografia

[Ban] Banerjee, T. "Linux Installation Strategies HOWTO". The Linux Documentation Project.The Dot GNU Project. <http://www.gnu.org/software/dotgnu/>

[Gon] Gonzato, G. "From DOS/Windows to Linux HOWTO". The Linux Documentation Pro-ject.

[knp] Distribució Knoppix. <http://knoppix.org>

[LPD] LPD. The Linux Documentation Project. <http://www.tldp.org>.

Proporciona guies de diferents aspectes d'un sistema GNU/Linux i un conjunt de manualsmés elaborats.

[Mon] Monit. <http://www.tildeslash.com/monit/>

[Mor03] Morill, D. (2003). Configuración de sistemes Linux. Anaya Multimedia.

Bona referència de configuració de sistemes Linux, amb alguns casos d'estudi en diferentsentorns; comenta diferents distribucions Debian i Red Hat.

[Nt3] NTFS-3g Project: NTFS-3G Read/Write Driver. <http://www.ntfs-3g.org/>

[Pri] Pritchard, S. "Linux Hardware HOWTO". The Linux Documentation Project.

[Rayb] Raymond, E. S. "The Linux Installation HOWTO". The Linux Documentation Project.

[Sam] Samba Project. <http://samba.org/>

[Sama] Samba HOWTO and Reference Guide (Chapter Domain Control). <http://samba.org/samba/docs/man/Samba-HOWTO-Collection/samba-pdc.html>

[Samb] Samba Guide (Chapter Adding Domain member Servers and Clients). <http://samba.org/samba/docs/man/Samba-Guide/unixclients.html>

[Skob] Skoric, M. "Linux+WindowsNT mini-HOWTO". The Linux Documentation Project.

[Smb] Entrada Server Message Block en la Wikipedia. <http://en.wikipedia.org/wiki/Server_Message_Block>.

[Ste07] French, S. "Linux CIFS Client Guide". <http://us1.samba.org/samba/ftp/cifs-cvs/li-nux-cifs-client-guide.pdf>

[Sun02] Sundaram, R. (2002). "The dosemu HOWTO". The Linux Documentation Project.

[Ubn] Distribució Ubuntu. <http://www.ubuntu.com>

[War] Ward, I. "Debian and Windows Shared Printing mini-HOWTO". The Linux Documen-tation Project.

[Woo] Wood, D. "SMB HOWTO". The Linux Documentation Project.

Wine Project. <http://www.winehq.com/>

Administraciólocal Josep Jorba Esteve PID_00167525

GNUFDL • PID_00167525 Administració local

© 2010, FUOC. Es garanteix el permís per a copiar, distribuir i modificar aquest document segons els termes de la GNU FreeDocumentation License, Version 1.2 o qualsevol altra de posterior publicada per la Free Software Foundation, sense seccionsinvariants ni textos de la coberta anterior o posterior. Hi ha una còpia de la llicència en l'apartat "GNU Free DocumentationLicense" d'aquest document.

GNUFDL • PID_00167525 Administració local

Índex

Introducció.................................................................................................. 5

1. Eines bàsiques per a l'administrador........................................... 7

1.1. Eines gràfiques i línies d'instruccions ......................................... 8

1.2. Documents d'estàndards ............................................................. 10

1.3. Documentació del sistema en línia ............................................ 12

1.4. Eines de gestió de paquets .......................................................... 14

1.4.1. Paquets TGZ ................................................................... 15

1.4.2. Fedora/Red Hat: paquets RPM ....................................... 17

1.4.3. Debian: paquets DEB ..................................................... 21

1.5. Eines genèriques d'administració ................................................ 25

1.6. Altres eines .................................................................................. 26

2. Distribucions: particularitats......................................................... 28

3. Nivells d'arrencada i serveis............................................................ 30

3.1. Upstart, un nou sistema ............................................................. 33

4. Observar l'estat del sistema............................................................ 35

4.1. Arrencada del sistema ................................................................. 35

4.2. Nucli: directori /proc .................................................................. 36

4.3. Nucli: /sys .................................................................................... 37

4.4. Processos ...................................................................................... 38

4.5. Registres del sistema ................................................................... 39

4.6. Memòria ...................................................................................... 40

4.7. Discos i sistemes d'arxius ............................................................ 41

5. Sistema de fitxers.............................................................................. 44

5.1. Punts de muntatge ...................................................................... 46

5.2. Permisos ....................................................................................... 49

6. Usuaris i grups.................................................................................... 50

7. Servidors d'impressió........................................................................ 54

7.1. BSD LPD ...................................................................................... 58

7.2. CUPS ............................................................................................ 59

8. Discos i gestió de filesystems........................................................... 61

8.1. RAID en programari .................................................................... 63

8.2. Volums lògics (LVM) ................................................................... 74

GNUFDL • PID_00167525 Administració local

9. Programari: actualització................................................................ 78

10. Feines no interactives....................................................................... 80

11. Taller: pràctiques combinades dels apartats.............................. 82

Activitats...................................................................................................... 91

Bibliografia................................................................................................. 92

GNUFDL • PID_00167525 5 Administració local

Introducció

Una de les primeres tasques amb què s'haurà d'enfrontar l'administrador serà

la gestió dels recursos locals presents a la màquina. En aquest mòdul veurem

algunes d'aquestes tasques d'administració bàsiques, i alguns dels aspectes de

personalització i rendiment dels recursos.

Abans de començar amb els aspectes més pràctics de l'administració, revisarem

algunes de les eines bàsiques de què disposarà l'administrador (algunes, com

els shell scripts, ja les hem revisades prèviament).

Posteriorment, analitzarem el procés d'arrencada d'un sistema GNU/Linux,

que ens farà comprendre l'estructura inicial del sistema i la seva relació amb

els serveis que proporciona.

A continuació, aprendrem com podem obtenir una visió general de l'estat ac-

tual del sistema per mitjà dels diferents procediments i instruccions de què

disposem per a avaluar les parts del sistema. D'aquesta manera, podrem pren-

dre decisions d'administració si detectem algun error o deficiència de rendi-

ment, o la falta d'algun recurs.

Un dels principals punts de l'administració és la gestió d'usuaris, ja que qual-

sevol configuració de la màquina estarà destinada perquè la puguin utilitzar.

Veurem com podem definir nous usuaris en el sistema i controlar el seu nivell

d'accés als recursos.

Quant als perifèrics del sistema, com discos i impressores, disposem de dife-

rents possibilitats de gestió, ja sigui via diferents servidors (el cas de la impres-

sió) o diferents sistemes d'arxius que podem tractar, i també algunes tècniques

d'optimització del rendiment dels discos.

També examinarem el problema de l'actualització del sistema, i també la no-

va incorporació de programari d'aplicació i com el podem fer disponible als

usuaris. Així mateix, analitzarem el problema d'executar treballs temporitzats

en el sistema.

En el taller final examinarem l'avaluació d'estat d'una màquina, seguint

els punts vistos en aquest mòdul, i durem a terme algunes de les tasques

d'administració bàsiques descrites. En el desenvolupament de la unitat comen-

tarem algunes instruccions i, posteriorment, en el taller, en veurem algunes

amb més detall respecte al funcionament i les opcions.

Nota

L'administració local englobamoltes tasques variades, quepotser són les més utilitzadesper l'administrador en el seutreball diari.

GNUFDL • PID_00167525 7 Administració local

1. Eines bàsiques per a l'administrador

L'administrador de sistemes GNU/Linux s'ha d'enfrontar, diàriament, a una

gran quantitat de tasques. En general, en la filosofia UNIX no hi sol haver una

única eina per a cada tasca o una sola manera de fer les coses. El més comú és

que els sistemes UNIX proporcionin una gran quantitat d'eines més o menys

simples per a afrontar les diferents tasques.

Serà la combinació de les eines bàsiques, cada una amb una tasca molt

definida, la que ens donarà la possibilitat de solucionar un problema o

tasca d'administració.

En aquest apartat veurem diferents grups d'eines, identificarem algunes de les

seves funcions bàsiques i veurem diversos exemples dels seus usos. Comença-

rem per examinar alguns estàndards del món GNU/Linux, que ens permetran

trobar algunes de les característiques bàsiques que esperem de qualsevol distri-

bució de GNU/Linux. Aquests estàndards, com l'LSB (o Linux Standard Base)

[Linc] i l'FHS (Filesystem Hierarchy Standard) [Linb], ens parlen d'eines que

esperem trobar disponibles, d'una estructura comuna per al sistema de fitxers,

i també de diferents normes que s'han de complir perquè una distribució si-

gui considerada un sistema GNU/Linux i mantingui regles comunes per a la

compatibilitat entre aquests estàndards.

En l'automatització de tasques d'administració se solen utilitzar ordres agru-

pades en shell scripts (també anomenats guions d'instruccions), mitjançant llen-

guatges interpretats pel shell (intèrpret d'instruccions) del sistema. En la pro-

gramació d'aquests shell scripts podem unir les ordres del sistema amb estruc-

tures de control de flux, i així disposar d'un entorn de prototip ràpid d'eines

per a l'automatització de tasques.

Un altre esquema habitual és la utilització d'eines de compilació i depuració de

llenguatges d'alt nivell (com per exemple C). En general, seran utilitzades per

l'administrador per a generar nous desenvolupaments d'aplicacions o eines, o

per a incorporar al sistema aplicacions que vinguin com a codi font i s'hagin

d'adaptar i compilar.

També analitzarem l'ús d'algunes eines gràfiques respecte a les habituals de la

línia d'instruccions. Aquestes eines solen facilitar les tasques a l'administrador,

però el seu ús és limitat, ja que depenen fortament de la distribució de GNU/

Linux, o fins i tot de cada versió. Tot i així, hi ha algunes eines útils que són

compartides entre distribucions.

GNUFDL • PID_00167525 8 Administració local

Finalment, analitzarem un grup d'eines imprescindibles per a mantenir el sis-

tema actualitzat: les eines de gestió de paquets. El programari servit en la dis-

tribució GNU/Linux, o incorporat posteriorment, se sol oferir en unitats de-

nominades paquets, que inclouen els arxius d'un determinat programari, més

passos necessaris per a la preparació de la instal·lació, la configuració posteri-

or o, si és el cas, l'actualització o desinstal·lació d'un determinat programari.

I cada distribució sol aportar programari de gestió per mantenir les llistes de

paquets instal·lats, o per instal·lar, i també el control de les versions existents,

o possibilitats diverses d'actualització per mitjà de diferents fonts d'origen.

1.1. Eines gràfiques i línies d'instruccions

Hi ha un gran nombre d'eines; en aquest mòdul i en els següents examinem

una petita porció de les eines d'administració que són proporcionades per ter-

cers de manera independent a la distribució o pel distribuïdor mateix del sis-

tema GNU/Linux.

Aquestes eines poden cobrir més o menys aspectes de l'administració d'una

tasca concreta, i es poden presentar amb múltiples interfícies diferents: ja si-

guin eines de línia d'instruccions amb múltiples opcions o fitxers de configu-

ració associats, o eines textuals amb algun tipus de menús elaborats, o bé eines

gràfiques amb interfícies més adequades per al maneig d'informació, o assis-

tents que automatitzin les tasques, o bé interfícies web d'administració.

Tot això ens ofereix un gran nombre de possibilitats amb vista a

l'administració, però sempre n'hem de valorar la facilitat d'ús juntament amb

les prestacions i els coneixements que tingui l'administrador que es dedica a

aquestes tasques.

Les tasques habituals de l'administrador GNU/Linux poden implicar treballar

amb diferents distribucions (per exemple, les que comentarem, Fedora [Fed]

o Debian [Debb], o qualsevol altra), o fins i tot es pot treballar amb variants

comercials de d'altres UNIX. Això comporta que hàgim d'establir una certa

manera de treballar que ens permeti fer les tasques de la mateixa manera en

els diferents sistemes.

Per aquesta raó, en els diferents apartats intentarem destacar tots aquells as-

pectes més comuns, i les tècniques d'administració seran fetes majoritàriament

a baix nivell, mitjançant una línia d'instruccions o amb edició de fitxers de

configuració associats.

Qualsevol de les distribucions de GNU/Linux sol aportar eines del tipus línia

d'instruccions, textual, o en particular, gràfiques, que complementen les an-

teriors i simplifiquen, en més o menys mesura, l'administració de les tasques

[Sm]. Però cal tenir en compte diverses puntualitzacions:

Funcionalitat

Les eines gràfiquesd'administració no solen oferiruna funcionalitat completa, iés interessant conèixer quinssón els efectes de les seves ac-cions.

GNUFDL • PID_00167525 9 Administració local

a) Aquestes eines són una interfície més o menys elaborada de les eines bàsi-

ques de línia d'instruccions i els fitxers de configuració corresponents.

b) Normalment no ofereixen totes les prestacions o configuracions que es po-

den fer a baix nivell.

c) Els errors poden no gestionar-se bé, o simplement proporcionar missatges

del tipus "la tasca no s'ha pogut fer".

d) L'ús d'aquestes eines oculta, de vegades completament, el funcionament

intern del servei o tasca. Comprendre bé el funcionament intern és un conei-

xement bàsic per a l'administrador, i més si ha de desenvolupar tasques de

correcció d'errors o optimització de serveis.

e) Aquestes eines són útils en la millora de la producció. Una vegada que

l'administrador té els coneixements adequats, pot gestionar amb aquestes de

manera més eficaç les tasques rutinàries i automatitzar-les.

f) O també el cas contrari, la tasca pot ser tan complexa, o necessitar tants

paràmetres, o generar tantes dades, que es torna impossible controlar-la de

manera manual. En aquests casos, les eines d'alt nivell poden ser molt útils i

tornar practicables algunes tasques que d'una altra manera són difícils de con-

trolar. Per exemple, dins d'aquesta categoria entrarien les eines de visualitza-

ció, monitoratge i resum d'activitats o serveis complexos.

g) En l'automatització de tasques, aquestes eines (de nivell més alt) poden no

ser les més adequades: poden no haver estat pensades per als passos que cal fer,

o bé fer-ho d'una manera no eficaç. Un cas concret pot ser la creació d'usuaris;

una eina visual pot ser molt atraient, per la manera d'introduir les dades, però

què succeeix quan en lloc d'introduir un o pocs usuaris volem introduir una

llista de desenes o centenars? L'eina, si no està preparada, es torna totalment

ineficient.

h) Finalment, els administradors solen voler personalitzar les seves tasques

utilitzant les eines que consideren més còmodes i fàcils d'adaptar. En aquest

aspecte, sol ser habitual la utilització de les eines bàsiques de baix nivell i la

utilització de shell scripts per a combinar-les de manera que formin una tasca.

Hem de saber valorar aquestes eines extra segons la vàlua que tinguin

per a les nostres tasques.

GNUFDL • PID_00167525 10 Administració local

Podem donar a aquestes eines un ús casual (o quotidià), si tenim els conei-

xements suficients per a tractar els errors que es puguin produir, o bé amb

l'objectiu de facilitar algun procés per al qual hagi estat pensada l'eina, però

sempre controlant les tasques que implementem i el coneixement tècnic sub-

jacent.

1.2. Documents d'estàndards

Els estàndards, ja siguin genèrics del món UNIX o particulars de GNU/Linux,

ens permeten seguir uns criteris bàsics, pels quals ens guiem en el moment

d'aprendre o fer una tasca, i que ens proporcionen informació bàsica per a

començar la nostra feina.

En GNU/Linux ens podem trobar estàndards com l'FHS (Filesystem Hie-

rarchy Standard) [Linb], que ens explica què podem trobar (o on ho

podem buscar) en l'estructura del sistema de fitxers del nostre sistema.

O l'LSB (Linux Standard Base), que ens comenta diferents components

que solem trobar en els sistemes [Linc].

En l'estàndard FHS (Filesystem Hierchachy Standard) es descriu l'estructura en

arbre del sistema de fitxers principal (/), en què s'especifica l'estructura dels

directoris i els principals fitxers que contindran. Aquest estàndard és usat en

més o menys mesura també per als UNIX comercials, en els quals al principi hi

va haver moltes diferències que van fer que cada fabricant canviés l'estructura

al seu gust. L'estàndard pensat en origen per a GNU/Linux es va fer per a nor-

malitzar aquesta situació i evitar canvis dràstics. Tot i així, l'estàndard és seguit

amb diferents graus; la majoria de distribucions segueixen en un alt percen-

tatge l'FHS, i fan canvis menors o aporten fitxers o directoris que no hi havia

en l'estàndard.

Un esquema bàsic de directoris podria ser:

• /bin: utilitats de base del sistema, normalment programes emprats pels

usuaris, des de les instruccions bàsiques del sistema (com /bin/ls, que fa

una llista de directoris), passant pels intèrprets d'ordres (/bin/bash), etc.

• /boot: arxius necessaris durant l'arrencada del sistema, per exemple la

imatge del nucli Linux, en /boot/vmlinuz.

• /dev: aquí trobem fitxers especials que representen els dispositius possi-

bles en el sistema. L'accés als perifèrics en sistemes UNIX es fa com si fossin

fitxers. Podem trobar fitxers com /dev/console, /dev/modem, /dev/mou-

se, /dev/cdrom, /dev/floppy..., que solen ser enllaços a dispositius més es-

pecífics del tipus de controlador o interfície que utilitzen els dispositius,

com /dev/mouse, enllaçat a /dev/psaux, que representa un ratolí de tipus

L'estàndard FHS

El Filesystem Hierchachy Stan-dard és una eina bàsica per alconeixement d'una distribu-ció, que ens permet conèixerl'estructura i funcionalitat delsistema d'arxius principal delsistema.Vegeu FHS a http://www.pathname.com/fhs

GNUFDL • PID_00167525 11 Administració local

PS2, o /dev/cdrom a /dev/hdc, un CD-ROM que és un dispositiu del segon

connector IDE i mestre. Aquí trobem els dispositius IDE com /dev/hdx,

els SCSI /dev/sdx... amb x que varia segons el número de dispositiu. Cal

esmentar que les últimes distribucions, respecte als dispositius de disc, su-

porten en el nucli emulació de dispositius IDE com si fossin SCSI; per això

és corrent veure avui dia tots els discos com a dispositius de tipus /dev/

sdx. Aquí es pot comentar que, en el seu inici, aquest directori era estàtic,

amb els fitxers predefinits, o configurats en determinats moments. Actu-

alment, s'utilitzen tecnologies dinàmiques (com hotplug, i principalment

udev), que permeten detectar dispositius i crear els arxius /dev dinàmica-

ment, bé a l'inici del sistema o durant l'execució, amb la inserció de dis-

positius extraïbles.

• /etc: fitxers de configuració. La majoria de tasques d'administració neces-

sitaran examinar o modificar els fitxers continguts en aquest directori. Per

exemple /etc/passwd conté part de la informació dels comptes dels usuaris

del sistema.

• /home: conté els comptes dels usuaris, és a dir, els directoris personals de

cada usuari.

• /lib: les biblioteques del sistema, compartides pels programes d'usuari, ja

siguin estàtiques (extensió .a) o dinàmiques (extensió .so). Per exemple, la

biblioteca C estàndard, en fitxers libc.so o libc.a. També, en particular, se

solen trobar els mòduls dinàmics del nucli Linux, en /lib/modules.

• /mnt: punt per a muntar (instrucció mount) sistemes de fitxers de manera

temporal, com /mnt/cdrom, per a muntar un disc al lector de CD-ROM

momentàniament.

• /media: per a punt de muntatge habitual de dispositius extraïbles.

• /opt: s'hi sol col·locar el programari afegit al sistema posterior a la

instal·lació. Una altra instal·lació vàlida és en /usr/local.

• /sbin: utilitats de base del sistema. Solen ser instruccions reservades a

l'administrador (root). Per exemple, /sbin/fsck per a verificar l'estat dels sis-

temes de fitxers.

• /tmp: fitxers temporals de les aplicacions o del sistema. Encara que són

per a l'execució temporal, entre dues execucions l'aplicació o servei no pot

assumir que trobarà els fitxers anteriors.

• /usr: diferents elements instal·lats en el sistema. Algun programari de sis-

tema més complet s'instal·la aquí, a més de complements multimèdia (ico-

nes, imatges, sons, per exemple en /usr/share) i la documentació del siste-

GNUFDL • PID_00167525 12 Administració local

ma (/usr/share/doc). També /usr/local se sol utilitzar per a instal·lar docu-

mentació o elements complementaris.

• /var: fitxers de registre de sessió o d'estat (fitxers de tipus log) o errors del

sistema i de diferents serveis, tant locals com de xarxa. Per exemple, fitxers

de sessió en /var/log, contingut dels correus en /var/spool/mail o treballs

d'impressió en /var/spool/lpd.

Aquests són alguns dels directoris definits en l'FHS per al sistema arrel; després

s'especifiquen algunes subdivisions, com el contingut dels /usr i /var i els fit-

xers de dades o executables típics que s'esperen trobar com a mínim en els

directoris (vegeu les referències en els documents FHS).

Respecte a les distribucions, Fedora o Red Hat segueix l'estàndard FHS molt de

prop. Només presenta alguns canvis en els arxius presents en /usr i /var. En

/etc hi sol haver un directori per component configurable, i hi ha algun direc-

tori especial, com /etc/sysconfig, en què es troba gran part de la configuració

de diversos serveis bàsics del sistema. En /opt i /usr/local no hi sol haver pro-

gramari instal·lat, tret que l'usuari l'instal·li. Debian, per la seva part, segueix

l'estàndard, encara que afegeix alguns directoris de configuració especials en

/etc.

Un altre estàndard en procés és l'LSB (Linux Standard Base) [Linc]. La idea

d'aquest és definir uns nivells de compatibilitat entre les aplicacions, bibliote-

ques i utilitats, de manera que sigui possible la portabilitat de les aplicacions

entre distribucions sense gaires problemes. A més de l'estàndard, proporcionen

conjunts de prova (tests) per a verificar el nivell de compatibilitat. LSB en si

mateix és un recopilatori de diversos estàndards aplicats a GNU/Linux.

1.3. Documentació del sistema en línia

Un dels aspectes més importants per a les nostres tasques d'administració

serà disposar de la documentació correcta per al nostre sistema i el programa-

ri instal·lat. Hi ha moltes fonts d'informació, entre les quals destacarem les

següents:

a)�man és l'ajuda per excel·lència. Ens permet consultar el manual de GNU/

Linux, que està agrupat en diverses seccions, corresponents a instruccions,

administració, formats de fitxers, instruccions d'usuari, crides de llenguatge

C, etc. Normalment, per a obtenir l'ajuda associada, tindrem suficient amb el

següent:

man instrucció

Nota

Sobre estàndardsd'especificacions vegeu: http://www.linuxfoundation.org/en/SpecificationsLSB: http://www.linuxfoundation.org/collaborate/workgroups/lsb

GNUFDL • PID_00167525 13 Administració local

Cada pàgina descriuria la instrucció juntament amb les seves opcions i aporta-

ria alguns exemples d'utilització. De vegades, hi pot haver més d'una entrada

al manual. Per exemple, és possible que hi hagi una crida C amb el mateix nom

que una instrucció. En aquest cas, cal especificar quina secció volem veure:

man n instrucció

n és el número de secció (per exemple, 2 per a les crides a sistema, o 3 per a

les rutines de la biblioteca C).

Hi ha també unes quantes eines d'exploració dels manuals, per exemple xman i

tkman, que mitjançant una interfície gràfica faciliten l'examen de les diferents

seccions, i també índexs de les instruccions (també els entorns KDE i Gnome

permeten en els seus ajuts accedir a les pàgines man). Una altra instrucció

interessant és apropos, paraula que ens permetrà localitzar pàgines man que

parlin d'un tema determinat (associat amb la paraula buscada).

b)�info és un altre sistema d'ajuda habitual. És un programa desenvolupat per

GNU per a la documentació de moltes de les seves eines. Es tracta d'una eina

textual en la qual els capítols i les pàgines es poden recórrer per mitjà d'un

sistema de navegació simple (basat en teclat).

c)�Documentació�de�les�aplicacions: a més de certes pàgines man, és habitu-

al incloure en les aplicacions documentació extra, ja sigui en forma de guies

d'usuari o manuals. Aquests components de documentació s'instal·len en el

directori /usr/share/doc (o /usr/doc, depenent de la distribució), en què es crea

un directori per paquet d'aplicació (en general, l'aplicació pot disposar de pa-

quets de documentació separadament).

d)�Sistemes�propis�de�les�distribucions. Red Hat sol venir amb uns CD de

manuals de consulta que són instal·lables en el sistema i tenen formats HTML

o PDF. Fedora disposa d'un projecte de documentació en el seu web. Debian

porta els manuals com un paquet de programari més i se solen instal·lar en

/usr/doc. D'altra banda, disposa d'eines que classifiquen la documentació pre-

sent en el sistema i l'organitzen per menús per a la visualització, com dwww

o dhelp, que presenten interfícies web per a examinar la documentació del sis-

tema.

e) Finalment, els�escriptoris�X, com Gnome i KDE, també porten sistemes de

documentació propis amb la seva documentació i manuals, i també informa-

ció per a desenvolupadors, ja sigui en forma d'ajuts gràfics en les seves aplica-

cions, o en aplicacions pròpies que recopilen els ajuts (per exemple, devhelp

per a Gnome).

GNUFDL • PID_00167525 14 Administració local

1.4. Eines de gestió de paquets

En qualsevol distribució, els paquets són l'element bàsic per a tractar les tas-

ques d'instal·lació de programari nou, l'actualització de l'existent o l'eliminació

del no utilitzat.

Bàsicament, un paquet és un conjunt de fitxers que formen una aplica-

ció o una unió de diverses aplicacions relacionades, formant un únic

fitxer (denominat paquet), amb un format propi i comprimit, que és el

que es distribueix, ja sigui via CD, disquet o mitjançant accés a serveis

d'FTP o web.

L'ús de paquets facilita afegir o treure programari, en considerar-ho una unitat

i no haver de treballar amb els fitxers individuals.

En el contingut de la distribució (els seus CD) els paquets solen estar agru-

pats per categories com a) base: paquets indispensables per al funcionament

del sistema (utilitats, programes d'inici, biblioteques de sistema); b) sistema:

utilitats d'administració, instruccions d'utilitat; c) desenvolupament (develo-

pement): utilitats de programació, com editors, compiladors, depuradors...; d)

gràfics: controladors i interfícies gràfiques, escriptoris, gestors de finestres, i e)

altres categories.

Per a la instal·lació d'un paquet, serà necessari efectuar una sèrie de passos:

1) Previ (preinstal·lació): comprovar que hi ha el programari necessari (i amb

les versions correctes) per al seu funcionament (dependències), ja sigui bibli-

oteques de sistema o altres aplicacions que siguin usades pel programari.

2) Descompressió del contingut del paquet, copiant els fitxers a les seves lo-

calitzacions definitives, ja siguin absolutes (tindran una posició fixa) o, si es

permet, resituades en altres directoris.

3) Postinstal·lació: retocar els fitxers necessaris, configurar possibles paràme-

tres del programari, adequar-lo al sistema...

Depenent dels tipus de paquets, aquests passos poden ser automàtics majo-

ritàriament (així és en el cas d'RPM [Bai03] i DEB [Deb02]). També potser es

necessita fer-los tots manuals (cas TGZ), depenent de les eines que proporcioni

la distribució.

Veurem, a continuació, potser els tres paquets més clàssics de la majoria de

distribucions. Cada distribució en té un per estàndard i suporta algun dels

altres.

GNUFDL • PID_00167525 15 Administració local

1.4.1. Paquets TGZ

Els paquets TGZ són potser els d'utilització més antiga. Les primeres distribu-

cions de GNU/Linux els utilitzaven per a instal·lar el programari, i encara els

usen diverses distribucions (per exemple, Slackware) i alguns UNIX comerci-

als. Són una combinació de fitxers units per la instrucció tar en un únic fitxer

.tar, que després ha estat comprimit per la utilitat gzip, i sol aparèixer amb

l'extensió .tgz o bé .tar.gz. Així mateix, avui dia és comú trobar els tar.bz2, que

utilitzen, en lloc de gzip, una altra utilitat anomenada bzip2 que, en alguns

casos, aconsegueix més compressió de l'arxiu.

Aquest tipus de paquet no conté cap tipus d'informació de dependèn-

cies, i pot presentar tant contingut d'aplicacions en format binari com

en codi font. Ho podem considerar com una espècie de col·lecció de

fitxers comprimida.

En contra del que pot semblar, aquest és un format molt utilitzat i, sobretot,

per creadors o distribuïdors de programari extern a la distribució. Molts cre-

adors de programari que treballen per a plataformes diverses, com diversos

UNIX comercials i diferents distribucions de GNU/Linux, ho prefereixen com

a sistema més senzill i portable.

Exemple

Un d'aquests casos és el projecte GNU, que distribueix el seu programari en aquest format(en forma de codi font), ja que es pot utilitzar en qualsevol UNIX, ja sigui un sistema depropietat, una variant BSD o una distribució GNU/Linux.

Si es tracta de format binari, haurem de tenir en compte que sigui adequat per

al nostre sistema; per exemple, sol ser comuna alguna denominació com la

que segueix (en aquest cas, la versió 1.4 del navegador web Mozilla):

mozilla-i686-pc-linux-gnu-1.4-installer.tar.gz

en què tenim el nom del paquet, Mozilla, i l'arquitectura a la qual està destinat

(i686, Pentium II o superiors o compatibles). Podria ser i386, i586, i686, k6

(AMD k6), k7 (AMD Athlon), amd64 o x86_64 (per a AMD64 i alguns Intel

de 64 bits), o ia64 (Intel Itanium). N'hi ha altres per a arquitectures d'altres

màquines, com sparc, powerpc, mips, hppa, alpha... Després ens indica que és

per a Linux, en una màquina PC, amb la versió del programari 1.4.

Si fos en format font, sol aparèixer com a:

mozilla-source-1.4.tar.gz

Nota

Els paquets TGZ són una ei-na bàsica a l'hora d'instal·larprogramari no organitzat i sónmolt útils per a fer processosde còpia de seguretat i restau-ració d'arxius.

GNUFDL • PID_00167525 16 Administració local

on ens indiquen la paraula source. En aquest cas, no esmenta la versió de

l'arquitectura de màquina, la qual cosa ens indica que està preparat (en prin-

cipi) per a compilar-se en diferents arquitectures.

D'una altra manera, hi hauria diferents codis per a cada sistema operatiu o

font: GNU/Linux, Solaris, Irix, BSD...

El procés bàsic amb aquests paquets consisteix en el següent:

1) Descomprimir el paquet (no solen utilitzar ruta absoluta, amb la qual cosa

es poden descomprimir en qualsevol directori):

tar -xzvf fitxer.tar.gz (o fitxer.tgz)

Amb la instrucció tar posem les opcions x (extreure fitxers), z (descomprimir),

v (veure els passos del procés) i f (donar nom del fitxer per tractar).

També es pot fer separadament (sense la z del tar):

gunzip fitxer.tar.gz

(ens deixa un fitxer tar)

tar -xvf fitxer.tar

2) Una vegada tenim descomprimit el tgz, tindrem els fitxers que contenia;

normalment, el programari ha d'incloure algun fitxer de tipus Readme o Ins-

tall, en què ens especificaran les opcions d'instal·lació pas per pas, i també

possibles dependències del programari.

En primer lloc, caldrà verificar les dependències (se solen indicar en el fitxer

amb els passos d'instal·lació), per si disposem del programari adequat. Si no,

l'haurem de buscar i instal·lar.

Si es tracta d'un paquet binari, la instal·lació sol ser bastant fàcil, ja que o bé

directament ja serà executable on l'hàgim deixat, o portarà algun instal·lador

propi. Una altra possibilitat serà que ho hàgim de fer manualment, i llavors

n'hi haurà prou de copiar (cp -r, còpia recursiva) o moure (instrucció mv) el

directori a la posició volguda.

Un altre cas és el format de codi font. En aquest, abans d'instal·lar el progra-

mari, haurem de fer un pas de compilació. Per a això caldrà llegir amb cert de-

tall les instruccions que porti el programa. Però la majoria de desenvolupadors

usen un sistema de GNU anomenat autoconf (d'autoconfiguració), en el qual

habitualment s'usen els passos següents (si no apareixen errors):

GNUFDL • PID_00167525 17 Administració local

a)�.�/configure: es tracta d'un script que configura el codi per a poder ser com-

pilat a la nostra màquina, i verifica que hi hagi les eines adequades. L'opció --

prefix = directori permet especificar on s'instal·larà el programari. Normalment,

se suporten moltes opcions addicionals de configuració segons el programari

(amb -help es mostren les que accepta).

b)�make: la compilació pròpiament dita.

c)�make�install: la instal·lació del programari a un lloc adequat, especificat

prèviament com a opció en el configure o assumida per defecte.

Aquest és un procés general, però depenent del programari se seguirà o no; hi

ha casos bastant pitjors, en què tot el procés s'ha de fer a mà, retocant fitxers

de configuració o el Makefile mateix, o compilant un per un els fitxers, però

això, per sort, és com més va menys habitual.

En cas de voler esborrar el programari instal·lat, caldrà utilitzar el

desinstal·lador si ens en proporcionen, o si no, esborrar directament el direc-

tori o els fitxers que es van instal·lar, anant amb compte amb les possibles

dependències.

Els paquets tgz són bastant habituals com a mecanisme de còpia de seguretat

en tasques d'administració, per exemple, per a desar còpies de dades impor-

tants, fer còpies de comptes d'usuari, o guardar còpies antigues de dades que

no sabem si tornarem a necessitar. Se sol utilitzar el procés següent: suposem

que volem guardar una còpia del directori dir; llavors executem tar -cvf dir.tar

dir (c per a compactar dir en el fitxer dir.tar) i gzip dir.tar (comprimir) o bé en

una sola instrucció com la següent:

tar -czvf dir.tgz dir

El resultat serà un fitxer dir.tgz. Cal ser acurat si ens interessa conservar els atri-

buts dels fitxers o els permisos d'usuari, i també possiblement fitxers d'enllaç

(links) que hi pugui haver (haurem d'examinar les opcions de tar perquè s'ajusti

a les opcions que volem).

1.4.2. Fedora/Red Hat: paquets RPM

El sistema de paquets RPM [Bai] creat per Red Hat representa un pas

endavant, ja que inclou la gestió de dependències i tasques de configu-

ració del programari. A més, el sistema desa una petita base de dades

amb els paquets ja instal·lats, que es pot consultar i s'actualitza amb les

noves instal·lacions.

GNUFDL • PID_00167525 18 Administració local

Els paquets RPM, per convenció, solen usar un nom com el següent:

paquet-versio-rev.arq.rpm

en què paquet és el nom del programari, versio és la numeració de versió del pro-

gramari, rev sol ser la revisió del paquet RPM, que indica les vegades que s'ha

construït, i arq, l'arquitectura a la qual va destinat el paquet, ja sigui Intel/AMD

(i386, i586, i686, x86_64, ia64) o altres com alpha, sparc, ppc... L'"arquitectura"

noarch se sol usar quan és independent de l'arquitectura, com, per exemple, un

conjunt de scripts, i src en el cas que es tracti de paquets de codi font. L'execució

típica inclou l'execució del programa rpm, amb les opcions de l'operació que

volem dur a terme, juntament amb els noms de paquets per processar junts.

Exemple

El paquet apache-1.3.19-23.i686.rpm indicaria que es tracta del programari Apache (elservidor web), en la seva versió 1.3.19, revisió del paquet RPM 23, per a arquitecturesPentium II o superiors.

Les operacions típiques amb els paquets RPM inclouen:

• Gestió�de�dependències: els paquets RPM incorporen la idea de gestió de

dependències i de base de dades dels paquets existents.

• Informació�del�paquet: es consulta sobre el paquet una informació de-

terminada, s'usa l'opció -q acompanyada del nom del paquet (amb -p si es

fa sobre un arxiu rpm). Si el paquet no ha estat instal·lat encara, l'opció

seria -q acompanyada de l'opció d'informació que es vulgui demanar, i si

es volen preguntar tots els paquets instal·lats alhora, l'opció seria -qa. Les

preguntes a un paquet instal·lat poden ser:

Consulta Opci-ons RPM

Resultats

Arxius rpm -ql Llista dels arxius que conté el paquet (passat com a paràmetre)

Informació rpm -qi Descripció del paquet

Requisits rpm -qR Requisits previs, biblioteques o programari

• Instal·lació: simplement rpm -i paquet.rpm, o bé amb l'URL en què es tro-

ba el paquet, per a descarregar-lo des de servidors FTP o web. Només cal

utilitzar la sintaxi ftp:// o http:// per a donar la localització del paquet. La

instal·lació es podrà fer sempre que s'estiguin complint les dependències

del paquet, ja sigui programari previ o biblioteques que haurien d'estar

instal·lades. En cas de no complir-lo, ens dirà quin programari falta, i el

nom del paquet que el proporciona. Es pot forçar la instal·lació (a risc que

no funcioni) amb les opcions --force o --nodeps, o simplement no fer cas de

la informació de les dependències. La tasca d'instal·lació (duta a terme per

rpm) d'un paquet comporta diferents subtasques:

GNUFDL • PID_00167525 19 Administració local

– Verificar les possibles dependències.

– Examinar conflictes amb altres paquets prèviament instal·lats.

– Fer tasques prèvies a la instal·lació.

– Decidir què cal fer amb els fitxers de configuració associats al paquet

si existien prèviament.

– Desempaquetar els fitxers i col·locar-los al lloc correcte.

– Fer tasques de postinstal·lació.

– Finalment, emmagatzemar el registre de les tasques fetes en la base de

dades d'RPM.

• Actualització: equivalent a la instal·lació, però comprovant primer que

el programari ja existeix; rpm -U paquet.rpm. S'encarregarà d'esborrar la

instal·lació prèvia.

• Verificació: durant el funcionament normal del sistema, molts dels arxius

instal·lats canvien. En aquest sentit, RPM permet verificar els arxius per a

detectar les modificacions, bé pel procés normal, bé per algun error que

podria indicar dades corrompudes. Mitjançant rpm -V paquet verifiquem

un paquet concret, i mitjançant rpm -Va els verifiquem tots.

• Eliminació: esborrar el paquet del sistema RPM (-e o --erase). Si hi ha de-

pendències, pot ser necessari eliminar-ne d'altres primer.

Exemple

Per a un cas remot:

rpm -i ftp://lloc/directori/paquet.rpm

ens permetria descarregar el paquet des del lloc FTP o web proporcionat, amb la sevalocalització de directoris, i procedir en aquest cas a la instal·lació del paquet.

Cal vigilar la procedència dels paquets, i només utilitzar fonts de paquets cone-

gudes i fiables, ja sigui del fabricant mateix de la distribució o de llocs en què

confiem. Tenim juntament amb els paquets alguna "signatura" digital perquè

en puguem comprovar l'autenticitat; se solen utilitzar les sumes md5 per a

comprovar que el paquet no s'ha alterat, i altres sistemes com GPG (versió

GNU de PGP) per a comprovar l'autenticitat de l'emissor del paquet. Hi ha

també a Internet diferents magatzems de paquets RPM, en què estan disponi-

bles per a diferents distribucions que usin o permetin el format RPM.

Per a un ús segur de paquets, els repositoris (oficials, i alguns de tercers) firmen

electrònicament els paquets, per exemple amb el GPG esmentat. Això ens per-

met assegurar (si disposem de les firmes) que els paquets procedeixen de la font

Nota

Vegeu el llocwww.rpmfind.net

GNUFDL • PID_00167525 20 Administració local

fiable. Cada proveïdor (el repositori) inclou uns fitxers de firma PGP amb la

clau per al seu lloc. Les dels repositoris oficials ja es troben instal·lades, i de les

de tercers haurem d'obtenir el fitxer de clau, i incloure-la en RPM, típicament:

$ rpm --import GPG-KEY-FILE

GPP-KEY-FILE és el fitxer clau GPG o l'URL del fitxer esmentat; aquest fitxer

també tindrà suma md5 per a comprovar-ne la integritat. Podem conèixer les

claus existents en el sistema amb el següent:

$ rpm -qa | grep ^gpg-pubkey

Podem observar més detalls a partir de la clau obtinguda:

$ rpm -qi gpg-key-xxxxx-yyyyy

Per a un paquet rpm concret podrem comprovar si disposa de firma i quina

s'ha utilitzat:

$ rpm --checksig -v <paquet>.rpm

I per a verificar que un paquet és correcte partint de les firmes disponibles, es

pot comprovar amb:

$ rpm -K < paquet >.rpm

Hem de ser acurats en importar només aquelles claus dels llocs en què confiem.

Quan RPM trobi paquets amb firma que no tinguem en el nostre sistema, o el

paquet no estigui firmat, ens avisarà, i l'acció ja dependrà de la nostra actuació.

Quant al suport RPM en les distribucions, en Fedora (Red Hat, i també en les

seves derivades), RPM és el format per defecte de paquets i el que usa àmplia-

ment la distribució per a les actualitzacions i la instal·lació de programari. En

Debian s'utilitza el format denominat DEB (com veurem), hi ha suport per a

RPM (existeix la instrucció rpm), però només per a consulta o informació de

paquets. En el cas que sigui imprescindible instal·lar un paquet rpm en Debian,

es recomana utilitzar la utilitat alien, que permet convertir formats de paquets,

en aquest cas d'RPM a DEB, i procedir a la instal·lació amb el paquet convertit.

A més del sistema base d'empaquetament de la distribució, avui dia cada una

sol aportar un sistema de gestió de programari intermedi de nivell més alt,

que afegeix una capa superior al sistema base, facilita les tasques de gestió del

programari i afegeix una sèrie d'utilitats per a controlar millor el procés.

GNUFDL • PID_00167525 21 Administració local

En el cas de Fedora (Red Hat i derivats) s'utilitza el sistema YUM, que permet,

com a eina de nivell més alt, la instal·lació i gestió de paquets en sistemes RPM,

i també la gestió automàtica de dependències entre els paquets. Facilita l'accés

a múltiples repositoris diferents, centralitza la seva configuració en un fitxer

(/etc/yum.conf habitualment) i té una interfície d'instruccions simple.

La configuració de YUM es basa en:

/etc/yum.config (fitxer d'opcions)

/etc/yum (directori per a algunes utilitats associades)

/etc/yum.repos.d (directori d'especificació de repositoris, un fitxer per a cada un,

s'inclou informació de l'accés i localització de les firmes GPG).

Per a les operacions típiques de YUM, un resum seria:

Ordre Descripció

yum install <nom> Instal·la el paquet amb el nom

yum update <nom> Actualitza un paquet existent

yum remove <nom> Elimina un paquet

yum list <nom> Busca un paquet per nom (només nom)

yum search <nom> Busca més àmpliament

yum provices <arxiu> Busca paquets que proporcionin el fitxer

yum update Actualitza tot el sistema

yum upgrade Igual que l'anterior incloent-hi paquets addicionals

Per finalitzar, Fedora també ofereix un parell d'utilitats gràfiques per a YUM,

pup per a controlar les actualitzacions recents disponibles i pirut com a paquet

de gestió de programari (en noves versions de Fedora, s'han substituït per gpk-

update-viewer i gpk-application). També n'hi ha algunes altres com yumex, amb

més control de la configuració interna de YUM.

1.4.3. Debian: paquets DEB

Debian té eines interactives com tasksel, que permet escollir uns subconjunts

de paquets agrupats per tipus de tasques: paquets per a X, per a desenvolupa-

ment, per a documentació, etc.; o com dselect, que facilita navegar per tota

la llista de paquets disponible (n'hi ha milers) i escollir aquells que vulguem

instal·lar o desinstal·lar. De fet, aquestes són només una interfície del gestor

de programari de nivell intermedi APT (equivalent al YUM a Fedora).

Nota

Vegeu el YUM a http://yum.baseurl.org/

GNUFDL • PID_00167525 22 Administració local

En el nivell de línia d'instruccions disposa de dpkg, que és la instrucció de més

baix nivell (seria l'equivalent a rpm), per a gestionar directament els paquets

DEB de programari [Deb], típicament dpkg -i paquet.deb per a fer la instal·lació.

Es poden dur a terme tot tipus de tasques, d'informació, instal·lació, esborra-

ment o canvis interns en els paquets de programari.

El nivell intermedi (com el cas de YUM a Fedora) el presenten les eines APT

(la majoria són instruccions apt-xxx). APT permet gestionar els paquets per

mitjà d'una llista de paquets actuals i disponibles a partir de diverses fonts

de programari, ja sigui des dels CD de la instal·lació, llocs FTP o web (HTTP).

Aquesta gestió es fa de manera transparent, i el sistema és independent de les

fonts de programari.

La configuració del sistema APT s'efectua des dels arxius disponibles en /etc/

apt, en què /etc/apt/sources.list és la llista de fonts disponibles. Podria ser, per

exemple:

deb http://http.us.debian.org/debian stable main contrib non-free

debsrc http://http.us.debian.org/debian stable main contrib non-free

deb http://security.debian.org stable/updates main contrib non-free

en el qual hi ha recopilades diverses de les fonts "oficials" per a una Debian

(stable en aquest cas), des d'on es poden obtenir els paquets de programari, i

també les actualitzacions que estiguin disponibles. Bàsicament, s'especifica el

tipus de font (Web/FTP en aquest cas), el lloc, la versió de la distribució (stable),

i les categories del programari que es buscarà (lliure, o contribucions de tercers

o de llicència no lliure o comercial).

Els paquets de programari estan disponibles per a les diferents versions de la

distribució Debian. Hi ha paquets per a les versions stable, testing i unstable. L'ús

d'uns o d'altres determina el tipus de distribució (amb canvi previ de les fonts

de repositoris en sources.list). Es poden tenir fonts de paquets barrejades, però

no és gaire recomanable, ja que es podrien donar conflictes entre les versions

de les diferents distribucions.

Una vegada tenim les fonts de programari configurades, la principal eina per

a manejar-les en el nostre sistema és apt-get, que ens permet instal·lar, actua-

litzar o esborrar des del paquet individual fins a poder actualitzar la distribu-

ció sencera. Hi ha també una interfície a apt-get, anomenada aptitude, la in-

terfície d'opcions del qual és pràcticament igual (de fet, es podria qualificar

d'emulador d'apt-get, ja que la interfície és equivalent). Com a avantatge, apor-

ta una gestió millor de dependències dels paquets, i algoritmes per a solucio-

nar els conflictes de paquets que poden aparèixer. De fet, en les últimes versi-

ons de Debian, aptitude és la interfície per defecte en línia d'instruccions per

a la gestió de paquets.

Un sistema molt potent

Els paquets DEB de Debian sónpotser el sistema d'instal·laciómés potent existent en GNU/Linux. Una de les seves presta-cions més destacables és la in-dependència del sistema de lesfonts dels paquets (mitjançantAPT).

GNUFDL • PID_00167525 23 Administració local

Algunes funcions bàsiques d'apt-get són:

1) Instal·lació d'un paquet particular:

apt-get install paquet

2) Esborrament d'un paquet:

apt-get remove paquet

3) Actualització de la llista de paquets disponibles:

apt-get update

4) Actualització de la distribució; podríem efectuar els passos combinats:

apt-get update

apt-get upgrade

apt-get dist-upgrade

Mitjançant aquest últim procés, podem mantenir la nostra distribució actua-

litzada permanentment, actualitzant els paquets instal·lats i verificant les de-

pendències amb els nous. Una eina útil per a construir aquesta llista és apt-

spy, que intenta buscar els llocs oficials més ràpids, o netselect, que ens per-

met provar una llista de llocs. D'altra banda, podem buscar les fonts oficials

(configurar-les amb apt-setup), o bé copiar algun fitxer de fonts disponible.

El programari addicional (de tercers) pot necessitar afegir altres fonts més (a

/etc/apt/sources.list); es poden obtenir llistes de llocs de fonts disponibles (per

exemple, en http://www.apt-get.org).

L'actualització del sistema en particular genera una descàrrega d'un gran nom-

bre de paquets (en especial en unstable), i es fa recomanable buidar la memò-

ria cau, el repositori local, amb els paquets descarregats (es mantenen en /var/

cache/apt/archive) que ja no s'hagin d'utilitzar, bé amb apt-get clean, per a eli-

minar-los tots, o bé amb apt-get autoclean, per a eliminar aquells paquets no

necessaris perquè ja hi ha noves versions i ja no seran necessaris (en principi).

Cal tenir en compte que no tornem a necessitar aquests paquets per raons de

reinstal·lació, perquè en aquest cas els hauríem de tornar a descarregar.

El sistema APT també permet el que es denomina SecureAPT, que és la gestió

segura de paquets mitjançant verificació de sumes (md5) i la firma de fonts de

paquets (de tipus GPG). Si durant la descàrrega no estan disponibles les firmes,

apt-get n'informa i genera una llista amb els paquets no firmats, i demana si

es deixen instal·lar o, no, i en deixa la decisió a l'administrador. S'obté la llista

de fonts confiables actuals amb:

GNUFDL • PID_00167525 24 Administració local

# apt-key list

Les claus GPG dels llocs oficials de Debian són distribuïdes mitjançant un pa-

quet. Les instal·lem:

apt-get install debian-archive-keyring

evidentment considerant que tenim sources.list amb els llocs oficials. S'espera

que per defecte (depenent de la versió de Debian) aquestes claus ja s'instal·lin

amb la instal·lació inicial del sistema. Per a altres llocs no oficials (que no

proporcionin la clau en paquet), però que considerem confiables, en podem

importar la clau, obtenint-la des del repositori (haurem de consultar on tenen

la clau disponible, no hi ha un estàndard definit, encara que sol ser a la pàgina

web inicial del repositori). S'utilitza apt-key add amb el fitxer, per a afegir la

clau, o també:

# gpg --import arxiu.key

# gpg --export --armor XXXXXXXX | apt-key add -

X és un nombre hexadecimal relacionat amb la clau (vegeu les instruccions

del repositori per a comprovar la manera recomanada d'importar la clau i les

dades necessàries).

Una altra funcionalitat important del sistema APT són les funcions de consulta

d'informació dels paquets, amb l'eina apt-cache, que ens permet interactuar

amb les llistes de paquets de programari Debian.

Exemple

L'eina apt-cache disposa d'instruccions que ens permeten buscar informació sobre els pa-quets, com per exemple:

1) Buscar paquets sobre la base d'un nom incomplet:

apt-cache search nom

2) Mostrar la descripció del paquet:

apt-cache show paquet

3) De quins paquets depèn:

apt-cache depends paquet

Una altra eina o funcionalitat d'APT interessant és apt-show-versions, que ens

especifica quins paquets poden ser actualitzats (i per quines versions, vegeu

l'opció -u).

Altres tasques més específiques es necessitaran fer amb l'eina de nivell més

baix, dpkg. Es pot obtenir, per exemple, la llista d'arxius d'un paquet determinat

ja instal·lat:

GNUFDL • PID_00167525 25 Administració local

dpkg -L paquet

O la llista de paquets sencera amb:

dpkg -l

O buscar de quin paquet prové un element (fitxer, per exemple):

dpkg -S fitxer

Aquest en particular funciona per a paquets instal·lats; apt-file permet també

buscar per a paquets encara no instal·lats.

Finalment, es poden esmentar també algunes eines gràfiques per a APT, com

Synaptic, Gnome-apt per a Gnome (o gnome-app-install i update-manager per a

versions recents), i Kpackage o Adept per a KDE. O les textuals ja esmentades,

com aptitude o dselect.

En conclusió, es pot destacar que el sistema de gestió APT (en combinació amb

el base dpkg) és molt flexible i potent a l'hora de gestionar les actualitzacions,

i és el sistema de gestió de paquets usat a Debian i les seves distribucions deri-

vades, com Ubuntu, Kubuntu, Knoppix, Linex, etc.

1.5. Eines genèriques d'administració

En el camp de l'administració, també podríem considerar algunes eines, com

les pensades de manera genèrica per a l'administració. Es pot indicar, però,

que per a aquestes eines és difícil mantenir-se al dia, a causa dels plans actuals

de versions de les distribucions, amb evolució molt ràpida. Algunes d'aquestes

eines (encara que en un moment determinat poden no ser funcionals al com-

plet en una distribució donada) són:

a)�Webmin: és una eina d'administració pensada des d'una interfície web. Fun-

ciona amb una sèrie de connectors que es poden afegir per a cada servei per

administrar i té formularis en què s'especifiquen els paràmetres de configura-

ció dels serveis. A més, ofereix la possibilitat (si s'activa) de permetre adminis-

tració remota des de qualsevol màquina amb navegador.

b) Altres en desenvolupament, com cPanel, ISPConfig...

D'altra banda, els entorns d'escriptori Gnome i KDE solen disposar del con-

cepte de centre de control, que permet gestionar tant l'aspecte visual de les in-

terfícies gràfiques com tractar alguns paràmetres dels dispositius del sistema.

Quant a les eines gràfiques individuals d'administració, la distribució de GNU/

Linux mateixa n'ofereix algunes directament (eines que acompanyen tant

Gnome com KDE), eines dedicades a gestionar un dispositiu (impressores, so,

Nota

Podeu trobar aquesta eina aWebmin, www.webmin.com

GNUFDL • PID_00167525 26 Administració local

targeta de xarxa, etc.) i altres per a l'execució de tasques concretes (connexió a

Internet, configurar l'arrencada de serveis del sistema, configurar X Window,

visualitzar registres...). Moltes són simples frontends (o caràtules) a les eines

bàsiques de sistema, o bé estan adaptades a particularitats de la distribució.

Es pot destacar, en especial en aquest apartat, la distribució Fedora (Red Hat i

derivats), que intenta disposar de diferents utilitats (més o menys minimalis-

tes) per a diferents funcions d'administració. Les podem trobar a l'escriptori

(al menú d'administració), o en instruccions com system-config-xxxxx per a di-

ferents funcionalitats com la gestió de pantalla, la impressora, la xarxa, la se-

guretat, els usuaris, els paquets, etc. En podem veure algunes a la figura:

Figura 1. Algunes utilitats gràfiques d'administració en Fedora.

1.6. Altres eines

En l'espai limitat d'aquesta unitat no es poden arribar a comentar totes aque-

lles eines que ens poden aportar beneficis per a l'administració. Esmentarem

algunes de les eines que podríem considerar bàsiques:

• Les�múltiples�instruccions�d'utilitats�UNIX�bàsiques: grep, awk, sed, find,

diff, gzip, bzip2, cut, sort, df, du, cat, more, file, which...

• Els�editors, imprescindibles per a qualsevol tasca d'edició; tenim editors

com vi, molt utilitzat en tasques d'administració per la rapidesa d'efectuar

petits canvis als fitxers. Vim és l'editor compatible amb vi que sol por-

tar GNU/Linux. Permet sintaxi acolorida en diversos llenguatges. L'Emacs,

editor molt complet, adaptat a diferents llenguatges de programació (sin-

taxi i modes d'edició), disposa d'un entorn molt complet i d'una versió X

Nota

Consulteu les pàgines man deles instruccions, o una referèn-cia d'eines com [Stu01].

GNUFDL • PID_00167525 27 Administració local

denominada XEmacs. Joe és un editor compatible amb Wordstar. I molts

d'altres...

• Llenguatges�de�tipus�script, útils per a administració, com Perl, molt ade-

quat per a tractament d'expressions regulars i anàlisi de fitxers (filtratge,

ordenació, etc.); PHP, llenguatge molt utilitzat en entorns web; Python,

un altre llenguatge que permet fer prototips ràpids d'aplicacions...

• Eines�de�compilació�i�depuració�de�llenguatges�d'alt�nivell: GNU GCC

(compilador de C i C++, entre d'altres), GDB (depurador), XXGDB (interfí-

cie X per a GDB), DDD (depurador per a diversos llenguatges).

GNUFDL • PID_00167525 28 Administració local

2. Distribucions: particularitats

Intentem destacar ara algunes diferències tècniques menors (que com més va

es redueixen més) en les distribucions (Fedora/Red Hat i Debian) [Mor03] uti-

litzades, que anirem veient amb més detall al llarg de les unitats, a mesura que

vagin apareixent.

Canvis o particularitats de Fedora/Red Hat:

• Ús�del�gestor�d'arrencada�GRUB (una utilitat GNU). A diferència de ver-

sions anteriors de la majoria de distribucions, que solen usar LILO, Fedora

utilitza GRUB. GRUB (Grand Unified Bootloader) té una configuració en

mode text (normalment en /boot/grub/grub.conf) bastant senzilla, i que

es pot modificar en l'arrencada. És potser més flexible que LILO. Última-

ment les distribucions tendeixen a l'ús de GRUB; Debian també l'inclou

ja per defecte.

• Gestió�d'alternatives. En el cas que hi hagi més d'un programari equiva-

lent present per a una tasca concreta, mitjançant un directori (/etc/alter-

natives) s'indica quina és l'alternativa que s'usa. Aquest sistema es va aga-

far de Debian, que en fa un ús ampli en la seva distribució.

• Programa�d'escolta�de�ports�TCP/IP�basat�en�xinetd. En /etc/xinetd.d

podem trobar, de manera modular, els fitxers de configuració per a al-

guns dels serveis TCP/IP, juntament amb el fitxer de configuració /etc/

xinetd.conf. En els sistemes UNIX clàssics, el programa utilitzat és l'inetd,

que tenia un únic fitxer de configuració en /etc/inetd.conf, com el cas, per

exemple, de la distribució Debian, que utilitza inetd, i deixa xinetd com a

opció.

• Alguns� directoris� de� configuració� especials: /etc/profile.d, arxius que

s'executen quan un usuari obre un intèrpret d'ordres; /etc/xinetd.d, con-

figuració d'alguns serveis de xarxa; /etc/sysconfig, dades de configuració

de diversos aspectes i serveis del sistema; /etc/cron., diversos directoris en

què s'especifiquen treballs per fer periòdicament (mitjançant crontab); /

etc/pam.d, en què pam són els denominats mòduls d'autenticació, en cada

un dels arxius del qual es configuren permisos per al programa o servei

particular; /etc/logrotate.d, configuració de rotació (quan cal netejar, com-

primir, etc.) d'alguns dels fitxers de registre per a diferents serveis.

• Disposa�d'un�programari�anomenat�kudzu, en algunes de les versions

prèvies de Fedora, i en Red Hat empresarial, que examina el maquinari

en arrencada per a detectar possibles canvis de configuració i generar els

Nota

És important conèixer els de-talls d'una distribució, ja quepoden ser bàsics per a resoldreuna tasca o accelerar-ne la so-lució (per exemple, si disposad'eines pròpies addicionals es-pecialitzades per a alguna tas-ca).

GNUFDL • PID_00167525 29 Administració local

dispositius o configuracions adequats, encara que s'està migrant progres-

sivament a l'API HAL, que controla precisament aquest tema.

En el cas de Debian:

• Sistema�d'empaquetament�propi�basat�en�els�paquets�DEB, amb eines

de diversos nivells per a treballar amb els paquets com: dpkg, apt-get, dselect,

tasksel.

• Debian�segueix�l'FHS, sobre l'estructura de directoris, i afegeix alguns di-

rectoris particulars en /etc, com per exemple: /etc/default, arxius de con-

figuració, i valors per defecte per a alguns programes; /etc/network, dades

i guions de configuració de les interfícies de xarxa; /etc/dpkg i /etc/apt,

informació de la configuració de les eines de gestió de paquets; /etc/alter-

natives, enllaços als programes per defecte, en aquells en què hi ha (o hi

pot haver) diverses alternatives disponibles.

• Sistema�de�configuració de molts paquets de programari per mitjà de

l'eina dpkg-reconfigure. Per exemple:

dpkg-reconfigure gdm

      permet escollir el gestor d'entrada per a X Window, o:

dpkg-reconfigure X-Window-system

      ens permet configurar els diferents elements d'X Window.

• Utilitza�configuració�de�serveis�TCP/IP�per�inetd, amb la configuració en

el fitxer /etc/inetd.conf. Disposa d'una eina update-inetd per a inhabilitar

o crear entrades de serveis.

• Alguns directoris de configuració especials: /etc/cron, diversos directoris

en què s'especifiquen treballs per fer periòdicament (mitjançant crontab);

/etc/pam.d, en què pam són mòduls d'autenticació.

GNUFDL • PID_00167525 30 Administració local

3. Nivells d'arrencada i serveis

Un primer punt important en l'anàlisi del comportament local del sistema

és el seu funcionament en els anomenats nivells d'execució (o runlevels), que

determinen (en el nivell) el mode actual de treball del sistema i els serveis que

es proporcionen [Wm02].

Un servei és una funcionalitat proporcionada per la màquina, normalment

basada en dimonis (o processos en segon pla d'execució, que controlen peti-

cions de xarxa, activitat del maquinari, o altres programes que proveeixin al-

guna tasca).

L'activació o parada de serveis es fa mitjançant la utilització de scripts. La ma-

joria dels serveis estàndard, que solen tenir la seva configuració en el direc-

tori /etc, se solen controlar mitjançant els scripts presents en /etc/init.d/. En

aquest directori solen aparèixer scripts amb noms similars al servei als quals

estan destinats, i se solen acceptar paràmetres d'activació o parada. Es fa:

/etc/init.d/servei start

Arrencada del servei.

/etc/init.d/servei stop

Parada del servei.

/etc/init.d/servei restart

Aturada i arrencada posterior del servei.

Quan un sistema GNU/Linux arrenca, primer es carrega el nucli del siste-

ma, i després s'inicia el primer procés, denominat init, que és el responsa-

ble d'executar i activar la resta del sistema, mitjançant la gestió dels nivells

d'execució (o runlevels).

Un nivell d'execució és senzillament una configuració de programes i

serveis que s'executaran orientats a un determinat funcionament.

Els nivells típics solen ser (hi pot haver diferències en l'ordre, en especial en

els nivells 2-5; a la taula hi ha la configuració en Fedora, i la recomanada per

l'estàndard LSB):

GNUFDL • PID_00167525 31 Administració local

Runlevel Funció Descripció

0 Parada Finalitza serveis i programes actius, i també desmunta sistemes d'arxius actius i parala CPU.

1 Monousuari Finalitza la majoria de serveis, i permet només l'entrada de l'administrador (root).S'usa per a tasques de manteniment i correcció d'errors crítics.

2 Multiusuari sense xarxa No s'inicien serveis de xarxa, i permet només entrades locals en el sistema.

3 Multiusuari Inicia tots els serveis excepte els gràfics associats a X Window.

4 Multiusuari No se sol usar, típicament és igual que el 3.

5 Multiusuari X Igual que el 3, però amb suport X per a l'entrada d'usuaris (connexió gràfica).

6 Reinici Para tots els programes i serveis. Reinicia el sistema.

Al contrari, es pot assenyalar que Debian usa un model en què pràcticament

els nivells 2-5 són equivalents, i fan exactament la mateixa funció (encara que

podria ocórrer que en alguna versió això canviï per coincidir amb l'estàndard

LSB).

Aquests nivells solen estar configurats en els sistemes GNU/Linux (i UNIX) per

dos sistemes diferents: el BSD i el System V (de vegades abreujat com a sysV).

En el cas de Fedora i Debian, s'utilitza el sistema System V, que és el que mos-

trarem, però d'altres UNIX i alguna distribució GNU/Linux (com Slackware)

utilitzen el model BSD.

En el cas del model runlevel de System V, quan el procés init arrenca, utilitza un

fitxer de configuració anomenat /etc/inittab per a decidir el mode d'execució

en el qual entrarà. En aquest fitxer es defineix el runlevel per defecte (initdefault)

en arrencada (per a la instal·lació per defecte, en Fedora el 5, en Debian el 2) i

una sèrie de serveis de terminal per activar per a atendre l'entrada de l'usuari.

Després, el sistema, segons el runlevel escollit, consulta els fitxers continguts

en /etc/rcn.d, en què n és el número associat al runlevel (nivell escollit), en el

qual es troba una llista de serveis per activar o parar en cas que arrenquem

en el runlevel o l'abandonem. Dins del directori trobarem una sèrie de scripts

o enllaços als scripts que controlen el servei.

Cada script té un nom relacionat amb el servei, una S o K inicial que indica

si és l'script per a iniciar (S) o matar (K) el servei, i un número que reflecteix

l'ordre en el qual s'executaran els serveis.

Una sèrie d'instruccions de sistema serveixen d'ajuda per a manejar els nivells

d'execució. Es poden esmentar:

• Els�scripts, que ja hem vist, en /etc/init.d/ ens permeten arrencar, parar o

reiniciar serveis individuals.

GNUFDL • PID_00167525 32 Administració local

• telinit ens deixa canviar de nivell d'execució; només n'hem d'indicar el

número. Per exemple, necessitem fer una tasca crítica en root; sense usua-

ris treballant, podem fer un telinit 1 (també es pot usar S) per a passar a

runlevel monousuari, i després de la tasca un telinit 3 per a tornar a mul-

tiusuari. També es pot utilitzar la instrucció init per a la mateixa tasca, en-

cara que telinit aporta algun paràmetre extra. Per exemple, el reinici típic

d'un sistema UNIX es feia amb sync; sync; sync; init 6. La instrucció sync

força el buidatge de les memòries intermèdies del sistema d'arxius, i després

reiniciem en runlevel 6.

• shutdown permet parar ('-h' de halt) o reiniciar el sistema ('–r' de reboot).

Es pot donar un interval de temps o fer-ho immediatament. Per a aquestes

tasques també hi ha les instruccions halt i reboot.

• wall permet enviar missatges d'advertència als usuaris del sistema. Con-

cretament, l'administrador pot anunciar que es pararà la màquina en un

determinat moment. Instruccions com shutdown el solen utilitzar de ma-

nera automàtica.

• pidof permet esbrinar el PID (process ID) associat a un procés. Amb ps obte-

nim la llista de processos, i si volem eliminar un servei o procés mitjançant

kill, en necessitarem el PID.

Respecte a tot el model d'arrencada, les distribucions presenten algun petit

canvi:

• Fedora/Red�Hat: el runlevel 4 no té un ús declarat. Els directoris /etc/rcn.d

existeixen com a enllaços cap a subdirectoris de /etc/rc.d, on són centra-

litzats els scripts d'arrencada. Els directoris són, així: /etc/rc.d/rcn.d; però

com que hi ha els enllaços, és transparent a l'usuari. El runlevel per defecte

és el 5, amb arrencada amb X. Les instruccions i fitxers relacionats amb

l'arrencada del sistema són en els paquets de programari sysvinit i initscripts.

Respecte als canvis de fitxers i guions en Fedora, es pot destacar: en /etc/

sysconfig podem trobar arxius que especifiquen valors per defecte de la

configuració de dispositius o serveis. El guió /etc/rc.d/rc.sysinit és invocat

una vegada quan el sistema arrenca; el guió /etc/rc.d/rc.local s'invoca al fi-

nal del procés de càrrega i serveix per a indicar inicialitzacions específiques

de la màquina que ens interessin sense passar per tot el sistema següent.

L'arrencada real dels serveis es fa per mitjà dels guions emmagatzemats en

/etc/rc.d/init.d. Hi ha també un enllaç des de /etc/init.d. A més, Fedora

proporciona uns scripts d'utilitat per a manejar serveis: /sbin/service per a

parar o iniciar un servei pel nom i /sbin/chkconfig per a afegir enllaços

als fitxers S i K necessaris per a un servei, o l'obtenció d'informació sobre

els serveis.

• Debian disposa d'instruccions de gestió dels runlevels com update-rc.d, que

permet instal·lar o esborrar serveis engegant-los o parant-los en un o més

GNUFDL • PID_00167525 33 Administració local

runlevels. Una altra instrucció és invoke-rc.d, que permet les clàssiques acci-

ons d'engegar, parar o reiniciar el servei. El runlevel per defecte en Debian és

el 2, l'X Window System no es gestiona des de /etc/inittab, sinó que hi ha

el gestor (per exemple, gdm o kdm), com si fos un servei més del runlevel 2.

3.1. Upstart, un nou sistema

Upstart és un nou sistema d'arrencada basat en esdeveniments, dissenyat per a

substituir el procés comentat generat per l'init del sistema d'arrencada sysvinit.

Un dels principals problemes del dimoni init de System V és que no va ser

pensat per a maquinari modern, que permet dispositius removibles, o dispo-

sitius que puguin ésser connectats/substituïts en calent (hotplug).

Aquest sistema va ser dissenyat per l'empresa Canonical, per a incorporar-se a

l'Ubuntu 6.10 (2006) i ha estat incorporat posteriorment a les diferents versi-

ons d'Ubuntu, i en Fedora (a partir de la versió 9) i openSUSE (11.3). Debian

manté l'anterior sistema amb certes modificacions (initng, una alternativa a

Upstart) fins a les últimes versions, però migrarà progressivament al nou sis-

tema (a causa dels intents, per totes dues parts, per mantenir el màxim nivell

de semblança amb Ubuntu i Debian).

Encara que es pot destacar que Upstart (almenys de moment) manté una com-

patibilitat total amb els scripts inicials del procés d'init (vistos en aquest apar-

tat, "Nivells d'arrencada i serveis"), el que es modifica és el procés intern que

gestiona els serveis d'arrencada, que passa a ser controlat pel dimoni d'Upstart.

El dimoni init d'Upstart està basat en esdeveniments que permeten executar

programes (o accions) específiques a partir de canvis en el sistema, que solen

ser típicament (respecte a l'init System V) scripts de parada o arrencada de ser-

veis. En System V això només es produïa per canvi de nivell d'execució; en

Upstart ho pot provocar qualsevol esdeveniment que succeeixi dinàmicament

en el sistema. Per exemple, Upstart se sol comunicar (per esdeveniments) amb

dimonis (com udev) que controlen els canvis del maquinari de la màquina; per

exemple, si apareix/desapareix un maquinari determinat, es poden activar o

desactivar els serveis de sistema associats a aquest maquinari.

La gestió d'aquests esdeveniments està centralitzada en /etc/event.d i, a mesura

que es vagi migrant (en les distribucions) cap a Upstart, aquest directori anirà

reemplaçant els continguts de /etc/init.d i els directoris associats als nivells

d'execució /etc/rc<n>.d.

En la terminologia d'Upstart, un esdeveniment és un canvi d'estat del sistema

que pot ser informat al procés init. Un job és un conjunt d'instruccions que

init llegeix, típicament o bé un binari o un shell script, juntament amb el nom

de l'esdeveniment. Així, quan l'esdeveniment apareix en el sistema, Upstart

llança el job associat (els jobs del sistema els podem trobar definits en el direc-

GNUFDL • PID_00167525 34 Administració local

tori esmentat /etc/event.d). Els jobs poden ser de dos tipus, task o service. Una

task és un job que fa la seva tasca i retorna a un estat d'espera quan acaba; un

service no acaba per si mateix, sinó per una decisió basada en un esdeveniment

o bé una intervenció manual de parada.

Així, el procés general init d'Upstart és un funcionament de màquina d'estats;

manté control de l'estat dels treballs (jobs) i els esdeveniments que dinàmica-

ment apareixen, i gestiona els canvis d'estat dels treballs en reacció als esde-

veniments apareguts.

Hi ha una sèrie de treballs (jobs) predefinits amb noms rcn que serveixen per

a emular els canvis de runlevel de System V, per a així emular el concepte de

nivell d'execució.

Per a examinar el sistema Upstart, podem usar com a eina bàsica la instrucció

initctl, que ens permet (entre altres tasques):

• initctl list (mostrar els jobs i el seu estat).

• initctl emit EVENT (emetre manualment esdeveniments concrets).

• Initctl start/stop/status JOB (l'acció sobre un job).

Per finalitzar, podem observar que Upstart és un sistema bastant nou i podrà

tenir certa evolució futura, ja substituint completament el System V inicial

o evolucionant a noves funcionalitats, ja que el sistema basat en màquina

d'estats és molt complet per integrar diferents funcionalitats que ara estan re-

partides per diversos elements del sistema. Es preveu que podria arribar a re-

emplaçar la programació de tasques periòdiques de sistema (usada actualment,

com veurem, per elements com cron, anacron, atd) i possiblement gestions di-

verses de dimonis de xarxa (com les fetes per inetd o xinetd).

Upstart és un aspecte al qual haurem de parar atenció en futures evolucions,

sense descuidar el System V, ja que es manté certa compatibilitat en no estar

totes les distribucions migrades a Upstart. D'altra banda, SystemV es continua

utilitzant en la majoria de UNIX de propietat i en les versions empresarials de

GNU/Linux.

GNUFDL • PID_00167525 35 Administració local

4. Observar l'estat del sistema

Una de les principals tasques de l'administrador (root) en el seu dia a dia serà

verificar el funcionament correcte del sistema i vigilar l'existència de possibles

errors o de saturació dels recursos de la màquina (memòria, discos, etc.). Pas-

sarem a detallar, en els apartats següents, els mètodes bàsics per a examinar

l'estat del sistema en un determinat moment i dur a terme les accions necessà-

ries per a evitar problemes posteriors.

Al taller final d'aquesta unitat farem un examen d'un sistema exemple, perquè

pugueu veure algunes d'aquestes tècniques.

4.1. Arrencada del sistema

En l'arrencada d'un sistema GNU/Linux es produeix tot un bolc d'informació

interessant. Quan el sistema arrenca, solen aparèixer les dades de detecció de

les característiques de la màquina, la detecció de dispositius, l'arrencada de

serveis de sistema, etc., i s'esmenten els problemes apareguts.

En la majoria de les distribucions, això es pot veure a la consola del sistema

directament durant el procés d'arrencada. Tanmateix, o la velocitat dels mis-

satges o algunes distribucions modernes que els oculten darrere caràtules grà-

fiques, poden impedir seguir els missatges correctament, amb la qual cosa ne-

cessitarem una sèrie d'eines per a aquest procés.

Bàsicament, podem utilitzar:

• Instrucció�dmesg: dóna els missatges de l'última arrencada del nucli.

• Fitxer�/var/log/messages: registre general del sistema, que conté els mis-

satges generats pel nucli i altres dimonis (hi pot haver multitud d'arxius

diferents de log, normalment en /var/log, depenent de la configuració del

servei syslog).

• Instrucció�uptime: indica quant temps fa que el sistema és actiu.

• Sistema�/proc: pseudosistema de fitxers (procfs) que utilitza el nucli per a

emmagatzemar la informació de processos i de sistema.

• Sistema�/sys: pseudosistema de fitxers (sysfs) que va aparèixer amb la bran-

ca 2.6.x del nucli, amb objectiu de proporcionar una manera més coherent

d'accedir a la informació dels dispositius i els seus controladors (drivers).

GNUFDL • PID_00167525 36 Administració local

4.2. Nucli: directori /proc

El nucli, durant la seva arrencada, posa en funcionament un pseudosistema

de fitxers anomenat /proc, on bolca la informació que recopila de la màquina,

i també moltes de les seves dades internes, durant l'execució. El directori /proc

està implementat sobre memòria i no es desa en disc. Les dades contingudes

són tant de naturalesa estàtica com dinàmica (varien durant l'execució).

Cal tenir en compte que com que /proc és fortament dependent del nucli, això

propicia que la seva estructura depengui del nucli de què disposa el sistema i

l'estructura i els fitxers inclosos poden canviar.

Una de les característiques interessants és que en el directori /proc podrem

trobar les imatges dels processos en execució, juntament amb la informació

que el nucli maneja sobre aquests processos. Cada procés del sistema es pot

trobar en el directori /proc/<pidproces>, en què hi ha un directori amb fitxers

que representen el seu estat. Aquesta informació és bàsica per a programes de

depuració, o bé per a les instruccions mateixes del sistema, com ps o top, que

la poden utilitzar per a veure l'estat dels processos. En general, moltes de les

utilitats del sistema consulten la informació dinàmica del sistema des de /proc

(en especial, algunes utilitats proporcionades amb el paquet procps).

D'altra banda, en /proc podem trobar altres fitxers d'estat global del sistema.

Comentem, de manera breu, alguns fitxers que podrem examinar per a obtenir

informació important:

Arxiu Descripció

/proc/bus Directori amb informació dels busos PCI i USB

/proc/cmdline Línia d'arrencada del nucli

/proc/cpuinfo Informació de la CPU

/proc/devices Llista de dispositius del sistema de caràcters o blocs

/proc/driver Informació d'alguns mòduls de maquinari

/proc/filesystems Sistemes de fitxers habilitats en el nucli

/proc/ide Directori d'informació del bus IDE, característiques de discos

/proc/interrups Mapa d'interrupcions de maquinari (IRQ) utilitzades

/proc/ioports Ports E/S utilitzats

/proc/meminfo Dades de l'ús de la memòria

/proc/modules Mòduls del nucli

/proc/mounts Sistemes d'arxius muntats actualment

Nota

El directori /proc és un recursextraordinari per a obtenir in-formació de baix nivell sobreel funcionament del sistema.Moltes instruccions de sistemas'hi basen per a les seves tas-ques.

GNUFDL • PID_00167525 37 Administració local

Arxiu Descripció

/proc/net Directori amb tota la informació de xarxa

/proc/scsi Directori de dispositius SCSI, o IDE emulats per SCSI

/proc/sys Accés a paràmetres del nucli configurables dinàmicament

/proc/version Versió i data del nucli

A partir de la branca 2.6 del nucli, s'ha iniciat una transició progressiva de

procfs (/proc) a sysfs (/sys) amb l'objectiu de moure tota aquella informació

que no estigui relacionada amb processos, en especial dispositius i els seus

controladors (mòduls del nucli) cap al sistema /sys.

4.3. Nucli: /sys

El sistema sys s'encarrega de fer disponible la informació de dispositius i con-

troladors, informació de la qual disposa el nucli, a l'espai d'usuari, de mane-

ra que altres API o aplicacions puguin accedir d'una manera flexible a la in-

formació dels dispositius (o els seus controladors). Sol ser utilitzada per capes

com HAL i el servei udev per al monitoratge i la configuració dinàmica dels

dispositius.

Dins del concepte de sys hi ha una estructura de dades en arbre dels dispositius

i controladors (diguem-ne, el model conceptual fix), i després s'hi accedeix

per mitjà del sistema de fitxers sysfs (l'estructura del qual pot canviar entre

versions).

Quan es detecta o apareix en el sistema un objecte afegit, en l'arbre del model

de controladors (controladors, dispositius incloent-hi les seves diferents clas-

ses), es crea un directori en sysfs. La relació pare/fill es reflecteix amb subdi-

rectoris sota /sys/devices/ (s'hi reflecteix la capa física i els seus identificadors).

En el subdirectori /sys/bus es col·loquen enllaços simbòlics, reflectint la ma-

nera en la qual els dispositius pertanyen als diferents busos físics del sistema.

I /sys/class mostra els dispositius agrupats d'acord amb la seva classe, com per

exemple xarxa, mentre que /sys/block/ conté els dispositius de blocs.

Alguna de la informació proporcionada per /sys es pot trobar també en /proc,

però es va considerar que aquest estava barrejant diferents coses (dispositius,

processos, dades de maquinari, paràmetres del nucli) de manera no coherent,

i això va ser un dels motius per a crear /sys. S'espera que, progressivament, es

migri informació de /proc a /sys per a centralitzar la informació dels disposi-

tius.

GNUFDL • PID_00167525 38 Administració local

4.4. Processos

Els processos que es trobin en execució en un determinat moment seran, en

general, de diferent naturalesa. Podem trobar:

• Processos�de�sistema, ja siguin processos associats al funcionament local

de la màquina, el nucli, o bé processos (denominats dimonis) associats al

control de diferents serveis. D'altra banda, poden ser locals, o de xarxa, si

estem oferint el servei (actuem de servidor) o rebent els resultats del servei

(actuem de clients). La majoria d'aquests processos de sistema apareixeran

associats a l'usuari root (encara que se solen migrar a pseudousuaris especi-

alitzats per servei), encara que no siguem presents en aquell moment com

a usuaris. Hi pot haver alguns serveis associats a altres usuaris de sistema

(lp, bin, www, mail, etc.). Aquests són pseudousuaris "virtuals", no interac-

tius, que utilitza el sistema per a executar certs processos.

• Processos�de�l'usuari�administrador: en cas d'actuar com a root, els nos-

tres processos interactius o aplicacions llançades també apareixeran com

a processos associats a l'usuari root.

• Processos�d'usuaris�del�sistema: associats a l'execució de les seves aplica-

cions, ja siguin tasques interactives en mode text o en mode gràfic.

Com a instruccions ràpides i més útils, podem utilitzar:

• ps: la instrucció estàndard, mostra els processos amb les seves dades

d'usuari, temps, identificador de procés i línia d'instruccions usada. Una

de les opcions més utilitzada és ps -ef (o -ax), però hi ha moltes opcions

disponibles (vegeu man ps).

• top: una versió que ens dóna una llista actualitzada a intervals, monito-

ritzant dinàmicament els canvis. I ens permet ordenar la llista de proces-

sos per diferents categories, com despesa de memòria, d'ús de CPU, amb

propòsit d'obtenir un rànquing dels processos que acaparen els recursos.

Molt útil per a donar indicis en situacions extremes de saturació d'ús de

recursos, de la possible font de problemes.

• kill: ens permet eliminar processos del sistema mitjançant la tramesa de

senyals al procés com, per exemple, la d'acabament kill -9 pid_del_proces (9

correspon a SIGKILL), on indiquem l'identificador del procés. Resulta útil

per a processos amb comportament inestable o programes interactius que

han deixat de respondre. Podem veure una llista dels senyals vàlids en el

sistema amb man 7 signal.

GNUFDL • PID_00167525 39 Administració local

4.5. Registres del sistema

Tant el nucli com molts dels dimonis de serveis, i també diferents aplicacions o

subsistemes de GNU/Linux, poden generar missatges que van a parar a fitxers

log, ja sigui per a tenir una traça del seu funcionament, o bé per a detectar

errors o advertències de mal funcionament o situacions crítiques. Aquest tipus

de registre és imprescindible, en molts casos, per a les tasques d'administració,

i se sol emprar bastant temps d'administració en el processament i l'anàlisi

dels seus continguts.

La major part dels registres es generen en el directori /var/log, encara

que algunes aplicacions poden modificar aquest comportament. La ma-

joria de registres del sistema sí que es troben en aquest directori.

Un dimoni particular del sistema (important) és el syslogd, que s'encarrega de

rebre els missatges que envia el nucli i altres dimonis de serveis i els envia a

un fitxer log que es troba en /var/log/messages. Aquest és el fitxer per defecte,

però syslogd és també configurable (en el fitxer /etc/syslog.conf), de manera

que es poden generar altres fitxers, depenent de la font, segons el dimoni que

envia el missatge, i així dirigir-lo a un log o a un altre (classificant així per font),

o també classificar els missatges per importància (nivell de prioritat): alarm,

warning, error, critical, etc.

Depenent de la distribució, pot estar configurat de diferents maneres per de-

fecte; en /var/log sol generar (per exemple) en Debian fitxers com kern.log,

mail.err, mail.info..., que són els registres de diferents serveis. Podem examinar

la configuració per a determinar d'on provenen els missatges i en quins fitxers

els desa. Una opció que sol ser útil és la possibilitat d'enviar els missatges a una

consola virtual de text (en /etc/syslog.conf s'especifica per als tipus de missat-

ge una consola de destinació, com /dev/tty8 o /dev/xconsole), de manera que

podrem anar veient els missatges a mesura que es produeixin. Això sol ser útil

per a monitoritzar l'execució del sistema sense haver d'estar mirant els fitxers

de registre a cada moment. Una modificació simple d'aquest mètode podria

ser introduir, des d'un terminal, la instrucció següent (per al log general):

tail -f /var/log/messages

Aquesta sentència ens permet deixar el terminal o finestra de terminal, de

manera que aniran apareixent els canvis que es produeixin al fitxer.

Altres instruccions relacionades són:

Nota

El dimoni syslogd és el ser-vei més important d'obtenciód'informació dinàmica de lamàquina. El procés d'anàlisidels logs ens ajuda a entendreel funcionament, els possibleserrors i el rendiment del siste-ma.

GNUFDL • PID_00167525 40 Administració local

• uptime: temps que fa que el sistema està actiu. Útil per a comprovar que

no hi ha existit alguna rearrencada del sistema inesperat.

• last: analitza el registre d'entrades/sortides del sistema (/var/log/wtmp)

dels usuaris, i les arrencades del sistema. O lastlog, el control de l'última

vegada que els usuaris han estat vistos en el sistema (informació en /var/

log/lastlog).

• Diverses� utilitats� per� a� processament� combinat� de� logs, que emeten

resums (o alarmes) del que ha succeït en el sistema, com per exemple

logwatch, logcheck (Debian), log_analysis (Debian)...

4.6. Memòria

Respecte a la memòria del sistema, haurem de tenir en compte que disposem

de la memòria física de la màquina mateixa i de la memòria virtual, que pot

ser direccionada pels processos. Normalment (tret que estiguem tractant amb

servidors empresarials), no disposarem de quantitats gaire grans, de manera

que la memòria física serà menor que la mida de memòria virtual necessària

(4 GB en sistemes de 32 bits). Això obligarà a utilitzar una zona d'intercanvi

(swap) sobre disc, per a implementar els processos associats a memòria virtual.

Aquesta zona d'intercanvi (swap) es pot implementar com un fitxer en el sis-

tema d'arxius, però és més habitual trobar-la com una partició d'intercanvi

(anomenada de swap), creada durant la instal·lació del sistema. En el moment

de particionar el disc, es declara com de tipus Linux swap.

Per a examinar la informació sobre memòria, tenim diversos mètodes i ins-

truccions útils:

• Fitxer�/etc/fstab: apareix la partició swap (si n'hi ha). Amb una instrucció

fdisk en podem esbrinar la mida (o consultar-la en /proc/swaps).

• Instrucció�ps: permet conèixer quins processos tenim, i amb les opcions

de percentatge i memòria usada.

• Instrucció�top: és una versió de ps dinàmica actualitzable per períodes de

temps. Pot classificar els processos segons la memòria que s'usa o el temps

de CPU.

• Instrucció�free: informa sobre l'estat global de la memòria. Dóna també

la mida de la memòria virtual.

• Instrucció�vmstat: informa sobre l'estat de la memòria virtual, i l'ús que

s'hi dóna.

GNUFDL • PID_00167525 41 Administració local

• Alguns�paquets com dstat permeten recollir dades dels diferents paràme-

tres (memòria, swap i d'altres) a intervals de temps (de manera semblant

a top).

4.7. Discos i sistemes d'arxius

Examinarem quins discos tenim disponibles, com són organitzats i de qui-

nes particions i quins sistemes d'arxius (filesystems) disposem. Quan disposem

d'una partició i d'un determinat filesystem accessible, haurem de fer un procés

de muntatge per a integrar-la en el sistema, ja sigui explícitament o bé progra-

mada en arrencada. En el procés de muntatge, es connecta el sistema d'arxius

associat a la partició a un punt de l'arbre de directoris.

Per a conèixer els discos (o dispositius d'emmagatzematge) que tenim en el

sistema, ens podem basar en la informació d'arrencada del sistema (instrucció

dmesg o /var/log/messages), en què es detecten els presents, com els /dev/hdx

per als dispositius IDE o els SCSI amb dispositius /dev/sdx. Últimament els

discos SATA i antics IDE són presentats com si fossin SCSI, a causa d'una capa

d'emulació del nucli que tracta els discos com a SCSI. Altres dispositius, com

discos durs connectats per USB, discos flaix (els de tipus pen drive), unitats

extraïbles o CD-ROM externs, solen ser dispositius amb algun tipus d'emulació

SCSI, per la qual cosa també es veuran com a dispositius d'aquest tipus.

Qualsevol dispositiu d'emmagatzematge presentarà una sèrie de partici-

ons del seu espai. Típicament, un disc IDE suporta un màxim de quatre

particions físiques, o més si són lògiques (permeten col·locar diverses

particions d'aquest tipus sobre una de física). Cada partició pot contenir

tipus de filesystems diferents, ja sigui d'un mateix operatiu o d'operatius

diferents.

Per a examinar l'estructura d'un dispositiu conegut o canviar-ne l'estructura

particionant el disc, podem utilitzar la instrucció fdisk, o qualsevol de les seves

variants més o menys interactives (cfdisk, sfdisk). Per exemple, en examinar un

disc exemple IDE /dev/hda, ens dóna la informació següent:

# fdisk -l /dev/hda

Disk /dev/hda: 20.5 GB, 20520493056 bytes 255 heads, 63 sectors/track, 2494 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/hda1 * 1 1305 10482381 7 HPFS/NTFS

/dev/hda2 * 1306 2429 9028530 83 Linux

/dev/hda3 2430 2494 522112+ 82 Linux swap

GNUFDL • PID_00167525 42 Administració local

Disc de 20 GB amb tres particions (s'identifiquen amb el número afegit al nom

del dispositiu), en què observem dues particions amb arrencada (columna Boot

amb *) de tipus NTFS i Linux, fet que representa l'existència d'un Windows NT/

2000/XP/Vista/7 juntament amb una distribució GNU/Linux, i l'última parti-

ció, que és usada de swap per a Linux. A més, tenim informació de l'estructura

del disc i de les mides de cada partició. També es pot obtenir informació de

totes les particions presents en el sistema consultat el fitxer /proc/partitions.

Dels discos i particions de què disposem, alguns es trobaran muntats en el

nostre sistema de fitxers, o estaran preparats per a muntar-los sota demanda

o bé muntar-los en el moment en què en disposem (en el cas de dispositius

extraïbles).

Aquesta informació la podem obtenir de diferents maneres (ho veurem amb

més detall en el taller final):

• Fitxer�/etc/fstab: indica dispositius que estan preparats per a muntar-se

en l'arrencada o els extraïbles que podran ser muntats. No han d'estar ne-

cessàriament tots els del sistema, sinó només aquells que vulguem tenir

en arrencada. Els altres els podem muntar sota demanda amb la instrucció

mount, o desmuntar-los amb umount.

• Instrucció�mount: ens informa dels filesystems muntats en aquell moment

(ja sigui dispositius reals o filesystems virtuals, com /proc). Podem obtenir

aquesta informació també des del fitxer /etc/mtab.

• Instrucció�df�-k: ens informa dels filesystems d'emmagatzemament, i ens

permet verificar l'espai usat i disponible. Es tracta d'una instrucció bàsica

per a controlar l'espai de disc disponible. Respecte a aquesta instrucció df

-k, una de les nostres tasques bàsiques d'administració de la màquina és

controlar-ne els recursos, i en aquest cas l'espai disponible en els filesystems

utilitzats. Aquestes mides cal monitoritzar-les amb certa freqüència per a

evitar la caiguda del sistema; mai no s'hauria de deixar un filesystem (sobre-

tot si és el /) per sota d'un 10-15%, ja que hi ha molts processos (dimonis

de serveis) que escriuen informació temporal o registres, que poden con-

sumir molt espai. Un cas particular el formen els fitxers core, generats per

errors de programari i que contenen informació de depuració dels errors

que els han provocat juntament amb la imatge del procés, els quals poden

tenir (depenent del procés) mides molt grans d'arxiu. Normalment, caldrà

tenir algunes precaucions de "neteja del sistema" si es detecten situacions

de saturació del filesystem:

• Eliminar�temporals�antics. Els directoris /tmp i /var/tmp solen acumular

molts arxius generats per diferents usuaris o aplicacions. Alguns sistemes

o distribucions ja prenen mesures de neteja, com netejar /tmp en cada

arrencada del sistema.

GNUFDL • PID_00167525 43 Administració local

• Registres: cal evitar-ne el creixement excessiu, ja que segons la configura-

ció del sistema (per exemple, de syslogd) la informació generada de missat-

ges pot ser molt gran. Caldrà netejar periòdicament en arribar a determi-

nades mides, i en tot cas, si necessitem la informació per a anàlisis poste-

riors, podem fer còpies de seguretat en mitjans extraïbles. Aquest procés

es pot automatitzar mitjançant ús de scripts cron, o bé per mitjà d'eines

especialitzades com logrotate.

• Hi ha altres punts del sistema que solen créixer molt, com poden ser:

– Fitxers core dels usuaris: els podem eliminar periòdicament o fer que

no es generin.

– El sistema de correu electrònic: emmagatzema tots els correus enviats

i rebuts; podem demanar als usuaris que facin neteja periòdica, o bé

posar sistemes de quotes.

– Les memòries cau dels navegadors o altres aplicacions: també solen

tenir mides grans, una altra neteja que caldrà fer periòdicament.

– Els comptes dels usuaris mateixos: poden tenir quotes per a no superar

les mides prefixades...

GNUFDL • PID_00167525 44 Administració local

5. Sistema de fitxers

A cada màquina amb un sistema GNU/Linux podem veure sistemes de fitxers

de diferents tipus [Hin]. Per començar, és habitual trobar-se amb els sistemes

de fitxers propis de Linux creats en diferents particions dels discos [Koe].

La configuració habitual sol ser de dues particions:

1) la corresponent a "/" (root filesystem) i

2) la corresponent al fitxer d'intercanvi o de swap.

Amb tot, en configuracions més professionals sol ser habitual separar partici-

ons amb parts "diferenciades" del sistema. Una tècnica habitual és, per exem-

ple (en veurem més opcions després), crear particions diferents per al següent:

/ /boot /home /opt /tmp /usr /var swap

que segurament es trobaran muntades des de diferents orígens (diferents dis-

cos, o fins i tot xarxa en alguns casos).

Les particions es fan per a separar clarament parts estàtiques i dinàmi-

ques del sistema, per a permetre d'una manera més fàcil, davant de pro-

blemes de saturació, estendre les particions o aïllar més fàcilment parts

per a fer còpies de seguretat (per exemple, els comptes dels usuaris en

la partició /home).

El tipus de particions swap és de tipus Linux swap, i la corresponent a / sol

ser d'algun dels sistemes de fitxers estàndard, ja sigui ext2 (el tipus per defecte

fins als nuclis 2.4), ext3 o el nou ext4, que són millores de l'ext2 compatibles

però amb journaling, la qual cosa permet tenir un registre del que va passant al

sistema de fitxers, per a recuperacions més ràpides en cas d'error. També poden

ser habituals altres sistemes d'arxius, com Reiser o XFS.

Una altra configuració habitual pot ser de tres particions: /, swap, /home, en

què /home es dedicarà als comptes dels usuaris. Això permet separar els comp-

tes dels usuaris del sistema, aïllant en dues particions separades, i podem do-

nar l'espai necessari per als comptes en una altra partició.

Un altre esquema molt utilitzat és el de separar en particions les parts estàti-

ques del sistema de les dinàmiques; per exemple, una partició per a / amb la

part estàtica (/bin /sbin i /usr en alguns casos) que s'espera que no creixerà o

GNUFDL • PID_00167525 45 Administració local

ho farà molt poc, i una altra o diverses amb la part dinàmica (/var /tmp /opt),

suposant que /opt, per exemple, és el punt d'instal·lació del programari nou.

Això permet ajustar millor l'espai de disc i deixar més espai per a les parts del

sistema que en necessitin.

Respecte als sistemes de fitxers suportats, n'hem de destacar la gran varietat;

actualment, podem trobar (entre d'altres):

• Sistemes�associats�a�GNU/Linux, com l'estàndard ext2, ext3, evolució de

l'anterior amb concepte de journaling (suport de registre d'operacions fetes

en el sistema de fitxers que en pot permetre la recuperació en cas d'algun

desastre que ho faci inconsistent). O el nou ext4.

• Compatibilitat�amb�entorns�no�GNU/Linux: msdos, vfat, ntfs, accés als

diferents sistemes de fat16, fat32 i ntfs. En particular, es pot destacar que el

suport del nucli és limitat a lectura. Però com ja hem dit, hi ha solucions

en l'espai d'usuari (mitjançant FUSE, un component que permet escriure

sistemes de fitxers en espai d'usuari), que permeten l'escriptura, com l'ntfs-

3g ja esmentat. També es disposa de compatibilitat en altres entorns com

Mac amb hfs i hfsplus.

• Sistemes� associats� a� suports� físics, com el cas de CD/DVD, amb els

iso9660 i udf.

• Sistemes�usats�en�diferents�UNIX, que ofereixen generalment un rendi-

ment millor (de vegades, a costa de més consum de recursos, en CPU per

exemple), com JFS2 (IBM), XFS (SGI), o ReiserFS.

• Sistemes�de�fitxers�en�xarxa (més tradicionals): NFS, Samba (smbfs, cifs),

permeten accedir a sistemes de fitxers disponibles en altres màquines de

manera transparent per xarxa.

• Sistemes�distribuïts�en�xarxa: com GFS o Coda.

• Pseudosistemes�de�fitxers, com procfs (/proc) o sysfs (/sys).

En la majoria (excepte algun cas especial) d'aquests sistemes de fitxers, GNU/

Linux ens permetrà crear particions d'aquests tipus, construir el sistema de fit-

xers del tipus requerit i muntar-les com a part integrant de l'arbre de directoris,

ja sigui de manera temporal o permanent.

GNUFDL • PID_00167525 46 Administració local

5.1. Punts de muntatge

A part del filesystem principal / i de les seves possibles divisions en particions

extres (/usr, /var, /tmp, /home), es pot tenir en compte la possibilitat de deixar

punts de muntatge preparats per al muntatge d'altres sistemes de fitxers, ja

siguin particions de disc o altres dispositius d'emmagatzematge.

A les màquines en les quals GNU/Linux comparteix la partició amb altres sis-

temes operatius, mitjançant algun sistema d'arrencada (LILO o GRUB), hi pot

haver diverses particions assignades als diferents operatius. Moltes vegades

és interessant compartir dades amb aquests sistemes, ja sigui per a llegir els

seus fitxers o modificar-los. A diferència d'altres sistemes (que només tenen en

compte les seves pròpies dades i els seus sistemes de fitxers, i en els quals en

algunes versions no se suporten alguns dels seus sistemes de fitxers propis),

GNU/Linux és capaç de tractar, com hem vist, amb una quantitat enorme de

sistemes de fitxers de diferents operatius i poder compartir la informació.

Exemple

Si en els PC personals hem instal·lat GNU/Linux, segurament trobarem més d'un opera-tiu; per exemple, una altra versió de GNU/Linux amb ext2 o ext3 de sistema de fitxers;podríem trobar un antic MSDOS amb el seu sistema de fitxers FAT, un Windows98/ME/XP Home amb FAT32 (o vfat per a Linux) o un Windows NT/2000/XP/Vista/7 amb siste-mes NTFS (ntfs per a Linux) i FAT32 (vfat) alhora.

El nostre sistema GNU/Linux pot llegir dades (és a dir, fitxers i directoris) de

tots aquests sistemes de fitxers i escriure en la majoria.

En el cas d'NTFS, fins a certs moments hi va haver problemes en l'escriptura,

que estava en forma experimental en la majoria de controladors del nucli apa-

reguts, a causa, principalment, de les diferents versions que van apareixent del

sistema de fitxers, ja que hi ha dues versions principals anomenades NTFS i

NTFS2, i algunes extensions com els anomenats volums dinàmics, o els sistemes

de fitxers xifrats. Accedir amb segons quina opció de controladors presentava

certes incompatibilitats, que podrien causar corrupcions de dades o errors en

el sistema de fitxers.

A causa de FUSE, un mòdul integrat en el nucli (a partir del 2.6.11), s'ha permès

un desenvolupament més flexible de sistemes de fitxers, directament en l'espai

d'usuari (de fet, FUSE actua com un "pont" entre les peticions del nucli i l'accés

que es fa des del controlador).

Gràcies a les possibilitats de FUSE, es té un suport més o menys complet d'NTFS

(mentre Microsoft no faci més canvis en l'especificació), en especial des de

l'aparició del controlador (basat en FUSE) ntfs-3g i la combinació amb les uti-

litats ntfsprogs.

GNUFDL • PID_00167525 47 Administració local

Perquè es puguin llegir o escriure les dades, la partició ha d'estar dispo-

nible dins del nostre sistema de fitxers arrel (/). Per tant, cal dur a terme

un procés de "muntatge" del sistema de fitxers en algun punt del nostre

arbre de directoris. Se seguirà el mateix procés si es tracta d'un dispositiu

d'emmagatzematge, ja sigui disquet o floppy.

Depenent de la distribució, s'usen uns sistemes o d'altres, o també els podem

crear nosaltres. Normalment, solen existir o bé com a subdirectoris de l'arrel,

per exemple /cdrom, /win, /floppy, o bé com a subdirectoris dins de /mnt, el

punt estàndard de muntatge (apareixen com a /mnt/cdrom, /mnt/floppy...), o

el directori /media, que és el preferit últimament per les distribucions. Segons

l'estàndard FHS /mnt s'hauria d'usar per a muntatges temporals de sistemes

d'arxiu, mentre que /media s'utilitzaria per a muntar dispositius extraïbles.

El procés de muntatge es fa mitjançant l'ordre mount amb el format següent:

mount -t filesystem-type device mount-point

El tipus de filesystem pot ser: msdos (FAT), vfat (FAT32), ntfs (NTFS de lectura),

iso9660 (per a CDROM), ext2, ext3, xfs... (dels disponibles).

El dispositiu és l'entrada corresponent en el directori /dev a la localització del

dispositiu; els IDE tenien /dev/hdxy, en què x és a, b, c o d (1 mestre, 1 esclau,

2 mestre, 2 esclau) i y, el número de partició; en els SCSI (/dev/sdx), x és a, b,

c, d... (segons l'ID SCSI associat 0, 1, 2, 3, 4...).

En veurem alguns casos:

mount -t iso9660 /dev/hdc /mnt/cdrom

muntaria el CD-ROM (si és l'IDE que és en el segon IDE en forma de mestre)

en el punt /mnt/cdrom.

mount -t iso9660 /dev/cdrom /mnt/cdrom

muntaria el CD-ROM; /dev/cdrom s'usa com a sinònim (és un enllaç) del dis-

positiu on està connectat.

mount -t vfat /dev/fd0H1440 /mnt/floppy

muntaria el disquet, /dev/fd0H1440. Seria la disquetera A en alta densitat (1,44

MB). També es pot usar /dev/fd0.

mount -t ntfs /dev/hda2 /mnt/winXP

GNUFDL • PID_00167525 48 Administració local

muntaria la segona partició del primer dispositiu IDE (la C:), de tipus NTFS

(per exemple, un Windows XP).

Si aquestes particions són més o menys estables en el sistema (és a dir, no can-

vien freqüentment) i les volem utilitzar, el millor serà incloure els muntatges

perquè es facin en temps d'execució, en iniciar el sistema, mitjançant la con-

figuració del fitxer /etc/fstab:

# /etc/fstab: Informació estàtica del sistema de fitxers

#

#<Sis. fitxers> <Punt muntatge> <Tipus><Opcions> <Bolcat> <Passada>

/dev/hda2 / ext3 errors = remountro 0 1

/dev/hdb3 none swap sw 0 0

proc /proc proc defaults 0 0

/dev/fd0 /floppy auto user,noauto 0 0

/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0

/dev/sdb1 /mnt/usb vfat user,noauto 0 0

Per exemple, aquesta configuració inclou alguns dels sistemes estàndard, com

l'arrel en /dev/hda2, la partició de swap que està en hdb3, el sistema proc (que

utilitza el nucli per a desar la seva informació). I el disquet, el CD-ROM, i

en aquest cas un disc USB de tipus flaix (que es detecta com un dispositiu

SCSI). En alguns casos, s'especifica auto com a tipus de filesystem. Això permet

que s'autodetecti el sistema de fitxers. Si es coneix, és millor indicar-ho en

la configuració i, d'altra banda, el noauto en les opcions permet que no sigui

muntat de manera automàtica sempre, sinó sota petició (o accés al directori).

Si tenim aquesta informació en el fitxer, el procés de muntatge se simplifica

molt, ja que es farà o bé en execució, en arrencada, o bé sota demanda (per

als noauto). I es pot fer ara simplement demanant que es munti el punt de

muntatge o el dispositiu:

mount /mnt/cdrom

mount /dev/fd0

ja que el sistema ja té la resta de la informació. El procés contrari, el desmun-

tatge, és bastant senzill, amb la instrucció umount amb el punt o dispositiu:

umount /mnt/cdrom

umount /dev/fd0

En el cas de mitjans extraïbles, de tipus CD-ROM (o d'altres), es pot usar eject

per a l'extracció del suport físic:

eject /dev/cdrom

GNUFDL • PID_00167525 49 Administració local

o, en aquest cas, només:

eject

Les instruccions mount i umount munten o desmunten tots els sistemes dispo-

nibles. En el fitxer /etc/mtab es manté una llista dels sistemes muntats. En

un moment concret es pot consultar o executar mount sense paràmetres per

a obtenir aquesta informació.

5.2. Permisos

Un altre assumpte que caldrà controlar, en el cas dels fitxers i directoris, és el

dels permisos que volem establir en cada un; cal recordar que cada fitxer pot

disposar de la sèrie de permisos rwxrwxrwx, que són: rwx del propietari, rwx del

grup a què l'usuari pertany i rwx per a altres usuaris. En cada un es pot establir

el permís de lectura (r), escriptura (w) o execució (x). En el cas d'un directori,

x denota el permís per a poder entrar en aquest directori (amb la instrucció

cd, per exemple).

Per a modificar els drets sobre un directori o fitxer, tenim les instruccions:

• chown: canvia el propietari dels fitxers.

• chgrp: canvia el grup propietari dels fitxers.

• chmod: canvia els permisos específics (rwx) dels arxius.

Aquestes instruccions també permeten l'opció -R, que és recursiva si es tracta

d'un directori.

GNUFDL • PID_00167525 50 Administració local

6. Usuaris i grups

Els usuaris d'un sistema GNU/Linux disposen d'un compte associat (definit

amb algunes de les seves dades i preferències), juntament amb l'espai en disc

perquè puguin desenvolupar els seus arxius i directoris. Aquest espai està as-

signat a l'usuari, i només el pot usar ell (tret que els permisos especifiquin co-

ses diferents).

Dins dels comptes associats a usuaris, en podem trobar diferents tipus:

• El�de�l'administrador, amb identificador root, que només és (o hauria de

ser) utilitzat per a les operacions d'administració. L'usuari root és el que

disposa de més permisos i accés complet a la màquina i als arxius de con-

figuració. Per tant, també és el que més mal pot causar per errors o omissi-

ons. És millor evitar usar el compte de root com si fos un usuari més, per la

qual cosa es recomana deixar-lo només per a operacions d'administració.

• Comptes�d'usuaris: els comptes normals per a qualsevol usuari de la mà-

quina tenen els permisos restringits a l'ús de fitxers del seu compte, i a

algunes altres zones particulars (per exemple, els temporals en /tmp), i

també a utilitzar alguns dispositius per als quals s'hagin habilitat permisos.

• Comptes�especials�dels�serveis: lp, news, wheel, www-data... comptes que

no són usats per persones, sinó per serveis interns del sistema, que els

usa sota aquests noms d'usuari. Alguns dels serveis també són usats sota

l'usuari de root (encara que per raons de seguretat s'hauria d'evitar).

Un usuari normalment es crea mitjançant l'especificació d'un nom (o identi-

ficador d'usuari), una paraula de pas (contrasenya) i un directori personal asso-

ciat (el compte).

La informació dels usuaris del sistema està inclosa en els arxius següents:

/etc/passwd

/etc/shadow

/etc/group

/etc/gshadow

Unes línies de /etc/passwd podrien ser:

joan:x:1000:1000:Joan Garcia,,,:/home/joan:/bin/bash

root:x:0:0:root:/root:/bin/bash

GNUFDL • PID_00167525 51 Administració local

en què s'indica (si apareixen :: seguits és que el camp és buit):

• joan: identificador d'usuari en el sistema.

• x: paraula de pas de l'usuari codificada, si hi ha una x és que es troba en

el fitxer /etc/shadow.

• 1000: codi de l'usuari; l'usa el sistema com a codi d'identitat de l'usuari.

• 1000: codi del grup principal a què pertany; la informació del grup es troba

en /etc/group.

• Joan García: comentari; se sol col·locar el nom complet de l'usuari, o algun

comentari per a identificar l'objectiu del compte.

• /home/juan: directori personal associat al seu compte.

• /bin/bash: intèrpret d'ordres interactiu que utilitzarà l'usuari en interactuar

amb el sistema, en mode text, o amb el terminal gràfic. En aquest cas,

l'intèrpret Bash de GNU, que és l'utilitzat per defecte. El fitxer /etc/passwd

solia contenir les paraules de pas dels usuaris en forma xifrada, però el

problema era que qualsevol usuari podia veure el fitxer, i en el seu moment

es van dissenyar cracks que intentaven trobar en forma bruta la paraula de

pas, mitjançant la paraula de pas xifrada com a punt de partida (paraula

codificada amb el sistema crypt).

Per a evitar això, avui dia ja no es col·loquen les paraules de pas en aquest

arxiu, sinó només una x que indica que es troben en un altre fitxer, que és

només de lectura per a l'usuari root, /etc/shadow, el contingut del qual podria

ser semblant al següent:

juan:a1gNcs82ICst8CjVJS7ZFCVnu0N2pBcn/:12208:0:99999:7:::

en què es troba l'identificador de l'usuari juntament amb la paraula de pas

xifrada. A més, apareixen (com a camps separats per ":" amb informació sobre

la contrasenya):

• Dies des de l'1 de gener de 1970 en què la paraula de pas es va canviar per

última vegada.

• Dies que falten perquè es canviï (0 vol dir que no s'ha de canviar).

• Dies després dels quals cal canviar-la (és a dir, termini de canvi).

• Dies en què l'usuari serà avisat abans que li expiri.

• Dies, una vegada expirat, que es produirà la deshabilitació del compte.

• Dies des de l'1 de gener de 1970 en què el compte està deshabilitat.

• I un camp reservat.

GNUFDL • PID_00167525 52 Administració local

A més, les claus de xifratge poden ser més difícils, ja que ara es pot utilitzar

un sistema denominat md5 (sol aparèixer com a opció a l'hora d'instal·lar el

sistema) per a protegir les paraules de pas dels usuaris. Veurem més detalls

sobre això en la unitat dedicada a la seguretat.

En /etc/group hi ha la informació dels grups d'usuaris:

jose:x:1000:

en què tenim:

nom-grup:contrasenya-grup:identificador-del-grup:llista-usuaris

La llista d'usuaris del grup pot ser present o no, ja que la informació ja està en

/etc/passwd, i no se sol posar en /etc/group. Si s'hi posa, sol aparèixer com una

llista d'usuaris separada per comes. Els grups també poden tenir una contrase-

nya associada (encara que no sol ser tan normal), com en el cas dels d'usuari,

i llavors també hi ha un fitxer de tipus shadow: /etc/gshadow.

Altres fitxers interessants són els del directori /etc/skel, en què es troben els

fitxers que s'inclouen en cada compte d'usuari en crear-lo. Recordeu que, com

hem vist amb els intèrprets d'ordres interactius, podem tenir uns scripts de

configuració que s'executen en entrar o sortir del compte. En el directori skel

es desen els "esquelets" que es copien al directori de cada usuari en crear-lo. Sol

ser responsabilitat de l'administrador crear uns fitxers adequats per als usuaris,

posant les rutes necessàries d'execució, la inicialització de variables de sistema,

les variables que es necessitin per al programari, etc.

A continuació, veurem una sèrie d'instruccions útils per a aquesta administra-

ció d'usuaris (n'esmentem la funcionalitat i en el taller farem algunes proves):

• useradd: afegeix un usuari al sistema.

• userdel: esborra un usuari del sistema.

• usermod: modifica un usuari del sistema.

• groupadd,�groupdel,�groupmod: el mateix per a grups.

• newusers,�chpasswd: poden ser d'utilitat en grans instal·lacions amb molts

usuaris, ja que permeten crear diversos comptes des de la informació

introduïda en un fitxer (newusers) o bé canviar les contrasenyes a un gran

nombre d'usuaris (chpasswd).

• chsh: canvia l'intèrpret d'ordres per defecte de l'usuari.

• chfn: canvia la informació de l'usuari, present en el comentari del fitxer

/etc/passwd.

• passwd: canvia la contrasenya d'un usuari. Es pot executar com a usuari, i

llavors demana la contrasenya antiga i la nova. En el cas de fer-ho, root ha

d'especificar l'usuari a qui canviarà la contrasenya (si no, estaria canviant

la seva) i no necessita la contrasenya antiga. És potser la instrucció més

usada per root, quan als usuaris se'ls oblida la contrasenya antiga.

GNUFDL • PID_00167525 53 Administració local

• su: una espècie de canvi d'identitat. L'utilitzen tant usuaris com root per a

canviar l'usuari actual. En el cas de l'administrador, és bastant utilitzat per

a provar que el compte de l'usuari funcioni correctament. Hi ha diferents

variants: su (sense paràmetres, serveix per a passar a usuari root, prèvia

identificació, i permet, quan estem en un compte d'usuari, passar a root

per a fer alguna tasca). La instrucció su iduser canvia l'usuari a iduser, però

deixant l'entorn com està, és a dir, en el mateix directori. L'ordre su - iduser

fa una substitució total, com si el segon usuari hagués entrat en el sistema

fent una connexió.

Respecte a l'administració d'usuaris i grups, el que hem comentat aquí fa re-

ferència a l'administració local d'una sola màquina. En sistemes amb múlti-

ples màquines que comparteixen els usuaris se sol utilitzar un altre sistema

de gestió de la informació dels usuaris. Aquests sistemes, denominats genèri-

cament sistemes d'informació de xarxa, com NIS, NIS+ o LDAP, utilitzen bases

de dades per a emmagatzemar la informació dels usuaris i grups, de manera

que s'utilitzen màquines servidores, en què s'emmagatzema la base de dades,

i altres màquines clients, en què es consulta aquesta informació. Això permet

tenir una sola còpia de les dades dels usuaris (o diverses de sincronitzades), i

que aquests puguin entrar a qualsevol màquina disponible del conjunt admi-

nistrat amb aquests sistemes. A més, aquests sistemes incorporen conceptes

addicionals de jerarquies o dominis/zones de màquines i recursos, que perme-

ten representar adequadament els recursos i el seu ús en organitzacions amb

diferents estructures d'organització interna del seu personal i les seves seccions

internes.

Podem comprovar si estem en un entorn de tipus NIS si en les línies passwd

i group de l'arxiu de configuració /etc/nsswitch.conf apareix files en primer

terme, si estem treballant amb els fitxers locals, o bé nis o nisplus, segons el

sistema amb què estiguem treballant. En general, per a l'usuari simple no re-

presenta cap modificació, ja que la gestió de les màquines li és transparent,

i més si es combina amb fitxers compartits per NFS, que permet disposar del

seu compte sense que importi amb quina màquina treballa. La major part de

les instruccions anteriors es poden continuar usant sense problema sota NIS

o NIS+; són equivalents a excepció del canvi de contrasenya, que en lloc de

passwd es fa amb yppasswd (NIS) o nispasswd (NIS+), encara que sol ser habitual

que l'administrador els rebategi (amb un enllaç) a passwd, amb la qual cosa els

usuaris no notaran la diferència.

Veurem aquest i altres modes de configuració en les unitats d'administració

de xarxa.

GNUFDL • PID_00167525 54 Administració local

7. Servidors d'impressió

El sistema d'impressió de GNU/Linux [Gt] [Smi02] està heretat de la variant

BSD de UNIX. Aquest sistema es denominava LPD (Line Printer Daemon). És

un sistema d'impressió molt potent, ja que integra capacitats per a gestionar

tant impressores locals com de xarxa i ofereix tant el client com el servidor

d'impressió. De manera semblant també UNIX ha disposat generalment del

System V Line Printer (o LPR), que era el sistema comú en les altres variants

de UNIX. GNU/Linux ha integrat originalment tots dos sistemes, bé usant

principalment LPD i emulant LPR, o depenent de la distribució integrant-ne

per defecte un o un altre.

LPD és un sistema bastant antic, ja que es remunta als orígens de la branca

BSD de UNIX (mitjan anys vuitanta). Per tant, a LPD li sol faltar suport per

als dispositius moderns, ja que en origen el sistema no va estar pensat per als

tipus d'impressores actuals. Tampoc no va ser concebut com un sistema basat

en controladors de dispositiu, ja que es produïen només impressores en sèrie

o paral·lel d'escriptura de caràcters de text.

Per a la situació actual, el sistema LPD es combina amb un altre programari

comú, com el sistema Ghostscript, que ofereix sortida de tipus PostScript per

a un rang molt ampli d'impressores per a les quals té controladors. A més, se

sol combinar amb algun programari de filtratge, que segons el tipus de docu-

ment per imprimir, selecciona filtres adequats per a adaptar la impressió de

documents o formats binaris al sistema d'impressió de destinació. Així, nor-

malment el procés que se segueix és (bàsicament):

1) El treball és iniciat per una instrucció del sistema LPD.

2) El sistema de filtre identifica quin tipus de treball (o fitxer) és utilitzat i

converteix el treball a un fitxer PostScript de sortida, que és el que s'envia a

la impressora. En GNU/Linux i UNIX, la majoria d'aplicacions suposen que

la sortida serà cap a una impressora PostScript, i moltes generen sortida PostS-

cript directament, i per aquesta raó es necessita el pas següent.

3)�Ghostscript s'encarrega d'interpretar el fitxer PostScript rebut, i segons el

controlador de la impressora al qual ha estat enviat el treball, fa la conversió al

format propi de la impressora. Si és de tipus PostScript, la impressió és directa;

si no, caldrà fer-ne la traducció. El treball s'envia a la cua d'impressió.

Com hem dit, a més del sistema d'impressió LPD (amb origen en els BSD

UNIX), també hi ha el denominat sistema System V (d'origen en l'altra branca

UNIX System V) o LPR. Per compatibilitat, actualment la major part de UNIX

els integra tots dos, de manera que o bé un o un altre és el principal, i l'altre se

Potència i flexibilitat

Els sistemes UNIX dispo-sen, potser, dels sistemesd'impressió més potents icomplexos, que aporten unagran flexibilitat als entornsd'impressió.

GNUFDL • PID_00167525 55 Administració local

simula sobre el principal. En el cas de GNU/Linux, passa una cosa semblant;

segons la instal·lació que fem podem tenir només les instruccions LPD de sis-

tema d'impressió, però també serà habitual disposar de les instruccions System

V. Una manera senzilla d'identificar els dos sistemes (BSD o System V) és amb

la instrucció principal d'impressió (la que envia els treballs al sistema), que en

BSD és lpr, i en System V és lp.

Aquest era el panorama inicial dels sistemes d'impressió de GNU/Linux, però

en els últims anys han sorgit més sistemes, que permeten més flexibilitat i dis-

posició de controladors per a les impressores. Els dos principals sistemes són

CUPS i, en grau menor, LPRng (de fet, ja obsolet, que es va utilitzar en algunes

versions de Fedora, i ja no el comentarem en aquesta revisió del material; es

pot trobar en edicions anteriors). Últimament és CUPS l'estàndard de facto per

a GNU/Linux, encara que els altres sistemes han de ser suportats per compa-

tibilitat amb sistemes UNIX existents.

Els dos (tant CUPS com LPRng) són una espècie de sistema de nivell més alt,

però que no es diferencien gaire amb vista a l'usuari respecte als BSD i System

V estàndard. Per exemple, s'utilitzen les mateixes instruccions clients (o com-

patibles en opcions) per a imprimir. Per a l'administrador sí que representen

diferències, ja que els sistemes de configuració són diferents. En certa mane-

ra, podem considerar LPRng i CUPS com a noves arquitectures de sistemes

d'impressió, que són compatibles per a l'usuari amb les instruccions antigues.

En les distribucions GNU/Linux actuals podem trobar els diferents sistemes

d'impressió. Si la distribució és antiga, pot ser que porti incorporat tan sols

el sistema BSD LPD. En les actuals, tant Debian com Fedora/Red Hat utilitzen

CUPS. En algunes versions de Red Hat hi havia una eina, Print switch, que

permitia canviar el sistema, commutar de sistema d'impressió, encara que úl-

timament només està disponible CUPS. En Debian es poden instal·lar tots dos

sistemes, però són exclusius, i només un pot gestionar la impressió.

En el cas de Fedora, el sistema d'impressió per defecte és CUPS (LPRng va des-

aparèixer en Fedora Core 4), i l'eina Print switch ja no existeix perquè no és

necessària. S'utilitza system-config-printer per a la configuració de dispositius.

Debian, per defecte, utilitzava BSD LPD, però ja és comú instal·lar CUPS (i és

l'opció per defecte en noves versions), i també pot utilitzar LPRng. A més, es

pot recordar que també teníem la possibilitat (vista en la unitat de migració)

d'interaccionar amb sistemes Windows mitjançant protocols Samba, que per-

metien compartir les impressores i accedir-hi.

Respecte a cada un dels sistemes [Gt]:

• BSD�LPD: és un dels estàndards de UNIX, i algunes aplicacions assumei-

xen que tindran les instruccions i el sistema d'impressió disponibles, per la

qual cosa, tant LPRng com CUPS emulen el funcionament i les instrucci-

ons de BDS LPD. El sistema LPD és utilitzable, però no gaire configurable,

GNUFDL • PID_00167525 56 Administració local

sobretot en el control d'accés; per això les distribucions s'han mogut als

altres sistemes més moderns.

• LPRng: es va dissenyar per a ser un reemplaçament del BSD; per tant, la

major part de la configuració és semblant i només difereix en alguns fitxers

de configuració.

• CUPS: es tracta d'una desviació més important del BSD original, i la con-

figuració és pròpia. Es proporciona informació a les aplicacions sobre les

impressores disponibles (també en LPRng). En CUPS, tant el client com el

servidor han de disposar de programari CUPS.

Els dos sistemes tenen emulació de les instruccions d'impressió de System V.

Per a la impressió en GNU/Linux, cal tenir en compte diversos aspectes:

• Sistema�d'impressió�que�s'utilitza: BSD, CUPS, o LPRng (avui pràctica-

ment obsolet).

• Dispositiu�d'impressió (impressora): pot disposar de connexió local a una

màquina o estar col·locada en xarxa. Les impressores actuals poden ser

col·locades per connexions locals a una màquina mitjançant interfícies

en sèrie, paral·lel, USB, etc., o disponibles simplement en xarxa, com una

màquina més, o amb protocols especials de propietat. Les connectades a

xarxa poden actuar elles mateixes de servidor d'impressió (per exemple,

moltes de làser són servidors BSD LPD), o bé es poden penjar d'una mà-

quina que actuï de servidor d'impressió.

• Protocols� de� comunicació utilitzats amb la impressora o el sistema

d'impressió: ja sigui TCP/IP directe (per exemple, una HP amb LPD), o

bé altres de més alt nivell sobre TCP/IP, com IPP (CUPS), JetDirect (algu-

nes impressores HP), etc. Aquest paràmetre és important, ja que l'hem de

conèixer per a instal·lar la impressora en un sistema.

• Sistema�de�filtres�usat: cada sistema d'impressió en suporta un o diversos.

• I�els�controladors�de�les�impressores: en GNU/Linux n'hi ha bastants ti-

pus diferents; podem esmentar, per exemple, controladors de CUPS, pro-

pis o dels fabricants (per exemple, HP i Epson en proporcionen); Gimp,

el programa de retoc d'imatges, també té controladors optimitzats per a la

impressió d'imatges; Foomatic, un sistema de gestió de controladors que

funciona amb la majoria de sistemes (CUPS, LPD, LPRng i d'altres); els

controladors de Ghostscript, etc. Gairebé totes les impressores tenen un o

més controladors d'aquests conjunts.

Nota

Podeu trobar informació deles impressores més adequa-des i dels controladors a:http://www.openprinting.org/printer_list.cgi

GNUFDL • PID_00167525 57 Administració local

Respecte a la part client del sistema, les instruccions bàsiques són iguals per als

diferents sistemes. Aquestes són les instruccions del sistema BSD (cada sistema

suporta emulació d'aquestes instruccions):

• lpr: envia un treball a la cua de la impressora per defecte (o a la que se se-

lecciona); el dimoni d'impressió (lpd) s'encarrega d'enviar-lo a la cua cor-

responent i assigna un número de treball, que serà usat amb les altres ins-

truccions. La impressora, per defecte, estaria indicada per una variable de

sistema PRINTER, o s'utilitzarà la primera que estigui definida. En alguns

sistemes s'utilitza la cua lp (com a nom per defecte).

lpr -Pepson dades.txt

Aquesta instrucció enviaria el fitxer dades.txt a la cua d'impressió associada a una impres-sora que hem definit com a "epson".

• lpq: ens permet examinar els treballs existents en la cua.

# lpq -P epsonRank Owner Job Files Total Size1st juan 15 dades.txt 74578 bytes2nd marta 16 fpppp.F 12394 bytes

Aquesta instrucció ens mostra els treballs en cua, amb l'ordre i les mides. Els

fitxers poden aparèixer amb noms diferents, ja que depèn de si els hem enviat

amb lpr o amb una altra aplicació que pot canviar els treballs de nom en en-

viar-los, o si han hagut de passar per algun filtre en convertir-los.

• lprm: elimina treballs de la cua. Podem especificar un número de treball,

o un usuari per a cancel·lar els treballs.

lprm -Pepson 15

Elimina el treball amb ID 15 de la cua.

Respecte a la part administrativa (en BSD), la instrucció principal seria lpc.

Aquesta instrucció permet activar i desactivar cues, moure treballs en l'ordre

de les cues i activar o desactivar les impressores (es poden rebre treballs a les

cues, però no s'envien a les impressores).

Es pot esmentar, així mateix que, per al cas de System V, les instruccions

d'impressió solen també estar disponibles, simulades sobre les de BSD. En el

cas client, les instruccions són lp, lpstat, cancel i, per a temes d'administració,

lpadmin, accept, reject, lpmove, enable, disable, lpshut.

En els apartats següents veurem com cal configurar un servidor d'impressió

per a dos dels sistemes principals. Aquests servidors serveixen tant per a la

impressió local com per a atendre les impressions de clients de xarxa (si estan

habilitats).

GNUFDL • PID_00167525 58 Administració local

7.1. BSD LPD

En el cas del servidor BSD LPD, hi ha dos fitxers principals per examinar: per

una part, la definició de les impressores en /etc/printcap i, per l'altra, els per-

misos d'accés per xarxa en /etc/hosts.lpd.

Respecte als permisos, per defecte BSD LPD només deixa accés local a la im-

pressora, i per tant, cal habilitar-lo expressament en /etc/hosts.lpd.

Exemple

El fitxer podria ser:

#arxiu [email protected]

que indicaria que està permesa la impressió en una sèrie de màquines, mostrades bé pelseu nom DNS o per l'adreça IP. Es poden afegir grups de màquines que pertanyin a unservidor NIS (com en l'exemple groupnis) o bé permetre accés a determinades màquinesindicant-ho amb un guionet "-".

Quant a la configuració del servidor en /etc/printcap, es defineixen entrades,

en què cada una representa una cua del sistema d'impressió a la qual poden

anar a parar els treballs. La cua pot estar tant associada a un dispositiu local

com a un servidor remot, ja sigui una impressora o un altre servidor.

En cada entrada, hi pot haver les opcions:

• lp=: ens indica a quin dispositiu està connectada la impressora; per exem-

ple lp = /dev/lp0 indicaria el primer port paral·lel. Si la impressora és de ti-

pus LPD, per exemple una impressora de xarxa que accepta el protocol LPD

(com una HP), llavors podem deixar el camp buit i emplenar els següents.

• rm=: adreça amb nom o IP de la màquina remota que disposa de la cua

d'impressió. Si es tracta d'una impressora de xarxa, serà l'adreça d'aquesta.

• rp=: nom de la cua remota, a la màquina indicada abans amb rm.

# Entrada d'una impressora locallp|epson|Epson C62:\ :lp=/dev/lp1:sd=/var/spool/lpd/epson:\ :sh:pw#80:pl#72:px#1440:mx#0:\ :if = /etc/magicfilter/StylusColor@720dpi-filter:\filtro :af = /var/log/lp-acct:lf = /var/log/lp-errs:# Entrada d'impressora remotahpremota|hpr||hp remota del departament:\ :lp = :\ :rm = servidor:rp = cuahp:\ :lf = /var/adm/lpd_rem_errs:\arxiu de log. :sd = /var/spool/lpd/hpremota:gestió de cues local associada

GNUFDL • PID_00167525 59 Administració local

7.2. CUPS

CUPS és una nova arquitectura per al sistema d'impressió bastant diferent; té

una capa de compatibilitat amb BSD LPD, que li permet interaccionar amb

servidors d'aquest tipus. Suporta també un nou protocol d'impressió anome-

nat IPP (basat en HTTP), però només disponible quan client i servidor són

de tipus CUPS. A més, utilitza un tipus de controladors denominats PPD que

identifiquen les capacitats de la impressora. CUPS ja porta alguns d'aquests

controladors, i alguns fabricants també n'ofereixen (com HP i Epson).

CUPS té un sistema d'administració completament diferent, basat en di-

ferents fitxers: /etc/cups/cupsd.conf centralitza la configuració del sistema

d'impressió, /etc/cups/printers.conf controla la definició d'impressores i /etc/

cups/classes.conf els grups d'impressores.

En /etc/cups/cupsd.conf configurem el sistema segons una sèrie de seccions

de l'arxiu i les directives de les diferents accions. L'arxiu és bastant gran; des-

tacarem algunes directives importants:

• Allow: ens permet especificar quines màquines podran accedir al servidor,

ja sigui grups o màquines individuals, o segments IP de xarxa.

• AuthClass: permet indicar si es demanarà que s'autentifiquin els usuaris

clients o no.

• BrowseXXX: hi ha una sèrie de directives relacionades amb la possibilitat

d'examinar la xarxa per a trobar impressores servides. Aquesta possibilitat

està activada per defecte (browsing en on); per tant, trobarem disponibles

totes les impressores disponibles a la xarxa. La podem desactivar, per a ob-

servar només les impressores que hàgim definit. Una altra opció important

és BrowseAllow, que diu a qui li donem la possibilitat de preguntar per les

nostres impressores. Per defecte està habilitada, per la qual cosa qualsevol

pot veure la nostra impressora des de la xarxa.

Es pot assenyalar que CUPS, en principi, està pensat perquè tant els clients

com el servidor funcionin sota el mateix sistema; si els clients utilitzen LPD,

cal instal·lar un dimoni de compatibilitat anomenat cups-lpd (en paquets com

cupsys-bsd). En aquest cas, CUPS accepta treballs que provinguin d'un sistema

LPD, però no controla els accessos (cupsd.conf només serveix per al sistema

CUPS mateix), per la qual cosa caldrà implementar alguna estratègia de control

d'accés, de tipus tallafocs.

Per a l'administració des de línia d'instruccions, CUPS és una mica pecu-

liar, ja que accepta tant instruccions LPD com System V en els clients, i

l'administració se sol fer amb la instrucció lpadmin de System V. Quant a eines

GNUFDL • PID_00167525 60 Administració local

gràfiques, disposem de gnome-cups-manager, gtklp, utilitats com system-config-

printers o la interfície per web que porta el sistema CUPS mateix, accessible en

http://localhost:631.

Figura 2. Interfície per a l'administració del sistema CUPS.

Respecte als paquets de programari relacionats amb CUPS, en una Debian tro-

bem (entre d'altres):

cupsys - Common UNIX Printing System(tm) - server

cupsys-bsd - Common UNIX Printing System(tm) - BSD commands

cupsys-client - Common UNIX Printing System(tm) - client programs (SysV)

cupsys-driver-gimpprint - Gimp-Print printer drivers for CUPS

cupsys-pt - Tool for viewing/managing print jobs under CUPS

foomatic-db - linuxprinting.org printer support - database

foomatic-db-engine - linuxprinting.org printer support - programs

foomatic-db-gimp-print - linuxprinting - db Gimp-Print printer drivers

foomatic-db-hpijs - linuxprinting - db HPIJS printers

foomatic-filters - linuxprinting.org printer support - filters

foomatic-filters-ppds - linuxprinting - prebuilt PPD files

foomatic-gui - GNOME interface for Foomatic printer filter system

gimpprint-doc - Users' Guide for GIMP-Print and CUPS

gimpprint-locales - Locale data files for gimp-print

gnome-cups-manager - CUPS printer admin tool for GNOME

gtklp - Frontend for cups written in gtk

GNUFDL • PID_00167525 61 Administració local

8. Discos i gestió de filesystems

Respecte a les unitats d'emmagatzemament, com hem vist, tenen una sèrie de

dispositius associats, depenent del tipus d'interfície:

• IDE: dispositius com:

– /dev/hda disk master, primer connector IDE;

– /dev/hdb disk slave, del primer connector;

– /dev/hdc master, segon connector;

– /dev/hdd slave, segon connector.

• SCSI: dispositius /dev/sda /dev/sdb... seguint la numeració que tinguin els

perifèrics al bus SCSI. Els discos SATA i IDE del mateix sistema també solen

seguir aquesta nomenclatura, a causa de la capa d'emulació SCSI present

en el nucli per a aquests dispositius.

• Disquets: dispositius /dev/fdx, amb x com a número de disquetera (co-

mençant pel 0). Hi ha diferents dispositius, depenent de la capacitat del

disquet; per exemple, el disquet de 1,44 MB a la disquetera A seria /dev/

fd0H1440.

Respecte a les particions presents, el número que segueix el dispositiu repre-

senta l'índex de la partició dins del disc, i és tractat com un dispositiu inde-

pendent: /dev/hda1 és la primera partició del primer disc IDE, o /dev/sdc2, la

segona partició del tercer dispositiu SCSI. En el cas dels discos IDE, permeten

quatre particions denominades primàries i un major nombre d'esteses (o lògi-

ques). Així, si en /dev/hdan, n és inferior o igual a 4, es tractarà d'una partició

primària; si no, es tractarà d'una partició lògica amb n superior o igual a 5.

Amb els discos i els sistemes de fitxers (filesystems) associats, els processos bà-

sics que podem fer s'engloben en els següents:

• Creació�de�particions, o modificació. Mitjançant instruccions com fdisk

o semblants (cfdisk, sfdisk).

• Formatació�de�disquets: en cas de disquets, es poden utilitzar diferents

eines: fdformat (formatació de baix nivell), superformat (formatació a dife-

rents capacitats en format MSDOS), mformat (formatació específica creant

un filesystem MSDOS estàndard).

GNUFDL • PID_00167525 62 Administració local

• Creació� de� filesystems� Linux, en particions, mitjançant la instrucció

mkfs. Hi ha versions específiques per a crear filesystems diferents: mkfs.ext2,

mkfs.ext3, i també filesystems no Linux: mkfs.ntfs, mkfs.vfat, mkfs.msdos,

mkfs.minix o d'altres. Per a CD-ROM, com mkisofs, a l'hora de crear els

ISO9660 (amb extensions joliet o rockridge), que puguin ser una imatge del

que després s'acabarà gravant sobre un CD/DVD, i juntament amb instruc-

cions com cdrecord (o wodim), es podrà finalment crear/gravar els CD/DVD.

Un altre cas particular és l'ordre mkswap, que permet crear àrees de swap

en particions que, més tard, es poden activar o desactivar amb swapon i

swapoff.

• Muntatge�dels�filesystems: instruccions mount, umount.

• Verificació�d'estat: la principal eina de verificació de filesystems Linux és

la instrucció fsck. Aquesta instrucció comprova les diferents àrees del sis-

tema de fitxers per a verificar la consistència i comprovar possibles errors

i, en els casos en els quals sigui possible, corregir-los. El sistema mateix

activa automàticament la instrucció fsck en l'arrencada quan detecta situ-

acions en què s'ha produït una parada incorrecta (una apagada elèctrica

o accidental de la màquina), o bé ha passat un cert nombre de vegades

des que el sistema s'ha engegat. Aquesta comprovació sol comportar cert

temps, normalment alguns minuts (depenent de la mida de dades). També

hi ha versions particulars per a altres sistemes de fitxers: fsck.ext2, fsck.ext3,

fsck.vfat, fsck.msdos, etc. El procés de l'fsck es fa amb el dispositiu en mo-

de de "només lectura" amb particions muntades. Es recomana desmuntar

les particions per a fer el procés si es detecten errors i cal aplicar correcci-

ons. En determinats casos, per exemple, si el sistema per a comprovar és

l'arrel / i es detecta algun error crític, ens demanarà que canviem de mode

d'execució del sistema (runlevel) a un mode només root i fem allà la veri-

ficació. En general, si cal fer la verificació, es recomana fer-les en mode

superusuari (podem commutar de mode de runlevel amb les instruccions

init o telinit).

• Processos�de�còpia�de�seguretat: ja siguin del disc, blocs de disc, partici-

ons, filesystems, fitxers... Hi ha diverses eines útils per a això: tar ens permet

copiar fitxers cap a un fitxer o a unitats de cinta; cpio, de manera semblant,

pot fer còpies de fitxers cap a un fitxer; tant cpio com tar mantenen la in-

formació de permisos i propietaris dels fitxers; dd permet còpies, ja sigui

de fitxers, dispositius, particions o discos a fitxer; és una mica complex i

cal conèixer informació de baix nivell, tipus, mides, nombre de blocs o

sectors... Es pot enviar també a cintes.

• Utilitats�diverses, algunes utilitzades pels processos anteriors per a fer trac-

taments diferents: badblocks per a trobar blocs defectuosos al dispositiu;

dumpe2fs per a obtenir informació sobre filesystems Linux; tune2fs permet

GNUFDL • PID_00167525 63 Administració local

fer processos de tunning de filesystems Linux de tipus ext2, ext3 o ext4 i

ajustar diferents paràmetres de comportament.

A continuació, destaquem dos temes relacionats amb la concepció de l'espai

d'emmagatzemament, que són utilitzats en diversos ambients per a la creació

base de l'espai d'emmagatzemament: l'ús de RAID en programari i la creació

de volums dinàmics.

8.1. RAID en programari

La configuració de discos mitjançant esquemes RAID és un dels esquemes

d'emmagatzemament d'alta disponibilitat més usats actualment, quan dispo-

sem de diversos discos per a implementar els nostres sistemes de fitxers.

L'enfocament principal de les diferents tècniques existents és la tolerància a

errors que es proporciona des d'un nivell de dispositiu, el conjunt de discos,

a diferents tipus possibles d'errors tant físics com de sistema, per a evitar les

pèrdues de dades o els errors de coherència en el sistema. Així, també alguns

esquemes que estan dissenyats per a augmentar les prestacions del sistema de

discos, ampliant l'amplada de banda disponible cap al sistema i les aplicacions.

Típicament, avui dia el RAID en maquinari (mitjançant targetes controlado-

res de maquinari) es pot trobar en servidors empresarials (i comencen a tenir

certa presència en equips d'escriptori, amb plaques base amb capacitats per a

alguns RAID), en què es troben disponibles diferents solucions de maquinari

que compleixen aquests requisits de fiabilitat i de maximitzar prestacions. En

particular, per a ambients amb aplicacions intensives en disc, com reproduc-

ció d'àudio o vídeo en temps real, o grans bases de dades.

Convé destacar un error comú en el tema RAID, que proporciona certes capa-

citats de tolerància a errors, però no evita haver de fer còpies de seguretat de les

dades disponibles de manera periòdica. Si se supera la capacitat de tolerància

a errors, també es perden dades (en alguns casos, completament).

En general, aquest maquinari es troba en forma de targetes (o integrat a la

màquina) de tipus controladora RAID de discos, que implementen la gestió

d'un o més nivells (de l'especificació RAID), sobre un conjunt de discos (des

d'un mínim de dos discos) administrat per aquesta controladora.

En RAID es distingeix una sèrie de nivells (o configuracions possibles) que es

poden proporcionar (cada fabricant de maquinari, o el programari concret, pot

suportar un o diversos d'aquests nivells). Cada nivell de RAID s'aplica sobre

un conjunt de discos, de vegades denominat array RAID (o matriu de discos

RAID), que solen ser (idealment) discos iguals en mida (o iguals en mides per

grups). Per exemple, per a fer un cas de matriu es podrien utilitzar quatre discos

de 500 GB, o en un altre cas, dos grups (a 500 GB) de dos discos, un de 150

GB i un altre de 350 GB. En alguns casos de controladors de maquinari, no

GNUFDL • PID_00167525 64 Administració local

es permet que els discos (o en grups) siguin de diferents mides; en d'altres es

poden utilitzar, però la matriu queda definida per la mida del disc (o grup)

més petit.

Descrivim conceptes bàsics d'alguns nivells en la llista següent (teniu en comp-

te que, en alguns casos, la terminologia no és plenament acceptada, i pot de-

pendre de cada fabricant):

• RAID�0: es distribueixen les dades equitativament entre un o més discos

sense informació de paritat o redundància; no s'està oferint tolerància a

l'error. Només s'estan repartint dades; si el disc falla físicament la informa-

ció es perd i l'hem de recuperar a partir de còpies de seguretat. El que sí

que augmenta és el rendiment, depenent de la implementació de RAID 0,

ja que les operacions de lectura i escriptura es dividiran entre els diferents

discos.

Figura 3

• RAID�1: es crea una còpia exacta (mirror) en un conjunt de dos o més discos

(denominada matriu RAID). En aquest cas, resulta útil per al rendiment de

lectura (que es pot arribar a incrementar de manera lineal amb el nombre

de discos), i en especial per a disposar de tolerància a l'error d'un dels dis-

cos, ja que (per exemple, amb dos discos) es disposa de la mateixa infor-

mació. RAID 1 sol ser adequat per a alta disponibilitat, com en entorns de

24 x 7, en què hem de disposar críticament dels recursos. Aquesta configu-

ració ens permet també (si el maquinari ho suporta) l'intercanvi en calent

(hot-swap) dels discos. Si detectem l'error en un, el podem substituir, sense

apagar el sistema, per un disc nou.

GNUFDL • PID_00167525 65 Administració local

Figura 4

• RAID�2: en els anteriors es divideixen les dades en blocs per repartir. Aquí

es divideix en bits i s'utilitzen codis de redundància per a la correcció de

dades. No és utilitzat pràcticament, malgrat les altes prestacions que asso-

liria, ja que necessita idealment un nombre molt alt de discos, un per bit

de dades i diversos per al càlcul de la redundància (per exemple, en un

sistema de 32 bits, arribaria a usar 39 discos).

• RAID�3: utilitza divisió en bytes amb un disc dedicat a la paritat dels blocs.

Tampoc no és gaire utilitzada, ja que segons la mida de les dades i posicions

no permet accessos simultanis. RAID 4 és semblant, encara que divideix en

l'àmbit de blocs en lloc de bytes, la qual cosa permet que sí que es puguin

servir peticions simultànies quan se sol·licita un únic bloc.

• RAID�5: s'usa divisió en l'àmbit de blocs, distribuint la paritat entre els

discos. Té un ús ampli, a causa de l'esquema senzill de paritat, i al fet que

aquest càlcul s'implementa de manera senzilla per maquinari, amb bones

prestacions.

GNUFDL • PID_00167525 66 Administració local

Figura 5

• RAID� 0� +� 1� (o� 01): un mirror de divisions és un nivell de RAID niat.

S'implementen, per exemple, dos grups de RAID 0, els quals són usats en

RAID 1 per a crear mirror entre ells. Un avantatge és que, en cas d'error,

es pot reconstruir el nivell de RAID 0 usat gràcies a l'altra còpia, però si es

volen afegir discos cal afegir-los a tots els grups de RAID 0 de la mateixa

manera.

• RAID�10�(1�+�0): divisió de mirrors, grups de RAID 1 sota RAID 0. Així,

en cada grup de RAID 1 pot arribar a fallar un disc sense que es perdin

dades. És clar que això obliga a reemplaçar-los, ja que si no el disc que

quedi al grup es converteix en possible punt d'error de tot el sistema. És

una configuració que se sol usar per a base de dades d'altes prestacions (per

la tolerància a errors i la velocitat, en no estar basada en càlculs de paritat).

GNUFDL • PID_00167525 67 Administració local

Figura 6

Algunes consideracions per tenir en compte sobre RAID en general:

• RAID millora l'uptime del sistema, ja que alguns dels nivells permeten que

els discos fallin i el sistema continuï essent consistent, i depenent del ma-

quinari, fins i tot es pot canviar el maquinari problemàtic en calent sense

necessitat de parar el sistema, qüestió especialment important en sistemes

crítics.

• RAID pot millorar el rendiment de les aplicacions; en especial, en els siste-

mes amb implementacions de mirror és possible que la divisió de dades per-

meti que les operacions lineals de lectura s'incrementin significativament,

a causa de la possibilitat que els discos ofereixin, de manera simultània,

parts d'aquesta lectura, amb l'augment de la taxa de transferència de dades.

• RAID no protegeix les dades; evidentment, la destrucció per altres mitjans

(virus, mal funcionament general o desastres naturals) no està protegida.

Ens hem de basar en esquemes de còpies de seguretat. Tinguem en compte

que alguns esquemes protegeixen contra un o dos errors de discos de la

matriu, però si n'hi ha més, o depenent de l'esquema, directament (el cas

del RAID 0) es perdran dades.

GNUFDL • PID_00167525 68 Administració local

• No se simplifica la recuperació de dades; si un disc pertany a una matriu

RAID, s'ha d'intentar recuperar en aquest ambient. Es necessita programari

específic o els controladors de maquinari per a accedir a les dades.

• Al contrari, no sol millorar aplicacions típiques d'usuari –d'escriptori– a

causa que aquestes aplicacions tenen components alts d'accés aleatori a

dades, o a conjunts de dades petites; pot ser que no es beneficiïn de lectures

lineals o de transferències de dades sostingudes. En aquests ambients, és

possible que no es noti a penes millora de prestacions.

• Alguns esquemes augmenten de velocitat les operacions de lectura, però

d'altra banda penalitzen les d'escriptura (el cas del RAID 5 per al càlcul de

paritat que cal escriure). Si l'ús és bàsicament d'escriptura, caldrà buscar

quins esquemes no penalitzen o aconsegueixen la proporció d'escriptura

que necessitem (alguns casos, com RAID 0,1, o algunes modalitats de RAID

10, són equivalents a escriure en un disc únic, o fins i tot augmenten les

prestacions en aquest sentit).

• No es facilita el trasllat d'informació; sense RAID és bastant fàcil traslladar

dades, simplement movent el disc d'un sistema a un altre. En el cas de

RAID és gairebé impossible (tret que disposem del mateix maquinari con-

trolador) moure una matriu de discos a un altre sistema.

En el cas de GNU/Linux, es dóna suport al maquinari RAID mitjançant diver-

sos mòduls del nucli, associats a diferents conjunts de fabricants o circuits base,

joc de xips, d'aquestes controladores RAID. Es permet així al sistema abstreure's

dels mecanismes de maquinari i fer-los transparents al sistema i a l'usuari fi-

nal. Així, aquests mòduls del nucli ens permeten l'accés als detalls d'aquestes

controladores, i a la configuració de paràmetres de nivell molt baix, que en

alguns casos (especialment en servidors que suporten càrrega elevada d'E/S),

poden ser interessants per a processos de tunning del sistema de discos que usi

el servidor. Es busca maximitzar les prestacions del sistema.

L'altra possibilitat que analitzarem aquí és la realització d'aquests processos

mitjançant components de programari, concretament el component progra-

mari RAID de GNU/Linux.

GNU/Linux disposa en el nucli del controlador anomenat multiple device (md),

que podem considerar com el suport del nucli per a RAID. Mitjançant aquest

controlador podem implementar nivells de RAID, generalment 0, 1, 4, 5, 6 i

niats (per exemple, RAID 10) sobre diferents dispositius de bloc com discos

IDE, SATA o SCSI. També disposa del nivell linear, com a nivell en què es pro-

dueix una combinació lineal dels discos disponibles (és igual que siguin de

diferents mides), de manera que s'escriu consecutivament en els discos.

GNUFDL • PID_00167525 69 Administració local

Per a la utilització del RAID programari en Linux, hem de disposar del suport

RAID en el nucli, i en el seu cas els mòduls md actius (a més d'alguns controla-

dors específics segons el nivell; vegeu els controladors disponibles associats a

RAID, per exemple en Debian amb modconf). El mètode preferit per a la imple-

mentació de matrius de discos RAID, mitjançant el programari RAID ofert per

Linux, és mitjançant el procés d'instal·lació del sistema inicial, o bé mitjançant

la utilitat mdadm. Aquesta utilitat ens permet crear les matrius i gestionar-les.

Webs recomanats

Per a consultar conceptes de programari RAID, vegeu el Linux RAID wiki:

https://raid.wiki.kernel.org/index.php/Linux_Raid

http://www.linuxfoundation.org/collaborate/workgroups/linux-raid

Vegeu també els nivells RAID suportats:

https://raid.wiki.kernel.org/index.php/Introduction#The_RAID_levels

Observem-ne alguns casos pràctics. Suposem uns discos SCSI /dev/sda, /dev/

sdb... en els quals disposem de diverses particions disponibles per a implemen-

tar RAID:

Creació d'una matriu linear:

# mdadm -create -verbose /dev/md0 -level=linear -raid-devices=2 /dev/sda1 /dev/sdb1

en què es genera una matriu linear a partir de les particions primeres de /dev/

sda i /dev/sdb, creant el nou dispositiu /dev/md0, que ja pot ser usat com a

nou disc (suposant que existeixi el punt de muntatge /media/discRAID):

# mkfs.ext2fs /dev/md0

# mount /dev/md0 /media/discRAID

Per a un RAID 0 o RAID 1 podem canviar simplement el nivell (-level) a raid0

o raid1. Amb mdadm -detail /dev/md0 podrem comprovar els paràmetres de la

matriu nova creada.

També podem consultar l'entrada mdstat en /proc per a determinar les matrius

actives, i també els seus paràmetres. En especial, en els casos amb mirror (per

exemple, en els nivells 1, 5...) podrem observar en la seva creació la construc-

ció inicial de la matriu de les còpies, en /proc/mdstat indicarà el nivell de re-

construcció (i el temps aproximat d'acabament).

mdadm disposa de moltes opcions que ens permeten examinar i gestionar les

diferents matrius RAID de programari creades (en podem veure una descripció

i exemples en man mdadm).

GNUFDL • PID_00167525 70 Administració local

Una altra qüestió important és que les matrius RAID per programari no són

automàticament reconegudes en l'arrencada (com sí que passa amb el RAID

de maquinari suportat), ja que de fet depenen de la construcció amb mdadm.

Perquè la definició d'una matriu de programari sigui persistent, cal registrar-

la al fitxer de configuració /etc/mdadm.conf (la ubicació pot dependre de la

distribució). Un pas senzill és crear-lo automàticament a partir del resultat de

l'ordre.

mdadm -detail -scan (també es pot afegir --verbose)

Una altra consideració important són les optimitzacions a què es poden sot-

metre les matrius RAID per a millorar-ne el rendiment, tant per a monitoritzar

el comportament com per a optimitzar paràmetres del sistema de fitxers, per

a fer un ús més efectiu dels nivells RAID i les seves característiques.

Passarem a detallar un altre cas de configuració RAID més elaborat basat en

l'elaboració d'un RAID 5.

Aquest nivell RAID (com a mínim de tres discos) presenta una configuració

distribuïda de dades i paritat en els discos que formen la matriu. Es presenta

molt bon rendiment en lectura, però disminueix l'escriptura (respecte a un

únic disc), ja que cal calcular la paritat i distribuir-la entre els discos (en casos

RAID de maquinari, aquest cas de càlcul de paritat s'accelera mitjançant ma-

quinari). Una altra dada que cal tenir en compte és que la capacitat final ob-

tinguda és la suma de N – 1 discos, i aquesta configuració és resistent a un error

de disc present en la matriu, el qual es pot reemplaçar i tornar a reconstruir

la matriu. El nivell no suporta dos errors de disc (probabilitat que, de fet, pot

augmentar si en la matriu RAID s'integra un nombre elevat de discos), amb

la qual cosa, com ja comentem, disposar de RAID no ens inhibeix del procés

de còpia de seguretat de dades. Si volguéssim disposar de més fiabilitat, ens

podríem moure a RAID 6, que té càlcul amb paritat dual, a costa de baixar

rendiment, o a configuracions amb RAID 10, que té un bon compromís entre

rendiment i fiabilitat.

Farem, en aquest cas, el procés de construcció amb quatre discos SATA d'alta

capacitat 1,5 TB, amb un emmagatzemament final de 4,5 TB (aproximada-

ment). La matriu RAID és complementària al sistema existent; en casos en què

hagi d'incloure particions de boot, el procés és més delicat (vegeu les recoma-

nacions del RAID software wiki, comentat anteriorment).

Utilitzarem quatre discos SATA presents en el sistema com a /dev/sdb, sdb,

sdc, sdd, sde. El disc /dev/sda se suposa que inclou el sistema i les particions

d'arrencada, i no forma part del RAID. Primer hem de passar per la inicialit-

zacio dels discos (aquest procés esborra qualsevol contingut previ); definirem

una partició única (en aquest cas, integrarem tot l'emmagatzemament dispo-

nible; en altres esquemes es podrien fer diverses particions), creada amb fdisk.

Fonamentalment, seleccionem una nova partició primària, requisits per de-

Nota

L'optimització de les ma-trius RAID pot ser una fontimportant de sintonitzaciódel sistema. Examineu al-gunes qüestions en https://raid.wiki.kernel.org/index.php/Performance o en la pàginaman mateixa d'mdadm.

GNUFDL • PID_00167525 71 Administració local

fecte i canviem el tipus de partició a Linux Raid autodetect (codi fd), fent el

procés amb fdisk, si x és cada disc diferent de la matriu, i el parèntesi inclou

les opcions mitjançant teclat de fdisk:

# fdisk /dev/sdx (d n p 1 ENTER ENTER t fd w)

(per al nostre cas, 4 vegades amb x=b,c,d,e).

Respecte a aquesta inicialització, cal anar amb compte amb les mides de disc, ja

que fdisk amb particions de tipus msdos només suporta particions fins a 2 TB. Si

els discos fossin majors ens hauríem de moure a altres eines de particionament,

com gparted/parted, que suporta nous tipus de particions com GPT, que ja no

disposa d'aquestes restriccions de mida.

Una vegada feta aquesta inicialització, ja podem passar a construir la matriu:

# mdadm --create /dev/md0 --level=5 --verbose --force --chunk=512

--raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

Un paràmetre important en RAID més avançats és la mida del paràmetre chunk

(per defecte, 64 unitats en kB), que té especial rellevància en les prestacions

del RAID. Hi ha estudis que determinen mides adequades de chunk en funció

de la funcionalitat final del RAID (escriptura o lectura, mida mitjana dels ac-

cessos, accés principalment aleatori o seqüencial, etc.). En general, en RAID

5 es recomanen mides de 128 o més, i fins i tot més elevades, de 512-1024,

depenent de la mida mitjana dels arxius.

Una vegada llançada la instrucció anterior, començarà la construcció del RAID

en segon pla. Podem anar consultant /proc/mdstat, que ens esmentarà la ve-

locitat de construcció i el percentatge, i també una estimació de temps per

a finalitzar. Els temps de construcció són bastant grans per a altes capacitats

d'espai, i poden anar des d'algunes hores fins a dies, depenent de les capacitats

dels discos i la màquina.

Podríem estar veient en /proc/mdstat:

# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sdb1[0] sde1[3] sdd1[2] sdc1[1]

4395406848 blocks level 5, 512k chunk, algorithm 2 [4/3] [UUU_]

[==>..................] recovery = 12.6% (37043392/292945152)

finish=127.5min speed=33440K/sec

unused devices: <none>

I una vegada finalitzat:

GNUFDL • PID_00167525 72 Administració local

# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sdb1[0] sde1[3] sdd1[2] sdc1[1]

4395406848 blocks level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

unused devices: <none>

El pas següent és crear un filesystem en el nostre recentment creat array, vist pel

sistema com el dispositiu /dev/md0 (aquest pas es podria iniciar simultània-

ment durant la reconstrucció, però per velocitat i seguretat en alguns passos

crítics inicials es recomana fer-ho al final del procés).

En el nostre cas, optimitzarem lleugerament aquesta creació examinant alguns

paràmetres; crearem un filesystem ext3 en la matriu completa (és recomanable

usar un gestor de volums primer, com LVM, que veurem a continuació, perquè

ens permetrà crear diverses particions lògiques, que es puguin expandir en el

futur o contreure's segons les necessitats).

Per a la creació del filesystem hi ha algunes recomanacions generals que pro-

venen a partir de la mida de chunk (nombre de dades consecutives que resideix

en un disc en kB), que de fet ens defineix com s'accedeix a la matriu, i dels

discos presents, un possible esquema de creació d'un filesystem ext3:

mkfs.ext3 -v -b 4096 -E stride=128,stripe-width=384 /dev/md0

en què -b 4096 és la mida de bloc de disc, recomanada per a filesystems molt

grans, i -E defineix opcions del filesystem per a optimitzar-ne el rendiment.

Aquestes opcions es poden variar després amb la instrucció tune2fs.

En aquestes opcions se sol suggerir un càlcul relacionat amb el chunk, que pot

ser en el nostre exemple:

• chunk size = 512 kB (col·locat en la instrucció mdadm en la creació

de la matriu)

• block size = 4 kB (recomanat per a grans filesystems)

• stride = chunk / block = 512 kB / 4k = 128 kB

• stripe-width = stride * ( (n discos en el raid 5) – 1 ) = 128 kB * ( (4) –

1 ) = 128 kB * 3 = 384 kB

Això ens permet ajustar els paràmetres del sistema de fitxers a l'ús del chunk

escollit.

GNUFDL • PID_00167525 73 Administració local

Una vegada creat el sistema de fitxers, ja tenim la matriu disponible perquè

pugui ser muntada en una ubicació del sistema (suposant un directori previ

/mnt/raid5):

# mount -t ext3 /mnt/raid5 /dev/md0

I ja el tenim disponible en el sistema. Si el volem fer fix, recordeu introduir

els paràmetres en /etc/fstab perquè es munti en l'arrencada. I en aquest cas

de matriu de programari és recomanable (encara que alguns nuclis recents ja

suporten autodetecció de RAID de programari), col·locar la informació RAID

en el fitxer /etc/mdadm.conf, mitjançant la consulta de l'identificador de la

matriu amb les instruccions # mdadm -detail -scan (amb -verbose si es necessita

la identificació de dispositius):

#mdadm --detail --scan --verbose

ARRAY /dev/md0 level=raid5 num-devices=4 metadata=0.90

UUID=dcc77e17:94093185:66731ad6:6353ec0b

devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1

En el reinici següent del sistema ja disposarem de la matriu muntada en ar-

rencada. També, com a punt final, podem obtenir la informació de la matriu

amb mdadm -detail:

# mdadm --detail /dev/md0

/dev/md0:

Version : 0.90

Creation Time : Sat May 8 09:33:06 2010

Raid Level : raid5

Array Size : 4395406848 (4191.79 GiB 4500.90 GB)

Used Dev Size : 1465135616 (1397.26 GiB 1500.30 GB)

Raid Devices : 4

Total Devices : 4

Preferred Minor : 0

Persistence : Superblock is persistent

Update Time : Fri May 21 12:14:31 2010

State : clean

Active Devices : 4

Working Devices : 4

Failed Devices : 0

Spare Devices : 0

Layout : left-symmetric

Chunk Size : 512K

UUID : dcc77e17:94093185:66731ad6:6353ec0b (local to host kaoscore)

Events : 0.125

GNUFDL • PID_00167525 74 Administració local

Number Major Minor RaidDevice State

0 8 17 0 active sync /dev/sdb1

1 8 33 1 active sync /dev/sdc1

2 8 49 2 active sync /dev/sdd1

3 8 65 3 active sync /dev/sde1

Respecte al funcionament del sistema, cal examinar tant aquest informe com

el proporcionat per /proc/mdstat per a controlar de manera periòdica (manu-

alment, mitjançant cron, o per notificacions mitjançant el correu) l'estat del

RAID (en aquest cas actiu), per a determinar si es produeix algun error de disc.

En aquest estat la matriu passaria a degraded, i el sistema perdria la seva capa-

citat de tolerància a un error següent. És llavors necessari detectar quin disc

està fallant i substituir-lo, perquè comenci la reconstrucció de la matriu (mit-

jançant mdadm es pot eliminar un disc de la matriu, i afegir una vegada fet el

canvi de maquinari el nou disc). També és possible mitjançant mdadm simular

degradacions o errors, la qual cosa ens permet provar la nostra matriu davant

de condicions extremes.

Finalment, destaquem que la creació de matrius RAID és molt interessant per

a la realització de grans suports de discos per a entorns empresarials en què

s'intenta maximitzar la tolerància a errors, la recuperació ràpida davant de pro-

blemes i un suport continu de serveis sense interrupcions. És un camp també

en què es necessita un entorn acurat d'anàlisi de rendiment de les solucions,

dels requisits inicials del servei i experimentació amb les diferents solucions

possibles.

8.2. Volums lògics (LVM)

En un moment determinat, sorgeix la necessitat d'abstreure's del sistema físic

de discos, i de la seva configuració i nombre de dispositius, que el sistema

(operatiu) s'encarregui d'aquesta feina i no ens hàgim de preocupar d'aquests

paràmetres directament. En aquest sentit, es pot veure el sistema de volums

lògics com una capa de virtualització de l'emmagatzemament que permet una

visió més simple que faciliti la utilització fluida i senzilla.

En el nucli Linux es disposa d'LVM (logical volume manager), que es va basar

en idees desenvolupades de gestors de volums d'emmagatzemament usats en

HP-UX (una versió UNIX propietat d'HP). Actualment n'hi ha dues versions,

de les quals LVM2 és la més utilitzada, per una sèrie de prestacions afegides

que incorpora.

L'arquitectura d'una LVM consisteix típicament en els components (princi-

pals):

GNUFDL • PID_00167525 75 Administració local

1)�Volums�físics (PV): són els discos durs, o particions d'aquests discos, o qual-

sevol altre element que aparegui com un disc dur amb vista al sistema (per

exemple, un RAID per programari o maquinari).

2)�Volums�lògics (LV): és l'equivalent a la partició del disc físic. Aquesta LV

és visible en el sistema com un dispositiu de blocs (absolutament equivalent a

una partició física), i pot contenir un sistema de fitxers (per exemple, el /home

dels usuaris). Els volums tenen més sentit per als administradors, ja que es

poden usar noms per a identificar-los (així podem utilitzar un dispositiu lògic,

anomenat stock o marketing en lloc d'hda6 o sdc3).

3)�Grups�de�volums (VG): és l'element de la capa superior. La unitat adminis-

trativa que engloba els nostres recursos, ja siguin volums lògics (LV) o físics

(PV). En aquesta unitat es desen les dades dels PV disponibles, i com es formen

les LV a partir dels PV. Evidentment, per a poder utilitzar un grup VG, hem de

disposar de suports físics PV, que s'organitzen en diferents unitats lògiques LV.

A la figura següent observem un grup de volums, en què disposem de set PV,

en forma de particions de discos, que s'han agrupat per a formar dos volums

lògics (que s'han acabat utilitzant per a formar els sistemes de fitxers /usr i

/home):

Figura 7. Esquema d'un exemple d'LVM.

Amb l'ús dels volums lògics permetem un tractament més flexible de l'espai

en el sistema d'emmagatzematge (que podria tenir un gran nombre de discos

i particions diferents), segons les necessitats que ens apareguin. Podem gesti-

onar l'espai, tant amb identificadors més adequats com amb operacions que

ens permetin adequar les necessitats a l'espai disponible en cada moment.

GNUFDL • PID_00167525 76 Administració local

Els sistemes de gestió de volums ens permeten:

1) Redimensionar dinàmicament grups i volums lògics, aprofitant nous PV, o

extraient-ne alguns dels disponibles inicialment.

2) Instantànies del sistema d'arxius (lectura en LVM1 i lectura o escriptura en

LVM2). Això facilita la creació d'un nou dispositiu que sigui una instantània

en el temps de la situació d'una LV. Es pot crear, per exemple, la instantània,

muntar-la, provar diverses operacions o una configuració nova de programari,

o altres elements, i si no funciona com esperàvem, tornar el volum original al

seu estat abans de les proves.

3) RAID 0 de volums lògics.

En LVM no s'implementen configuracions de RAID de tipus 1 o 5, si són ne-

cessàries (és a dir, redundància i tolerància a error). El procés és utilitzar pro-

gramari de RAID o controladora de maquinari RAID que l'implementi en un

determinat nivell de RAID, i després col·locar LVM com a capa superior al RAID

creat prèviament.

Fem un breu exemple de creació típica (en molts casos, l'instal·lador de la

distribució fa un procés semblant, si permetem un LVM com a sistema inicial

d'emmagatzemament). Bàsicament, es fa:

a) la creació dels volums físics (PV),

b) creació del grup lògic (VG),

c) creació del volum lògic (LV), i

d) utilització per a creació d'un sistema de fitxers, i muntatge posterior:

1) Disposem, per exemple, de tres particions de diferents discos. Creem tres PV

(els passos inicials esborren qualsevol contingut dels discos) i n'inicialitzem

el contingut:

# dd if=/dev/zero of=/dev/hda1 bs=1k count=1

# dd if=/dev/zero of=/dev/hda2 bs=1k count=1

# dd if=/dev/zero of=/dev/hdb1 bs=1k count=1

# pvcreate /dev/hda1

Physical volume "/dev/hda1" successfully created

# pvcreate /dev/hda2

Physical volume "/dev/hda2" successfully created

# pvcreate /dev/hdb1

GNUFDL • PID_00167525 77 Administració local

Physical volume "/dev/hdb1" successfully created

2) Col·loquem en un VG creat dels diferents PV:

# vgcreate grup_discos /dev/hda1 /dev/hda2 /dev/hdb1

Volume group "grup_discos" successfully created

3) Creem l'LV (en aquest cas, de mida 1 GB) a partir dels elements que tenim

en el grup VG (-n indica el nom del volum):

# lvcreate -L1G -n volum_logic grup_discos

lvcreate -- doing automatic backup of "grup_discos"

lvcreate -- logical volume "/dev/grup_discos/volum_logic" successfully created

4) I finalment, creem un sistema de fitxers (un reiser en aquest cas):

# mkfs.reiserfs /dev/grup_discos/volum_logic

Que, per exemple, podríem col·locar d'espai per a còpies de seguretat:

mkdir /mnt/backup

mount -t reiserfs /dev/grup_discos/volum_logic /mnt/backup

I disposem finalment del dispositiu com un volum lògic que implementa un

sistema de fitxers.

GNUFDL • PID_00167525 78 Administració local

9. Programari: actualització

Per a l'administració de la instal·lació o actualització de programari en el nostre

sistema, dependrem en primera instància del tipus de paquets de programari

que utilitzi el nostre sistema:

• RPM: paquets que utilitza la distribució Fedora/Red Hat (i derivades). Se

solen manejar mitjançant la instrucció rpm. Contenen informació de de-

pendències del programari. A alt nivell mitjançant YUM (o up2date en al-

gunes distribucions derivades de Red Hat).

• DEB: paquets de Debian, se solen manejar amb un conjunt d'eines que

treballen a diferents nivells amb paquets individuals o grups. Entre aques-

tes eines, es poden esmentar dselect, tasksel, dpkg, apt-get i aptitude.

• Tar, o bé els tgz (també tar.gz): són purament paquets de fitxers units i

comprimits mitjançant instruccions estàndard com tar i gzip (s'usen els

mateixos per a la descompressió). Aquests paquets no contenen informa-

ció de dependències i es poden instal·lar en diferents llocs, si no és que

porten informació de ruta (path) absoluta.

Per a manejar aquests paquets hi ha diverses eines gràfiques, com, per a RPM,

Kpackage; per a DEB, Synaptic o Gnome-apt; per a tgz, Kpackage o des del

gestor de fitxers gràfics mateix (en el Gnome o el KDE). També hi sol haver

utilitats de conversió de paquets. Per exemple, en Debian tenim la instrucció

alien, que permet convertir paquets RPM a DEB. Encara que cal prendre les

precaucions oportunes perquè el paquet, per tenir una distribució de destina-

ció diferent, no modifiqui algun comportament o fitxer de sistema no esperat.

Depenent de l'ús dels tipus de paquets o eines, l'actualització o instal·lació de

programari del nostre sistema es podrà produir de diferents maneres:

1) Des dels CD mateixos d'instal·lació del sistema. Totes les distribucions bus-

quen el programari en els seus CD. Però cal tenir en compte que aquest pro-

gramari no sigui antic i no inclogui, per aquesta raó, alguns pegats com a

actualitzacions, o noves versions amb més prestacions, amb la qual cosa, si

s'instal·la a partir de CD, és bastant comú verificar després que no hi hagi al-

guna versió més recent.

2) Mitjançant serveis d'actualització o cerca de programari, ja sigui de manera

gratuïta, com el cas de l'eina apt-get de Debian, o YUM a Fedora, o serveis de

subscripció (de pagament o amb facilitats bàsiques), com el Red Hat Network

de les versions Red Hat comercials.

Vegeu també

En l'apartat 1, "Eines bàsi-ques per a l'administrador,"desenvolupem en profunditataquests conceptes.

GNUFDL • PID_00167525 79 Administració local

3) Amb repositoris de programari que ofereixen paquets de programari

preconstruïts per a una distribució determinada.

4) El creador o distribuïdor mateix del programari, que ofereix una sèrie de

paquets d'instal·lació del seu programari. Podem no trobar el tipus de paquets

necessari per a la nostra distribució.

5) Programari sense empaquetament o amb un empaquetament només de

compressió sense cap tipus de dependències.

6) Només codi font, en forma de paquet o bé fitxer comprimit.

GNUFDL • PID_00167525 80 Administració local

10.Feines no interactives

En les tasques d'administració, sol ser necessària l'execució a intervals tempo-

rals de certes tasques, ja sigui per a programar les tasques per a fer-les en ho-

raris de menys ús de la màquina, o bé per la naturalesa periòdica mateixa de

les tasques que es vulguin desenvolupar.

Per a dur a terme aquest tipus de feines "fora d'hores", com a serveis periòdics

o programats, hi ha diversos sistemes que ens permeten construir un tipus

d'agenda de tasques (planificació d'execució de tasques):

• nohup: és potser el cas més simple utilitzat pels usuaris. Els permet

l'execució d'una tasca no interactiva una vegada que hagin sortit del seu

compte. En sortir del compte, l'usuari perd els seus processos, i nohup per-

met deixar-los en execució, malgrat que l'usuari es desconnecti.

• at: ens deixa llançar una acció per a executar-la més tard, programant un

determinat instant en què s'iniciarà, especificant l'hora (hh:mm) i la data,

o bé si es farà avui (today) o demà (tomorrow).

at 10pm tasca

fer la tasca a les deu de la nit.

at 2am tomorrow tasca

fer la tasca a les dues de la matinada.

• cron: permet establir una llista de feines per fer amb la seva programació;

aquesta configuració es desa en /etc/crontab. Concretament, en cada en-

trada d'aquest fitxer tenim: minuts i hora que s'efectuarà la tasca, quin dia

del mes, quin mes, quin dia de la setmana, juntament amb què (ja sigui

una tasca, o bé un directori en què hi haurà les tasques per executar).

De manera estàndard, el contingut és semblant al següent:

25 6 * * * root test -e /usr/sbin/anacron || run-parts --report/etc/cron.daily47 6 * * 7 root test -e /usr/sbin/anacron || run-parts --report/etc/cron.weekly52 6 1 * * root test -e /usr/sbin/anacron || run-parts --report/etc/cron.monthl

en què s'està programant que una sèrie de tasques es faran: cada dia (* indica qualsevol),setmanalment (el setè dia de la setmana), o mensualment (el primer de cada mes). Lesfeines serien executades per la instrucció crontab, però el sistema cron implica que la mà-quina està sempre encesa. Si no és així, és millor utilitzar anacron, que verifica si l'accióno es va fer quan l'hauria hagut de fer, i llavors l'executa. En cada línia del fitxer anteriores verifica que hi hagi la instrucció anacron i s'executen els scripts associats a cada acció,que en aquest cas estan desats en uns directoris assignats per a això, els cron.

GNUFDL • PID_00167525 81 Administració local

També hi pot haver uns fitxers cron.allow, cron.deny, per a limitar qui pot

col·locar (o no) tasques en cron. Mitjançant la instrucció crontab, un usuari pot

definir tasques en el mateix format que hem vist abans, que es guardaran en /

var/spool/cron/crontabs. En alguns casos, hi ha també un directori /etc/cron.d

on es poden col·locar feines i que és tractat com si fos una extensió del fitxer

/etc/crontab. En algunes versions, el sistema ja especifica les seves feines pe-

riòdiques de sistema directament sobre subdirectoris de /etc com cron.hourly/,

cron.daily/, cron.weekly i cron.montly/, on es col·loquen les feines de sistema

que necessiten aquesta periodicitat.

GNUFDL • PID_00167525 82 Administració local

11.Taller: pràctiques combinades dels apartats

Començarem per examinar l'estat general del nostre sistema. Farem els dife-

rents passos en un sistema Debian. Encara que es tracta d'un sistema Debian,

els procediments són majoritàriament traslladables a altres distribucions, com

Fedora/Red Hat (esmentarem alguns dels canvis més importants). El maquina-

ri consisteix en un Pentium 4 a 2.66 MHz amb 768 MB i diversos discos, DVD

i gravador de CD, a més d'altres perifèrics, però ja anirem obtenint aquesta

informació pas per pas.

Vegem primer com ha engegat el nostre sistema l'última vegada:

# uptime

17:38:22 up 2:46, 5 users, load average: 0.05, 0.03, 0.04

Aquest instrucció ens dóna el temps que fa que funciona el sistema des que

es va arrencar l'última vegada: 2 hores i 46 minuts. En el nostre cas tenim

cinc usuaris. Aquests no han de ser necessàriament cinc usuaris diferents, sinó

que seran les sessions d'usuari obertes (per exemple, mitjançant un terminal).

La instrucció who permet mostrar aquests usuaris. El load average és la càrrega

mitjana del sistema en els últims 1, 5 i 15 minuts.

Vegem el registre de l'arrencada del sistema (instrucció dmesg), les línies que

s'anaven generant en la càrrega del sistema (s'han suprimit diferents línies per

claredat):

Linux version 2.6.20-1-686 (Debian 2.6.20-2) ([email protected]) (gcc

version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Sun Apr 15 21:03:57 UTC

BIOS-provided physical RAM map:

BIOS-e820: 0000000000000000 - 000000000009f800 (usable)

BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)

BIOS-e820: 00000000000ce000 - 00000000000d0000 (reserved)

BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)

BIOS-e820: 0000000000100000 - 000000002f6e0000 (usable)

BIOS-e820: 000000002f6e0000 - 000000002f6f0000 (ACPI data)

BIOS-e820: 000000002f6f0000 - 000000002f700000 (ACPI NVS)

BIOS-e820: 000000002f700000 - 000000002f780000 (usable)

BIOS-e820: 000000002f780000 - 0000000030000000 (reserved)

BIOS-e820: 00000000ff800000 - 00000000ffc00000 (reserved)

BIOS-e820: 00000000fffffc00 - 0000000100000000 (reserved)

0MB HIGHMEM available.

GNUFDL • PID_00167525 83 Administració local

759MB LOWMEM available.

Aquestes primeres línies ja ens indiquen diverses dades interessants: la versió

del nucli Linux és la 2.6.20-1-686, una versió 2.6 revisió 20 amb revisió 1 de

Debian, i per a màquines 686 (arquitectura Intel x86 de 32 bits). Indica, també,

que estem arrencant un sistema Debian, amb aquest nucli, que va ser compilat

amb un compilador GNU GCC versió 4.1.2. A continuació, es veu un mapa

de zones de memòria usades (reservades) per la BIOS, i a continuació el total

de memòria detectada a la màquina: 759 MB, als quals caldria sumar el primer

1 MB, amb un total de 760 MB.

Kernel command line: BOOT_IMAGE=LinuxNEW ro root=302 lang=es acpi=force

Initializing CPU#0

Console: colour dummy device 80x25

Memory: 766132k/777728k available (1641k kernel code, 10968k reserved, 619k

data, 208k init, 0k highmem)

Calibrating delay using timer specific routine.. 5320.63 BogoMIPS (lpj=10641275)

Aquí ens refereix com ha estat l'arrencada de la màquina, quina línia

d'instruccions se li ha passat al nucli (es poden passar diferents opcions, per

exemple des del LILO o GRUB). I estem arrencant en mode consola de 80 × 25

caràcters (això es pot canviar). Els BogoMIPS són una mesura interna del nucli

de la velocitat de la CPU; hi ha arquitectures en què és difícil detectar a quants

MHz o GHz funciona la CPU, i per això s'utilitza aquesta mesura de velocitat.

Després ens dóna més dades de la memòria principal, i ens diu per a què s'està

usant en aquest moment de l'arrencada.

CPU: Trace cache: 12K uops, L1 D cache: 8K

CPU: L2 cache: 512K

CPU: Hyper-Threading is disabled

Intel machine check architecture supported.

Intel machine check reporting enabled on CPU#0.

CPU0: Intel P4/Xeon Extended MCE MSRs (12) available

CPU0: Intel(R) Pentium(R) 4 CPU 2.66GHz stepping 09

A més, ens proporciona dades diverses de la CPU, la mida de les memòries cau

de primer nivell, la memòria cau interna de la CPU, L1 dividida en una Trace-

Cache del Pentium 4 (o instruction cache), i la cau de dades, i la cau unificada

de segon nivell (L2), el tipus de CPU, la seva velocitat i la del bus del sistema.

PCI: PCI BIOS revision 2.10 entry at 0xfd994, last bus=3

Setting up standard PCI resources

...

NET: Registered protocol

IP route cache hash table entries: 32768 (order: 5, 131072 bytes)

TCP: Hash tables configured (established 131072 bind 65536)

checking if image is initramfs... it is

GNUFDL • PID_00167525 84 Administració local

Freeing initrd memory: 1270k freed

fb0: VESA VGA frame buffer device

Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled

serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize

PNP: PS/2 Controller [PNP0303:KBC0,PNP0f13:MSE0] at 0x60,0x64 irq 1,12

i8042.c: Detected active multiplexing controller, rev 1.1.

serio: i8042 KBD port at 0x60,0x64 irq 1

serio: i8042 AUX0 port at 0x60,0x64 irq 12

serio: i8042 AUX1 port at 0x60,0x64 irq 12

serio: i8042 AUX2 port at 0x60,0x64 irq 12

serio: i8042 AUX3 port at 0x60,0x64 irq 12

mice: PS/2 mouse device common for all mice

Continuen les inicialitzacions del nucli i els dispositius; esmenta la inicialit-

zació de protocols de xarxa. Els terminals, els ports sèrie ttyS0 (seria el COM1),

ttyS01 (el COM2), dóna informació dels discos RAM que usem i detecta dispo-

sitius PS2, teclat i ratolí.

ICH4: IDE controller at PCI slot 0000:00:1f.1

ide0: BM-DMA at 0x1860-0x1867, BIOS settings: hda:DMA, hdb:pio

ide1: BM-DMA at 0x1868-0x186f, BIOS settings: hdc:DMA, hdd:pio

Probing IDE interface ide0...

hda: FUJITSU MHT2030AT, ATA DISK drive

ide0 at 0x1f0-0x1f7,0x3f6 on irq 14

Probing IDE interface ide1...

hdc: SAMSUNG CDRW/DVD SN-324F, ATAPI CD/DVD-ROM drive

ide1 at 0x170-0x177,0x376 on irq 15

SCSI subsystem initialized

libata version 2.00 loaded.

hda: max request size: 128KiB

hda: 58605120 sectors (30005 MB) w/2048KiB Cache, CHS=58140/16/63<6>hda: hw_config=600b

, UDMA(100)

hda: cache flushes supported

hda: hda1 hda2 hda3

kjournald starting. Commit interval 5 seconds

EXT3-fs: mounted filesystem with ordered data mode.

hdc: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache, UDMA(33)

Uniform CD-ROM driver Revision: 3.20

Addinf 618492 swap on /dev/hda3.

Detecció de dispositius IDE, detecta el xip IDE al bus PCI i informa que està

controlant dos dispositius: hda i hdc, que són, respectivament, un disc dur

(Fujitsu), un segon disc dur, un DVD Samsung i una enregistradora de CD (ja

GNUFDL • PID_00167525 85 Administració local

que en aquest cas es tracta d'una unitat combinada). Indica particions actives

en el disc. Més endavant, detecta el sistema principal de fitxers de Linux, un

ext3 amb journal, que activa i afegeix l'espai de swap disponible en una partició.

usbcore: registered new interface driver usbfs

usbcore: registered new interface driver hub

usbcore: registered new device driver usb

input: PC Speaker as /class/input/input1

USB Universal Host Controller Interface driver v3.0

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 2 ports detected

uhci_hcd 0000:00:1d.1: UHCI Host Controller

uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 2

uhci_hcd 0000:00:1d.1: irq 11, io base 0x00001820

usb usb2: configuration #1 chosen from 1 choice

hub 2-0:1.0: USB hub found

hub 2-0:1.0: 2 ports detected

hub 4-0:1.0: USB hub found

hub 4-0:1.0: 6 ports detected

Més detecció de dispositius, USB en aquest cas (i els mòduls que hi correspo-

nen). Ha detectat dos dispositius hub (amb un total de 8 ports USB).

parport: PnPBIOS parport detected.

parport0: PC-style at 0x378 (0x778), irq 7, dma 1 [PCSPP,TRISTATE,COMPAT,EPP,ECP,DMA]

input: ImPS/2 Logitech Wheel Mouse as /class/input/input2

ieee1394: Initialized config rom entry `ip1394'

eepro100.c:v1.09j-t 9/29/99 Donald Becker

Synaptics Touchpad, model: 1, fw: 5.9, id: 0x2e6eb1, caps: 0x944713/0xc0000

input: SynPS/2 Synaptics TouchPad as /class/input/input3

agpgart: Detected an Intel 845G Chipset

agpgart: Detected 8060K stolen Memory

agpgart: AGP aperture is 128M

eth0: OEM i82557/i82558 10/100 Ethernet, 00:00:F0:84:D3:A9, IRQ 11.

Board assembly 000000-000, Physical connectors present: RJ45

e100: Intel(R) PRO/100 Network Driver, 3.5.17-k2-NAPI

usbcore: registered new interface driver usbkbd

Initializing USB Mass Storage driver...

usbcore: registered new interface driver usb-storage

USB Mass Storage support registered.

lp0: using parport0 (interrupt-driven).

ppdev: user-space parallel port driver

GNUFDL • PID_00167525 86 Administració local

I la detecció final de la resta de dispositius: port paral·lel, model de ratolí, port

Firewire (ieee1394), targeta de xarxa (Intel), un tauler tàctil, la targeta de vídeo

AGP (i845). Més dades de la targeta de xarxa: una Intel Pro 100, registre d'USB

com a mass storage (indica un dispositiu d'emmagatzematge per USB, com un

disc extern) i detecció del port paral·lel.

Tota aquesta informació, que hem vist mitjançant la instrucció dmesg, també

la podem trobar bolcada en el registre principal del sistema, /var/log/messages.

En aquest registre, entre altres, trobarem els missatges del nucli i dels dimonis,

i errors de xarxa o dispositius, els quals comuniquen els seus missatges a un

dimoni especial anomenat syslogd, que és l'encarregat d'escriure els missatges

en aquest fitxer. Si hem arrencat la màquina recentment, observarem que les

últimes línies contenen exactament la mateixa informació que la instrucció

dmesg; per exemple, si ens quedem amb la part final del fitxer (sol ser molt

gran):

tail 200 /var/log/messages

Observem les línies d'abans, i també algunes informacions més, com per exem-

ple:

shutdown[13325]: shutting down for system reboot

kernel: usb 4-1: USB disconnect, address 3

kernel: nfsd: last server has exited

kernel: nfsd: unexporting all filesystems

kernel: Kernel logging (proc) stopped.

kernel: Kernel log daemon terminating.

exiting on signal 15

syslogd 1.4.1#20: restart.

kernel: klogd 1.4.1#20, log source = /proc/kmsg started.

Linux version 2.6.20-1-686 (Debian 2.6.20-2) ([email protected]) (gcc version

4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Sun Apr 15 21:03:57

kernel: BIOS-provided physical RAM map:

La primera part correspon a l'aturada anterior del sistema; ens informa que el

nucli ha deixat de col·locar informació en /proc, s'està parant el sistema... Al

principi de l'arrencada nova, s'activa el dimoni syslogd, que genera el registre i

comença la càrrega del sistema, que ens diu que el nucli començarà a escriure

informació en el seu sistema /proc. Veiem les primeres línies de dmesg d'esment

de la versió que s'està carregant de nucli, i després trobarem el que hem vist

amb dmesg.

GNUFDL • PID_00167525 87 Administració local

En aquest punt, una altra instrucció útil per a saber com s'ha produït la càrrega

és lsmod, que ens permetrà saber quins mòduls dinàmics s'han carregat amb

el nucli (versió resumida):

# lsmod

Module Size Used by

nfs 219468 0

nfsd 202192 17

exportfs 5632 1 nfsd

lockd 58216 3 nfs,nfsd

nfs_acl 3616 2 nfs,nfsd

sunrpc 148380 13 nfs,nfsd,lockd,nfs_acl

ppdev 8740 0

lp 11044 0

button 7856 0

ac 5220 0

battery 9924 0

md_mod 71860 1

dm_snapshot 16580 0

dm_mirror 20340 0

dm_mod 52812 2 dm_snapshot,dm_mirror

i810fb 30268 0

vgastate 8512 1 i810fb

eeprom 7184 0

thermal 13928 0

processor 30536 1 thermal

fan 4772 0

udf 75876 0

ntfs 205364 0

usb_storage 75552 0

hid 22784 0

usbkbd 6752 0

eth1394 18468 0

e100 32648 0

eepro100 30096 0

ohci1394 32656 0

ieee1394 89208 2 eth1394,ohci1394

snd_intel8x0 31420 1

snd_ac97_codec 89412 1 snd_intel8x0

ac97_bus 2432 1 snd_ac97_codec

parport_pc 32772 1

snd 48196 6 snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer

ehci_hcd 29132 0

ide_cd 36672 0

cdrom 32960 1 ide_cd

soundcore 7616 1 snd

psmouse 35208 0

GNUFDL • PID_00167525 88 Administració local

uhci_hcd 22160 0

parport 33672 3 ppdev,lp,parport_pc

intelfb 34596 0

serio_raw 6724 0

pcspkr 3264 0

pci_hotplug 29312 1 shpchp

usbcore 122312 6 dvb_usb,usb_storage,usbkbd,ehci_hcd,uhci_hcd

intel_agp 22748 1

agpgart 30504 5 i810fb,drm,intelfb,intel_agp

ext3 121032 1

jbd 55368 1 ext3

ide_disk 15744 3

ata_generic 7876 0

ata_piix 15044 0

libata 100052 2 ata_generic,ata_piix

scsi_mod 133100 2 usb_storage,libata

generic 4932 0 [permanent]

piix 9540 0 [permanent]

ide_core 114728 5 usb_storage,ide_cd,ide_disk,generic,piix

Veiem que disposem dels controladors per al maquinari que hem detectat, i

d'altres de relacionats o necessaris per dependències.

Ja tenim, doncs, una idea de com s'han carregat el nucli i els seus mòduls. En

aquest procés pot ser que ja hàgim observat algun error; si hi ha maquinari

mal configurat o mòduls del nucli mal compilats (no eren per a la versió del

nucli adequada), inexistents, etc.

El pas següent serà l'observació dels processos en el sistema, amb la instrucció

ps (process status), per exemple (només s'han mostrat els processos de sistema,

no els dels usuaris):

#ps -ef

UID PID PPID C STIME TTY TIME CMD

Informació dels processos: UID, usuari que ha llançat el procés (o amb quin

identificador s'ha llançat); PID, codi del procés assignat pel sistema –són con-

secutius a mesura que es llancen els processos, el primer sempre és el 0, que

correspon al procés d'init–; PPID és l'ID del procés pare de l'actual; STIME, el

temps en què va ser engegat el procés; TTY, el terminal assignat al procés (si

en té algun); CMD, línia d'instruccions amb què va ser llançat.

root 1 0 0 14:52 ? 00:00:00 init [2]

root 3 1 0 14:52 ? 00:00:00 [ksoftirqd/0]

root 143 6 0 14:52 ? 00:00:00 [bdflush]

root 145 6 0 14:52 ? 00:00:00 [kswapd0]

root 357 6 0 14:52 ? 00:00:01 [kjournald]

GNUFDL • PID_00167525 89 Administració local

root 477 1 0 14:52 ? 00:00:00 udevd --daemon

root 719 6 0 14:52 ? 00:00:00 [khubd]

Diversos dimonis de sistema, com kswapd, dimoni que controla l'intercanvi

de pàgines amb memòria virtual. Gestió de memòries intermèdies del sistema

(bdflush). Gestió de journal de filesystem (kjournald), gestió d'USB (khubd). O el

dimoni udev, que controla la connexió en calent de dispositius. En general

(no sempre) els dimonis se solen identificar per una d final, i si porten una k

inicial, normalment són fils (threads) interns del nucli.

root 1567 1 0 14:52 ? 00:00:00 dhclient -e -pf ...

root 1653 1 0 14:52 ? 00:00:00 /sbin/portmap

root 1829 1 0 14:52 ? 00:00:00 /sbin/syslogd

root 1839 1 0 14:52 ? 00:00:00 /sbin/klogd -x

root 1983 1 0 14:52 ? 00:00:09 /usr/sbin/cupsd

root 2178 1 0 14:53 ? 00:00:00 /usr/sbin/inetd

Tenim: dhclient, que indica que aquesta màquina és clienta d'un servidor

DHCP, per a obtenir la seva IP; syslogd, dimoni que envia missatges al registre;

el dimoni de cups, com hem vist, està relacionat amb el sistema d'impressió; i

inetd, que, com veurem en la part de xarxes, és una espècie de "superservidor"

o mediador d'altres dimonis relacionats amb serveis de xarxa.

root 2154 1 0 14:53 ? 00:00:00 /usr/sbin/rpc.mountd

root 2241 1 0 14:53 ? 00:00:00 /usr/sbin/sshd

root 2257 1 0 14:53 ? 00:00:00 /usr/bin/xfs -daemon

root 2573 1 0 14:53 ? 00:00:00 /usr/sbin/atd

root 2580 1 0 14:53 ? 00:00:00 /usr/sbin/cron

root 2675 1 0 14:53 ? 00:00:00 /usr/sbin/apache

www-data 2684 2675 0 14:53 ? 00:00:00 /usr/sbin/apache

www-data 2685 2675 0 14:53 ? 00:00:00 /usr/sbin/apache

També hi ha sshd, servidor d'accés remot segur (una versió millorada que per-

met serveis compatibles amb Telnet i FTP); xfs és el servidor de tipus de lletra

d'X Window. Les instruccions atd i cron serveixen per a manejar tasques pro-

gramades en un moment determinat. Apache és el servidor web, que pot tenir

diverses cadenes actives (threads) per a atendre diferents peticions.

root 2499 2493 0 14:53 ? 00:00:00 /usr/sbin/gdm

root 2502 2499 4 14:53 tty7 00:09:18 /usr/bin/X :0 -dpi 96 ...

root 2848 1 0 14:53 tty2 00:00:00 /sbin/getty 38400 tty2

root 2849 1 0 14:53 tty3 00:00:00 /sbin/getty 38400 tty3

root 3941 2847 0 14:57 tty1 00:00:00 -bash

root 16453 12970 0 18:10 pts/2 00:00:00 ps -ef

GNUFDL • PID_00167525 90 Administració local

Així, gdm és la connexió gràfica del sistema d'escriptori Gnome (l'entrada que

ens demana la connexió i la contrasenya); els processos getty són els que gesti-

onen els terminals virtuals de text (els que podem veure amb les tecles Alt+Fn,

o Ctrl+Alt+Fn si estem en mode gràfic); X és el procés del servidor gràfic X

Window System, imprescindible perquè s'executi qualsevol entorn d'escriptori

a sobre. Un intèrpret obert (bash), i finalment el procés que hem generat en

demanar aquest ps des de la línia d'instruccions.

La instrucció ps té moltes opcions de línia d'ordres per a ajustar la informació

que volem de cada procés, ja sigui el temps que fa que s'executa, el percentatge

de CPU usat, la memòria utilitzada, etc. (vegeu man ps). Una altra instrucció

molt interessant és top, que fa el mateix que ps però de manera dinàmica;

s'actualitza cada cert interval; podem classificar els processos per ús de CPU,

de memòria, i també ens dóna informació de l'estat de la memòria global.

Altres instruccions útils per a l'ús de recursos són free i vmstat, que ens donen

informació sobre la memòria utilitzada i el sistema de memòria virtual:

# free

total used free shared buffers cached

Mem: 767736 745232 22504 0 89564 457612

-/+ buffers/cache: 198056 569680

Swap: 618492 1732 616760

# vmstat

procs -----------memory---------- ---swap-- -----io-- --system-- ----cpu----

r b swpd free buff cache si so bi bo in cs us sy id wa

1 0 1732 22444 89584 457640 0 0 68 137 291 418 7 1 85 7

En la instrucció free també es pot observar la mida del swap present, aproxima-

dament d'uns 600 MB, que de moment no s'està usant intensament per tenir

suficient espai de memòria física. Encara en queden uns 22 MB lliures (fet que

indica una alta utilització de la memòria física i un ús proper de swap). L'espai

de memòria i el swap (a partir dels nuclis 2.4) són additius per a compondre el

total de memòria del sistema, i en aquest cas fa un total d'1,4 GB de memòria

disponible.

Nota

Vegeu el man de les instrucci-ons per a interpretar les sorti-des.

GNUFDL • PID_00167525 91 Administració local

Activitats

1. Feu una lectura ràpida de l'estàndard FHS, que ens servirà per a tenir una bona guia a l'horade buscar arxius per a la nostra distribució.

2. Per als paquets RPM, com faríeu algunes de les tasques següents?

a) Conèixer quin paquet va instal·lar una determinada instrucció.

b) Obtenir la descripció del paquet que va instal·lar una instrucció.

c) Esborrar un paquet del qual no coneixem el nom complet.

d) Mostrar tots els arxius que eren al mateix paquet que un determinat arxiu.

3. Efectueu les mateixes tasques que en l'activitat anterior, però per a paquets Debian, usanteines APT.

4. Actualitzeu una distribució Debian (o Fedora).

5. Instal·leu en la nostra distribució alguna eina genèrica d'administració, com Webadmin.Què ens ofereix? Enteneu les tasques executades i els efectes que provoquen?

6. L'espai de swap permet complementar la memòria física per a disposar de més memòriavirtual. Depenent de les mides de memòria física i swap, es pot arribar a esgotar la memòria?Ho podem solucionar d'una altra manera que no sigui afegint més memòria física?

7. Suposem que tenim un sistema amb dues particions Linux, una / i l'altra de swap. Comsolucionaríeu el cas que els comptes dels usuaris esgotessin l'espai de disc? I en el cas de teniruna partició /home aïllada que s'estigués esgotant, com ho solucionaríeu?

8. Instal·leu el sistema d'impressió CUPS, definiu la nostra impressora perquè funcioni ambCUPS i proveu l'administració via interfície web. Tal com està el sistema, seria recomanablemodificar d'alguna manera la configuració que porta per defecte CUPS? Per què?

9. Analitzeu el sistema Upstart present en una distribució Fedora. Quins esdeveniments i jobsporta predefinits? Hi ha compatibilitat amb l'init de System V?

10. Examineu la configuració per defecte que porti el sistema GNU/Linux per a feines nointeractives amb cron. Quines feines s'estan fent? Quan s'estan fent? Alguna idea per a novesfeines que calgui afegir?

11. Reproduiu l'anàlisi del taller (més els altres apartats de la unitat) sobre la màquina dequè disposeu; s'observen en el sistema alguns errors o situacions anòmales? En aquest cas,com ho corregiu?

Nota

Vegeu FHS a:http://www.pathname.com/fhs

GNUFDL • PID_00167525 92 Administració local

Bibliografia

[Bai] Bailey, E. C. (2003). RedHat Maximum RPM.<http://www.redhat.com/docs/books/max-rpm/index.html>

Ofereix una àmplia visió dels sistemes de paquets de programari de les distribucions Debiani Fedora/Red Hat.

[Debb] Comunitat Debian. "Distribució Debian". <http://www.debian.org>

[Coo] Cooper, M. (2006). "Advanced Bash Scripting Guide". The Linux Documentation Project(guies).

Ofereix una àmplia introducció (i conceptes avançats) a la programació de shell scripts enBash, i també nombrosos exemples.

[Deb] Debian. "Lloc de Seguretat de Debian". <http://www.debian.org/security/>

Ofereix una àmplia visió dels sistemes de paquets de programari de les distribucions Debiani Fedora/Red Hat.

[Lin03b] FHS Standard (2003). <http://www.pathname.com/fhs>

[Fri02] Frisch, A. (2002). Essential System Administration. O'Reilly.

Administració de GNU/Linux i UNIX. Comenta de manera àmplia aspectes d'administraciólocal i gestió de sistemes d'impressió.

[Hin00] Hinner, M. "Filesystems HOWTO". The Linux Documentation Project.

Informació sobre els diferents sistemes de fitxers disponibles i els esquemes de creació departicions per a la instal·lació del sistema.

[Koe] Koehntopp, K. "Linux Partition HOWTO". The Linux Documentation Project.

Informació sobre els diferents sistemes de fitxers disponibles i els esquemes de creació departicions per a la instal·lació del sistema.

[Linc] Linux Standards Base project. <http://www.linux-foundation.org/en/LSB>

[Bas] Mike, G. "BASH Programming - Introduction HOWTO". The Linux Documentation Pro-ject.

Ofereix una àmplia introducció (i conceptes avançats) a la programació de shell scripts enBash, i també nombrosos exemples.

[Mor03] Morill, D. (2003). Configuración de sistemas Linux. Anaya Multimedia.

[Nem06] Nemeth, E.; Snyder, G.; Hein, T. R. (2006). "Linux Administration Handbook"(2a. ed.). Prentice Hall.

Tracta de manera àmplia de la majoria d'aspectes d'administració i és una bona guia genèricaper a qualsevol distribució.

[Qui01] Quigley, E. (2001). Linux shells by Example. Prentice Hall.

Comenta els diferents intèrprets de programació en GNU/Linux, i també les seves semblancesi diferències.

[SM02] Schwartz, M. i altres (2002). Multitool Linux - Practical Uses for Open Source Softwa-re. Addison Wesley.

[Smi02] Smith, R. (2002). Advanced Linux Networking. Addison Wesley.

Administració de GNU/Linux i UNIX. Comenta de manera àmplia aspectes d'administraciólocal i gestió de sistemes d'impressió.

[Sob10] Sobell, M. G. (2010). A Practical Guide to Fedora and Red Hat Enterprise Linux. Pren-tice Hall.

És una bona guia d'administració local per a distribucions Red Hat i Fedora.

GNUFDL • PID_00167525 93 Administració local

[Stu] Stutz, M. "The Linux Cookbook: Tips and Techniques for Everyday Use". The LinuxDocumentation Project (guies).

És una àmplia introducció a les eines disponibles en GNU/Linux.

[Gt] Taylor, G.; Allaert, D. "The Linux Printing HOWTO". The Linux Documentation Project.

Ofereix informació actualitzada dels sistemes d'impressió i la seva configuració, i també de-talls d'algunes impressores. Per a detalls concrets de models d'impressora i controladors, uspodeu dirigir a: <http://www.linuxprinting.org/>

[Fed] The Fedora Project. <http://fedoraproject.org/>

[Wm02] Welsh, M. i altres (2002). Running Linux (4a. ed.). O'Reilly.

Administració de GNU/Linux i UNIX. Comenta de manera àmplia aspectes d'administraciólocal i gestió de sistemes d'impressió.

Administració dexarxa Remo Suppi Boldrito PID_00167526

GNUFDL • PID_00167526 Administració de xarxa

© 2010, FUOC. Es garanteix el permís per a copiar, distribuir i modificar aquest document segons els termes de la GNU FreeDocumentation License, Version 1.2 o qualsevol altra de posterior publicada per la Free Software Foundation, sense seccionsinvariants ni textos de la coberta anterior o posterior. Hi ha una còpia de la llicència en l'apartat "GNU Free DocumentationLicense" d'aquest document.

GNUFDL • PID_00167526 Administració de xarxa

Índex

Introducció.................................................................................................. 5

1. Introducció a TCP/IP (paquet TCP/IP)........................................ 7

1.1. Serveis sobre TCP/IP .................................................................... 7

1.2. Què és TCP/IP? ............................................................................ 9

1.3. Dispositius físics (maquinari) de xarxa ....................................... 10

2. Conceptes en TCP/IP......................................................................... 12

3. Com s'assigna una adreça d'Internet?.......................................... 15

4. Com s'ha de configurar la xarxa?................................................. 19

4.1. Configuració de la interfície (NIC) ............................................. 19

4.1.1. Configuració de xarxa en distribucions de tipus

Fedora ............................................................................. 21

4.1.2. Configuració d'una xarxa Wi-Fi (sense fil) .................... 22

4.2. Configuració del sistema de resolució de noms ......................... 24

4.2.1. Exemple de l'arxiu /etc/resolv.conf ............................... 24

4.2.2. Exemple de l'arxiu /etc/host.conf .................................. 25

4.2.3. Exemple de l'arxiu /etc/hosts ........................................ 25

4.2.4. Exemple del loopback...................................................... 25

4.3. Configuració de l'encaminament ............................................... 26

4.4. Configuració d'inetd...................................................................... 28

4.5. Configuració addicional: protocols i xarxes ............................... 30

4.6. Aspectes de seguretat .................................................................. 31

4.7. Opcions d'IP ................................................................................ 32

5. Configuració del DHCP.................................................................... 33

6. Aliàsing d'IP........................................................................................ 35

7. IP masquerade.................................................................................... 37

8. NAT amb el nucli 2.2 o superiors.................................................. 39

9. Com cal configurar una connexió DialUP i PPP?...................... 40

10. Configuració de la xarxa mitjançant hotplug............................ 43

11. Xarxa privada virtual (VPN).......................................................... 45

11.1. Exemple simple ........................................................................... 45

GNUFDL • PID_00167526 Administració de xarxa

11.2. Configuració (manual) d'un client Debian per a accedir a un

VPN sobre un túnel pptp.............................................................. 47

12. Configuracions avançades i eines.................................................. 50

Activitats...................................................................................................... 59

Bibliografia................................................................................................. 60

Annex............................................................................................................ 61

GNUFDL • PID_00167526 5 Administració de xarxa

Introducció

El sistema operatiu Unix (GNU/Linux) es pren com a exemple d'una arquitec-

tura de comunicacions estàndard. Des del mític UUCP (servei de còpia entre

sistemes operatius Unix) fins a les xarxes actuals, el Unix sempre ha mostrat

la seva versatilitat en aspectes relacionats amb la comunicació i l'intercanvi

d'informació. Amb la introducció de xarxes d'ordinadors (àrea local LAN, àrea

àmplia WAN o les més actuals, àrea metropolitana MAN) amb enllaços mul-

tipunt a diferents velocitats (56 kbps, fins a 1 Gbps), han anat sorgint nous

serveis basats en protocols més ràpids, portables entre diferents ordinadors i

més ben adaptats, com el TCP/IP (transport control program / Internet protocol)

[Com01, Mal96, Cis00, Gar98, KD00].

GNUFDL • PID_00167526 7 Administració de xarxa

1. Introducció a TCP/IP (paquet TCP/IP)

El protocol TCP/IP sintetitza un exemple d'estandardització i una voluntat de

comunicació a escala global.

El protocol TCP/IP és en realitat un conjunt de protocols bàsics que

s'han anat agregant al principal per a satisfer les diferents necessitats

en la comunicació ordinador-ordinador, com són TCP, UDP, IP, ICMP,

ARP.[Mal96]

La utilització més freqüent de TCP/IP per a l'usuari actualment són la connexió

remota a altres ordinadors (telnet, SSH1), la utilització de fitxers remots (NFS2)

o la transferència (FTP3, HTTP4).

1.1. Serveis sobre TCP/IP

Els serveis TCP/IP tradicionals més importants són [Gar98]:

a)�Transferència�d'arxius:�l'FTP�permet�a�un�usuari�d'un�ordinador�obtenir

o�enviar�arxius�d'un�ordinador�a�un�altre�ordinador.�Per�a�això,�l'usuari

haurà�de�tenir�un�compte, en l'ordinador remot, identificar-se per mitjà del

seu nom (login) i una paraula clau (contrasenya) o en ordinadors en què hi ha

un repositori d'informació (programari, documentació...), l'usuari es connec-

tarà com a anònim (anonymous) per a transferir (llegir) aquests arxius al seu

ordinador. Això no és el mateix que els sistemes d'arxius de xarxa més recents,

NFS (o protocols Netbios sobre TCP/IP, un "invent" totalment insegur sobre

Windows i que és millor reemplaçar per una versió més antiga però més segura

del mateix concepte anomenat netbeui), que permeten virtualitzar el sistema

d'arxius d'una màquina perquè pugui ser accedit de manera interactiva sobre

un altre ordinador.

b)�Connexió�(login)�remota: el protocol de terminal de xarxa (telnet) permet a

un usuari connectar-se a un ordinador remotament. L'ordinador local s'utilitza

com a terminal de l'ordinador remot i tot és executat sobre aquest alhora que

l'ordinador local roman invisible des del punt de vista de la sessió. Aquest

servei actualment s'ha reemplaçat per l'SHH per raons de seguretat. En una

connexió remota mitjançant telnet, els missatges circulen tal com estan (text

pla); és a dir, si algú "observa" els missatges a la xarxa, equivaldrà a mirar la

pantalla de l'usuari. SSH codifica la informació (que significa un cost afegit a

la comunicació), que fa que els paquets a la xarxa siguin illegibles per a un

node estrany.

(1)De l'anglès secure shell.

(2)De l'anglès network file system.

(3)De l'anglès file transfer protocol.

(4)De l'anglès hipertext markup pro-tocol.

TCP/IP

Utilització típica de TCP/IP re-mote login:telnet localhostDebian GNU/Linux 4.0login:

GNUFDL • PID_00167526 8 Administració de xarxa

c)�Correu�electrònic: aquest servei permet enviar missatges als usuaris d'altres

ordinadors. Aquest mode de comunicació s'ha transformat en un element vital

en la vida dels usuaris i permeten que els correus electrònics siguin enviats a un

servidor central perquè després puguin ser recuperats per mitjà de programes

específics (clients) o ser llegits per mitjà d'una connexió web.

L'avenç de la tecnologia i el baix cost dels ordinadors han permès que deter-

minats serveis s'hi hagin especialitzat i s'ofereixen configurats sobre determi-

nats ordinadors que treballen en un model client-servidor. Un servidor és un

sistema que ofereix un servei específic per a la resta de la xarxa. Un client és

un altre ordinador que utilitza aquest servei. Tots aquests serveis generalment

són oferts dins de TCP/IP:

• Sistemes�d'arxius�en�xarxa (NFS): permet a un sistema accedir als arxius

sobre un sistema remot d'una manera més integrada que FTP. Els disposi-

tius d'emmagatzematge (o part d'aquests) són exportats cap al sistema que

vol accedir i els poden "veure" com si fossin dispositius locals. Aquest pro-

tocol permet a qui exporta posar les regles i les formes d'accés, cosa que

(ben configurada) fa independent el lloc on es troba la informació física-

ment del lloc on es "veu" la informació.

• Impressió�remota: permet accedir a impressores connectades a altres or-

dinadors.

• Execució�remota: permet que un usuari executi un programa sobre un

altre ordinador. Hi ha diferents maneres de fer aquesta execució: o bé per

mitjà d'una instrucció (rsh, ssh, rexec) o per mitjà de sistemes amb RPC,5

que permet a un programa en un ordinador local executar una funció d'un

programa sobre un altre ordinador. Els mecanismes RPC han estat objec-

te d'estudi i hi ha diverses implementacions, però les més comunes són

Xerox's Courier i Sun's RPC (aquesta última adoptada per la majoria dels

Unix).

(5)De l'anglès remote procedure call.

• Servidors�de�nom (name servers): en grans instal·lacions hi ha un conjunt

de dades que necessiten ser centralitzades per a millorar-ne la utilització,

com per exemple, nom d'usuaris, paraules clau, adreces de xarxa, etc. Tot

això facilita que un usuari disposi d'un compte per a totes les màquines

d'una organització. Per exemple, Sun's Yellow Pages (NIS en les versions

actuals de Sun) està dissenyat per a manejar tot aquest tipus de dades i està

disponible per a la majoria de Unix. El DNS6 és un altre servei de noms,

però que guarda una relació entre el nom de la màquina i la identificació

lògica d'aquesta màquina (adreça IP).

• Servidors� de� terminal (terminal servers): connecta terminals a un ser-

vidor que executa telnet per a connectar-se a l'amfitrió. Aquest tipus

(6)De l'anglès domain name system.

GNUFDL • PID_00167526 9 Administració de xarxa

d'instal·lacions permet bàsicament reduir costos i millorar les connexions

a l'amfitrió (en determinats casos).

• Servidors�de�terminals�gràfiques (network-oriented window systems): per-

meten que un ordinador pugui visualitzar informació gràfica sobre una

pantalla que està connectada a un altre ordinador. El més comú d'aquests

sistemes és X-Window.

1.2. Què és TCP/IP?

TCP/IP són en realitat dos protocols de comunicació entre ordinadors inde-

pendents un de l'altre.

D'una banda, TCP7 defineix les regles de comunicació perquè un ordinador

(amfitrió) pugui "parlar" amb un altre (si es pren com a referència el model de

comunicacions OSI/ISO es descriu la capa 4, vegeu la taula següent). TCP és

orientat a connexió, és a dir, equivalent a un telèfon, i la comunicació es tracta

com un flux de dades (stream).

(7)De l'anglès Transmission ControlProtocol.

D'altra banda, IP8, defineix el protocol que permet identificar les xarxes i es-

tablir els camins entre els diferents ordinadors. És a dir, encamina les dades

entre dos ordinadors per mitjà de les xarxes. Correspon a la capa 3 del model

OSI/ISO i és un protocol sense connexió (vegeu la taula següent). [Com01,

Rid00, Dra99]

(8)De l'anglès Internet Protocol.

Una alternativa al TCP la conforma el protocol UDP9, el qual tracta les dades

com un missatge (datagrama) i envia paquets. És un protocol sense connexió10

i té l'avantatge que exerceix menys sobrecàrrega en la xarxa que les connexions

de TCP, però la comunicació no és fiable (els paquets poden no arribar o arribar

duplicats).

Hi ha un altre protocol alternatiu anomenat ICMP11. ICMP s'utilitza per a mis-

satges d'error o control. Per exemple, si algú intenta connectar-se a un equip

(amfitrió), l'ordinador local pot rebre un missatge ICMP que indiqui host un-

reachable. ICMP també pot ser utilitzat per a extreure informació sobre una

xarxa. ICMP és similar a UDP, ja que maneja missatges (datagrames), però és

més simple que UDP, ja que no té identificació de ports12 en l'encapçalament

del missatge.

(9)De l'anglès User Datagram Proto-col.

(10)L'ordinador de destinació no had'estar escoltant necessàriamentquan un ordinador estableix co-municació amb ell.

(11)De l'anglès Internet control mes-sage protocol.

(12)Són bústies on es dipositen elspaquets de dades i des d'on lesaplicacions servidores llegeixen elspaquets esmentats.

El model de comunicacions OSI13/ISO14 és un model teòric adoptat per moltes

xarxes. Hi ha set capes de comunicació, i cada una té una interfície per a co-

municar-se amb l'anterior i la posterior:

(13)De l'anglès open systems inter-connection reference model.

GNUFDL • PID_00167526 10 Administració de xarxa

Nivell Nom Utilització

7 Aplicació SMTP15, el servei pròpiament dit

6 Presentació telnet, FTP implementa el protocol del servei

5 Sessió Generalment no s'utilitza

4 Transport TCP, UDP, transformació d'acord amb el protocol de comunicació

3 Xarxa IP permet encaminar el paquet (routing)

2 Enllaç Controladors (drivers), transformació d'acord amb el protocol físic

1 Físic Ethernet, ADSL... envia del paquet físicament

En resum, TCP/IP és una família de protocols (que inclouen IP, TCP, UDP) que

proveeixen un conjunt de funcions a baix nivell utilitzades per la majoria de

les aplicacions. [KD00, Dra99]

(14)De l'anglès International Stan-dards Organization.

(15)De l'anglès simple mail transferprotocol.

Alguns dels protocols que utilitzen els serveis esmentats han estat dissenyats

per Berkeley, Sun o altres organitzacions, i oficialment no formen part de

l'Internet�Protocol�Suite (IPS). Tanmateix, són implementats utilitzant TCP/

IP i, per tant, són considerats com a part formal d'IPS. Una descripció dels pro-

tocols disponibles a Internet es pot consultar en l'RFC 1011 (vegeu les referèn-

cies sobre RFC [IET]), que mostra tots els protocols disponibles. Hi ha actual-

ment una nova versió del protocol IPv6, també anomenat Ipng16, que reem-

plaça l'IPv4. Aquest protocol millora notablement l'anterior en temes com ara

el nombre més elevat de nodes, el control de trànsit, la seguretat o les millores

en aspectes d'encaminament.

1.3. Dispositius físics (maquinari) de xarxa

Des del punt de vista físic (capa 1 del model OSI), el maquinari més utilitzat

per a LAN és conegut com a Ethernet (o FastEthernet o GigaEthernet). Els seus

avantatges són el baix cost, velocitats acceptables (10, 100, o 1.000 megabits

per segon) i facilitat en la instal·lació.

Hi ha tres modes de connexió en funció del tipus de cable

d'interconnexió: gruixut (thick), fi (thin) i de parell trenat (twisted parell).

(16)De l'anglès IP next generation.

Les dues primeres són obsoletes (utilitzen cable coaxial), mentre que l'última

es fa per mitjà de cables (parells) trenats i connectors similars als telefònics (es

coneixen com a RJ45). La connexió de parell trenat és coneguda com a 10ba-

seT o 100baseT (segons la velocitat) i utilitza repetidors anomenats concentra-

dors (o hubs) com a punts d'interconnexió. La tecnologia Ethernet utilitza ele-

ments intermedis de comunicació (concentradors, commutadors, encaminadors)

(17)De l'anglès Fiber Distributed Da-ta Interface.

GNUFDL • PID_00167526 11 Administració de xarxa

per a configurar múltiples segments de xarxa i dividir el trànsit per a millorar

les prestacions de transferència d'informació. Normalment, en les grans insti-

tucions aquestes LAN Ethernet estan interconnectades per mitjà de fibra òpti-

ca amb tecnologia FDDI17, que és molt més cara i complexa d'instal·lar, però

es poden obtenir velocitats de transmissió equivalents a Ethernet i no tenen

la limitació de la distància (FDDI admet distàncies de fins a 200 km). El seu

cost es justifica per a enllaços entre edificis o entre segments de xarxa molt

congestionats. [Rid00, KD00]

Hi ha a més un altre tipus de maquinari menys comú, però no menys interes-

sant, com és ATM18. Aquest maquinari permet muntar LAN amb una qualitat

de servei elevada i és una bona opció quan s'han de muntar xarxes d'alta velo-

citat i baixa latència, com per exemple les que involucren distribució de vídeo

en temps real.

(18)De l'anglès asynchronous trans-fer mode.

Hi ha un altre maquinari suportat per GNU/Linux per a la interconnexió

d'ordinadors, entre els quals podem esmentar: Frame Relay o X.25, utilitzat en

ordinadors que accedeixen o interconnecten WAN i per a servidors amb grans

necessitats de transferències de dades; Packet Radio, interconnexió via ràdio

amb protocols com AX.25, NetRom o Rose, o dispositius dialing up, que utilit-

zen línies en sèrie, lentes però molt barates, per mitjà d'un mòdem analògic

o digital (XDSI, DSL, ADSL, etc.). Aquestes últimes són les que normalment

s'utilitzen en pimes o en ús domèstic, i requereixen un altre protocol per a

la transmissió de paquets, com ara SLIP o PPP. Per a virtualitzar la diversitat

de maquinari sobre una xarxa, TCP/IP defineix una interfície abstracta mit-

jançant la qual es concentraran tots els paquets que seran enviats per un dis-

positiu físic (la qual cosa també significa una xarxa o un segment d'aquesta

xarxa). Per això, per cada dispositiu de comunicació en la màquina estendrem

una interfície corresponent en el nucli del sistema operatiu.

Ethernet

Ethernet en GNU/Linux es cri-da amb ethx (la x indica un nú-mero d'ordre començant per0), la interfície a línies en sèrie(mòdem) es crida amb pppx(per a PPP) o slx (per a SLIP),i per a FDDI és fddix. Aquestsnoms són utilitzats per les or-dres per a configurar els seusparàmetres i assignar-los el nú-mero d'identificació que poste-riorment permetrà comunicar-nos amb altres dispositius a laXarxa.

En GNU/Linux pot implicar haver d'incloure els mòduls adequats per al dis-

positiu (NIC19) adequat (en el nucli o com a mòduls), i això significa compilar

el nucli després d'haver escollit, per exemple, amb make�menuconfig, el NIC

adequat, indicant-lo com a intern o com a mòdul (en aquest últim cas s'haurà

de compilar el mòdul adequat també).

Els dispositius de xarxa es poden mirar en el directori /dev, que és on hi ha

un arxiu (especial, ja sigui de bloc o de caràcters, segons la seva transferència),

que representa cada dispositiu maquinari. [KD00, Dra99]

(19)De l'anglès network interfacecard.

ifconfig -a

Per a veure les interfícies dexarxa disponibles cal aplicarl'ordre ifconfig -a. Aquesta or-dre mostra totes les interfícies/paràmetres per defecte de ca-da una.

GNUFDL • PID_00167526 12 Administració de xarxa

2. Conceptes en TCP/IP

Com s'ha observat, la comunicació significa una sèrie de conceptes que am-

pliarem a continuació [Mal96, Com01]:

• Internet/intranets: el terme intranet es refereix a l'aplicació de tecnologies

d'Internet (xarxa de xarxes) dins d'una organització, bàsicament per dis-

tribuir i tenir disponible informació dins de la companyia. Per exemple,

els serveis oferts per GNU/Linux com a serveis Internet i intranet inclouen

correu electrònic, WWW, grups de notícies, etc.

• Node: es denomina node (amfitrió) una màquina que es connecta a la xarxa

(en un sentit ampli, un node pot ser un ordinador, una impressora, una

torre (rack) de CD, etc.), és a dir, un element actiu i diferenciable a la xarxa

que reclama o deixa algun servei o comparteix informació.

• Adreça�de�xarxa�Ethernet (Ethernet address o MAC address): un número

de 48 bits (per exemple 00:88:40:73:AB:FF –en octal–, o 0000 0000 1000

1000 0100 0000 0111 0011 1010 1011 1111 1111 –en binari–) que es troba

en el dispositiu físic (maquinari) del controlador (NIC) de xarxa Ethernet

i és gravat pel fabricant (aquest número ha de ser únic al món, per la qual

cosa cada fabricant de NIC té un rang preassignat).

• Nom�de�l'amfitrió: cada node ha de tenir a més un únic nom a la xarxa.

Poden ser només noms o bé utilitzar un esquema de noms jeràrquic basat

en dominis (hierarchical domain naming scheme). Els noms dels nodes han

de ser únics, la qual cosa resulta fàcil en petites xarxes, i més dificultós en

xarxes extenses, i impossible a Internet si no es fa algun control. Els noms

han de ser d'un màxim de 32 caràcters, han d'usar a-zA-Z0-9.-, no han de

contenir espais o # i han de començar per un caràcter alfabètic.

Nota

Nom de la màquina: more�/etc/hostname

• Adreça�d'Internet (IP address): està composta per quatre nombres en el

rang 0-255 separats per punts (per exemple, 192.168.0.1), i s'utilitza uni-

versalment per a identificar els ordinadors sobre una xarxa o Internet. La

translació de noms en adreces IP la fa un servidor DNS (domain name sys-

tem), que transforma els noms de node (llegibles per humans) en adreces

IP (aquest servei el fa una aplicació denominada named).

Nota

Adreça IP de la màquina: more/etc/hosts

GNUFDL • PID_00167526 13 Administració de xarxa

• Port (port): identificador numèric de la bústia en un node que permet que

un missatge (TCP, UDP) pugui ser llegit per una aplicació concreta dins

d'aquest node (per exemple, dues màquines que es comuniquin per telnet

ho faran pel port 23, però aquestes mateixes màquines poden tenir una

comunicació FTP pel port 21). Es poden tenir diferents aplicacions comu-

nicant-se entre dos nodes per mitjà de diferents ports simultàniament.

Nota

Ports preassignats en Unix:more�/etc/services. Aquestaordre mostra els ports prede-finits per ordre, i segons si su-porten TCP o UDP.

• Node�encaminador (passarel·la o gateway): és un node que fa encamina-

ments (transferència de dades routing). Un encaminador o router, segons

les seves característiques, podrà transferir informació entre dues xarxes de

protocols similars o diferents, i pot ser, a més, selectiu.

Nota

Visualització de la configuracióde l'encaminament: netstat�-r.

• Domain� name� system (DNS): permet assegurar un únic nom i faci-

litar l'administració de les bases de dades que fan la translació entre

nom i adreça d'Internet, i s'estructuren en forma d'arbre. Per a això,

s'especifiquen dominis separats per punts, el més alt (de dreta a esquerra)

dels quals descriu una categoria, institució o país (com, comercial; edu,

educació; gov, governamental; mil, militar (govern); org, sense finalitat de

lucre; dues lletres per a un país, o en casos especials tres lletres, com cat,

llengua i cultura catalana...). El segon nivell representa l'organització, el

tercer i els restants els departaments, seccions o divisions dins d'una or-

ganització (per exemple, www.uoc.edu o [email protected]). Els dos

primers noms (de dreta a esquerra, uoc.edu en el primer cas, remix.es en el

segon, han de ser assignats (aprovats) per l'SRI-NIC (òrgan mundial gestor

d'Internet) i els restants poden ser configurats o assignats per la institució.

• DHCP,�bootp: DHCP i bootp són protocols que permeten a un node cli-

ent obtenir informació de la xarxa (com l'adreça IP del node). Moltes or-

ganitzacions amb gran quantitat de màquines utilitzen aquest mecanisme

per a facilitar l'administració a grans xarxes o on hi ha una gran quantitat

d'usuaris mòbils.

Nota

El nostre domini i servidor deDNS: more�/etc/default�do-main;�more�/etc/resolv.conf.

• ARP,�RARP: en algunes xarxes (com per exemple IEEE 802 LAN, que és

l'estàndard per a Ethernet), les adreces IP són descobertes automàticament

per mitjà de dos protocols membres d'IPS: ARP20 i RARP21. ARP utilitza

missatges de difusió (broadcast messages) per a determinar l'adreça Ethernet

(especificació MAC de la capa 3 del model OSI) corresponent a una adreça

de xarxa particular (IP). RARP utilitza missatges de difusió (missatge que

arriba a tots els nodes) per a determinar l'adreça de xarxa associada amb

una adreça de maquinari en particular. RARP és especialment important

en màquines sense disc, en les quals l'adreça de xarxa generalment no es

coneix en el moment de l'inici (boot).

• Biblioteca�de�sòcols: a Unix tota la implementació de TCP/IP forma part

del nucli del sistema operatiu (o bé a dins o com un mòdul que es carrega

(20)De l'anglès address resolutionprotocol.

(21)De l'anglès reverse address reso-lution protocol.

Nota

Taules d'ARP: ARP�a�NomNo-de.

GNUFDL • PID_00167526 14 Administració de xarxa

en el moment de l'inici, com el cas de GNU/Linux amb els controladors

de dispositius).

La manera d'utilitzar-les per part d'un programador és per mitjà de l'API22 que

implementa aquest sistema operatiu. Per a TCP/IP, l'API més comuna és la

Berkeley Socket Library (Windows utilitza una biblioteca equivalent que es diu

Winsocks). Aquesta biblioteca permet crear un punt de comunicació (sòcol),

associar-lo a una adreça d'un node remot/port (vincle) i oferir el servei de co-

municació (per mitjà de connect, listen, accept, send, sendto, recv, recvfrom, per

exemple). La biblioteca proveeix, a més de la forma més general de comuni-

cació (família AF INET), comunicacions més optimitzades per a casos en els

quals els processos es comuniquen a la màquina mateixa (família AF Unix).

En GNU/Linux, la biblioteca de sòcols és part de la biblioteca estàndard de C,

Libc (Libc6 en les versions actuals), i suporta AF_INET, AF_UNIX, AF_IPX (per

a protocols de xarxes Novell), AF_X25 (per al protocol X.25), AF_ATMPVC-

AF_ATMSVC (per al protocol ATM) i AF_AX25, F_NETROM, AF_ROSE (per a

l'Amateur Radio Protocol).

(22)De l'anglès application program-ming interface.

GNUFDL • PID_00167526 15 Administració de xarxa

3. Com s'assigna una adreça d'Internet?

Aquesta adreça és assignada pel SRI-NIC i té dos camps. L'esquerre re-

presenta la identificació de la xarxa i el dret la identificació del node.

Considerant el que hem dit anteriorment (4 nombres entre 0-255, o si-

gui, 32 bits o quatre bytes), cada byte representa o bé la xarxa o bé el

node. La part de xarxa és assignada pel SRI-NIC i la part del node és

assignada per la institució o el proveïdor).

Hi ha algunes restriccions: 0 (per exemple, 0.0.0.0) en el camp de xarxa és re-

servat per a l'encaminament per defecte i 127 (per exemple, 127.0.0.1) és reser-

vat per a l'autoreferència (local loopback o local host), 0 en la part de node es re-

fereix a aquesta xarxa (per exemple, 192.168.0.0) i 255 és reservat per a paquets

de tramesa a totes les màquines (difusió) (per exemple, 198.162.255.255). En

les diferents assignacions es poden tenir diferents tipus de xarxes o adreces:

• Classe�A (xarxa.amfitrió.amfitrió.amfitrió): 1.0.0.1 a 126.254.254.254 (126

xarxes, 16 milions de nodes); defineixen les grans xarxes. El patró binari

és: 0 + 7 bits xarxa + 24 bits de nodes.

• Classe�B (xarxa.xarxa.amfitrió.amfitrió): 128.1.0.1 a 191.255.254.254 (16K

xarxes, 65K nodes); generalment s'utilitza el primer byte de node per a

identificar subxarxes dins d'una institució). El patró binari és 10 + 14 bits

de xarxa + 16 bits de nodes.

• Classe�C (xarxa.xarxa.xarxa.amfitrió): 192.1.1.1 a 223.255.255.254 (2 mili-

ons de bits de xarxes, 254 de nodes). El patró binari és 110 + 21 bits xarxa

+ 8 bits de nodes.

• Classe�D�i�E (xarxa.xarxa.xarxa.amfitrió): 224.1.1.1 a 255.255.255.254, re-

servat per a multidestinació (des d'un node a un conjunt de nodes que

formen part d'un grup) i propòsits experimentals.

Alguns rangs d'adreces han estat reservats perquè no corresponguin a xarxes

públiques, sinó a xarxes privades, i els missatges no seran encaminats per mitjà

d'Internet, cosa que es coneix com a intranets. Aquestes són per a la classe�A des

de 10.0.0.0 fins a 10.255.255.255, classe�B�des�de 172.16.0.0 fins a 172.31.0.0

i classe�C des de 192.168.0.0 fins a 192.168.255.0.

L'adreça de difusió és especial, ja que cada node en una xarxa escolta tots els

missatges (a més de la seva adreça pròpia). Aquesta adreça permet que datagra-

mes, generalment informació d'encaminament (o routing) i missatges d'avís,

Xarxes privades

Màquines que es connectenentre elles sense tenir conne-xió amb l'exterior.

GNUFDL • PID_00167526 16 Administració de xarxa

puguin ser enviats a una xarxa i tots els nodes del mateix segment de xarxa

els puguin llegir. Per exemple, quan ARP busca l'adreça Ethernet corresponent

a una IP, utilitza un missatge de difusió (o broadcast), el qual és enviat a totes

les màquines de la xarxa simultàniament. Cada node a la xarxa llegeix aquest

missatge i compara la IP que es busca amb la pròpia i retorna un missatge al

node que va fer la pregunta si hi ha coincidència.

Dos conceptes complementaris als descrits anteriorment són el de subxarxes

i encaminament entre elles. Subxarxes significa subdividir la part del node en

petites xarxes dins de la mateixa xarxa, per exemple, per a millorar el trànsit.

Una subxarxa pren la responsabilitat d'enviar el trànsit a certs rangs d'adreces

IP i estén el mateix concepte de xarxes A, B, C, però només aplicant aquest

readreçament en la part de node de la IP. El nombre de bits que són interpre-

tats com a identificador de la subxarxa és donat per una màscara de xarxa (o

netmask) que és un nombre de 32 bits (igual que la IP).

Per a obtenir l'identificador de la subxarxa, s'haurà de fer una operació lògi-

ca I (AND) entre la màscara i la IP, la qual cosa donarà la IP de la subxar-

xa. Per exemple, tenim una institució que té una xarxa classe B amb número

172.17.0.0; la seva màscara de xarxa és, per tant, 255.255.0.0. Internament,

aquesta xarxa està formada per petites xarxes (una planta de l'edifici, per exem-

ple). Així, el rang d'adreces és reassignat en 20 subxarxes (plantes, per a nosal-

tres): des de 172.17.1.0 fins a 172.17.20.0. El punt que connecta totes aquestes

plantes (xarxa troncal) té la seva pròpia adreça, com per exemple 172.17.1.0.

Aquestes subxarxes comparteixen la mateixa IP de xarxa, mentre que la tercera

és utilitzada per a identificar cada una de les subxarxes que hi ha a dins (per

això s'utilitzarà una màscara de xarxa 255.255.255.0).

El segon concepte, encaminament, representa la manera com els missatges

són enviats per mitjà de les subxarxes. Per exemple, tenim tres departaments

amb subxarxes Ethernet:

• Compres (subxarxa 172.17.2.0).

• Clients (subxarxa 172.17.4.0).

• Recursos humans, RH, (subxarxa 172.17.6.0).

• Xarxa troncal amb FFDI (subxarxa 172.17.1.0).

Per a encaminar els missatges entre els ordinadors de les tres xarxes es necessi-

taran tres portes d'intercanvi (passarel·les), que tindran cada una dues interfí-

cies de xarxa per a canviar entre Ethernet i FFDI. Seran les següents:

• CompresGW IP:172.17.2.1 i 172.17.1.1,

• ClientsGW IP:172.17.4.1 i 172.17.1.2

• RHGW IP:172.17.6.1 i 172.17.1.3, és a dir, una IP cap al costat de la sub-

xarxa i una altra cap a la xarxa troncal.

GNUFDL • PID_00167526 17 Administració de xarxa

Quan s'envien missatges entre màquines de compres, no és necessari sortir a

la passarel·la, ja que el protocol TCP/IP trobarà la màquina directament. El

problema és quan la màquina Compres0 vol enviar un missatge a RH3. El mis-

satge ha de circular per les dues passarel·les respectives. Quan Compres0 "veu"

que RH3 és en una altra xarxa, envia el paquet per mitjà de la passarel·la Com-

presGW, que al seu torn l'enviarà a RHGW, que al seu torn l'enviarà a RH3.

L'avantatge de les subxarxes és clar, ja que el trànsit entre totes les màquines

de compres, per exemple, no afectarà les màquines de clients o de recursos

humans (si bé significa un plantejament més complex i car a l'hora de disse-

nyar i construir la xarxa).

Figura 1. Configuració de segments i passarel·les en una Intranet

IP utilitza una taula per a fer l'encaminament dels paquets entre les diferents

xarxes i en la qual hi ha un encaminament per defecte associat a la xarxa

0.0.0.0. Totes les adreces que coincideixen amb aquesta, ja que cap dels 32 bits

no són necessaris, són enviades per la passarel·la per defecte (default gateway)

cap a la xarxa indicada. Sobre CompresGW, per exemple, la taula podria ser:

Adreça Màscara Passarel·la Interfície

172.17.1.0 255.255.255.0 - fddi0

172.17.4.0 255.255.255.0 172.17.1.2 fddi0

172.17.6.0 255.255.255.0 172.17.1.3 fddi0

0.0.0.0 0.0.0.0 172.17.2.1 fddi0

172.17.2.0 255.255.255.0 - eth0

El "-" significa que la màquina està directament connectada i no necessita en-

caminament. El procediment per a identificar si es fa l'encaminament o no

es du a terme és per mitjà d'una operació molt simple amb dos AND lògics

(subxarxa AND màscara i origen AND màscara) i una comparació entre els dos

GNUFDL • PID_00167526 18 Administració de xarxa

resultats. Si són iguals no hi ha encaminament, sinó que s'ha d'enviar la mà-

quina definida com a passarel·la a cada màquina perquè faci l'encaminament

del missatge.

Per exemple, un missatge de la 172.17.2.4 cap a la 172.17.2.6 significarà:

172.17.2.4 AND 255.255.255.0 = 172.17.2.0

172.17.2.6 AND 255.255.255.0 = 172.17.2.0

Com els resultats són iguals, no hi haurà encaminament. En canvi, si fem el

mateix amb 172.17.2.4 cap a 172.17.6.6 podem veure que hi haurà un enca-

minament per mitjà del 172.17.2.1 amb un canvi d'interfície (eth0 a ffdi0) a la

172.17.1.1 i d'aquesta cap a la 172.17.1.2 amb un altre canvi d'interfície (fddi0

a eth0) i després cap a la 172.17.6.6. L'encaminament, per defecte, s'utilitzarà

quan cap regla no satisfaci la coincidència. En cas que dues regles coincidei-

xin, s'utilitzarà la que ho faci de manera més precisa, és a dir, la que menys

zeros tingui. Per a construir les taules d'encaminament, es pot utilitzar l'ordre

route durant l'arrencada de la màquina, però si és necessari utilitzar regles més

complexes (o encaminament automàtic), es pot utilitzar el RIP23 o, entre sis-

temes autònoms, l'EGP24 o també el BGP25. Aquests protocols s'implementen

en l'ordre gated.

Per a instal·lar una màquina sobre una xarxa existent, és necessari, per

tant, disposar de la informació següent obtinguda del proveïdor de xar-

xa o de l'administrador: adreça IP del node, adreça de la xarxa IP, adreça

de difusió, adreça de màscara de xarxa, adreça d'encaminador, adreça

del DNS.

Si es construeix una xarxa que mai no tindrà connexió a Internet, es poden

escollir les adreces que es prefereixin, però és recomanable mantenir un or-

dre adequat en funció de la mida de xarxa que es vulgui tenir, i per a evitar

problemes d'administració dins de la xarxa. A continuació, es veurà com es

defineix la xarxa i el node per a una xarxa privada (cal ser acurat, ja que si es

té la màquina connectada a la Xarxa, es podria perjudicar un altre usuari que

tingués assignada aquesta adreça).

(23)De l'anglès routing informationprotocol.

(24)De l'anglès external gatewayprotocol.

(25)De l'anglès border gateway pro-tocol.

GNUFDL • PID_00167526 19 Administració de xarxa

4. Com s'ha de configurar la xarxa?

4.1. Configuració de la interfície (NIC)

Una vegada carregat el nucli de GNU/Linux, aquest executa l'ordre init, que,

al seu torn, llegeix l'arxiu de configuració /etc/inittab i comença el procés

d'inicialització. Generalment, inittab té seqüències com ara si::sysinit:/etc/

init.d/boot, que representa el nom de l'arxiu d'instruccions (script) que controla

les seqüències d'inicialització. Generalment aquest script crida altres scripts,

entre els quals hi ha la inicialització de la xarxa.

Exemple

En Debian s'executa etc/init.d/network per a la configuració de la interfície de xarxa ien funció del nivell d'arrencada; per exemple, en el 2 s'executaran tots els fitxers S* deldirectori /etc/rc2.d (que són enllaços al directori /etc/initd), i en el nivell d'apagat, totsels K* del mateix directori. D'aquesta manera, l'script està només una vegada (/etc/init.d)i d'acord amb els serveis que volem en aquest estat es crea un enllaç en el directori cor-responent a la configuració del node estat.

Els dispositius de xarxa es creen automàticament quan s'inicialitza el maqui-

nari corresponent. Per exemple, el controlador d'Ethernet crea les interfícies

eth[0..n] seqüencialment quan es localitza el maquinari corresponent.

A partir d'aquest moment, es pot configurar la interfície de xarxa, la qual co-

sa implica dos passos: assignar l'adreça de xarxa al dispositiu i inicialitzar els

paràmetres de la xarxa al sistema. L'ordre utilitzada per a això és ifconfig (in-

terface configure). Un exemple serà:

ifconfig eth0 192.168.110.23 netmask 255.255.255.0 up

Això indica configurar el dispositiu eth0 amb adreça IP 192.168.110.23 i la

màscara de xarxa 255.255.255.0. up indica que la interfície passarà a l'estat

actiu (per a desactivar-la s'hauria d'executar ifconfig�eth0�down). L'ordre as-

sumeix que si alguns valors no s'indiquen són presos per defecte. En aquest

cas, el nucli configurarà aquesta màquina com a tipus C i configurarà la xarxa

amb 192.168.110.23 i l'adreça de difusió amb 192.168.110.255. Per exemple:

ifconfig eth0 192.168.110.23 netmask 255.255.255.0 up

Hi ha ordres com ifup i ifdown, que permeten configurar i desactivar la xarxa

de manera més simple utilitzant l'arxiu /etc/network/interfaces per a obtenir

tots els paràmetres necessaris (consulteu man interfaces per a la sintaxi).

Nota

Consulteu man�ifconfig per ales diferents opcions de l'ordre.

GNUFDL • PID_00167526 20 Administració de xarxa

En Debian, a fi de facilitar la configuració de la xarxa, hi ha una altra manera

de configurar la xarxa (considerada d'alt nivell), que utilitza les ordres esmen-

tades anteriorment ifup, ifdown i l'arxiu /etc/network/interfaces. Si es decideix

utilitzar aquestes ordres, no s'hauria de configurar la xarxa a baix nivell, ja que

aquestes instruccions són suficients per a configurar o desactivar la xarxa.

Per a modificar els paràmetres26 de xarxa de la interfície eth0, es pot fer:

ifdown eth0

per a tots els serveis de xarxa sobre eth0

vi /etc/network/interfaces

editeu i modifiqueu els que necessiteu

ifup eth0

posa en marxa els serveis de xarxa sobre eth0

(26)Consulteu man interfaces a la secció 5 del manual per a més informació del format.

Suposem que volem configurar sobre Debian una interfície eth0 que té

una adreça IP fixa 192.168.0.123 i amb 192.168.0.1 com a porta d'enllaç

(passarel·la). Cal editar /etc/network/interfaces de manera que inclogui

una secció com la següent:

iface eth0 inet static

address 192.168.0.123

netmask 255.255.255.0

gateway 192.168.0.1

Si tenim instal·lat el paquet resolvconf podem afegir línies per a especificar

la informació relativa al DNS. Per exemple:

iface eth0 inet static

address 192.168.0.123

netmask 255.255.255.0

gateway 192.168.0.1

dns-search remix.org

dns-nameservers 195.238.2.21 195.238.2.22

Després que s'activi la interfície, els arguments de les opcions següents

dns-search i dns-nameservers queden disponibles per a la inclusió a

resolv.conf. L'argument remix.org de l'opció dns-search correspon a

l'argument de l'opció search a resolv.conf i els arguments 195.238.2.21

i 195.238.2.22 de l'opció dns-nameservers corresponen als arguments de

les opcions nameserver a resolv.conf. També es pot configurar la xarxa a

baix nivell per mitjà de l'ordre ip (que és equivalent a ifconfig i route). Si bé

Nota: resolv.conf

Podeu consultar el manual pera veure man resolv.conf.

GNUFDL • PID_00167526 21 Administració de xarxa

aquesta ordre és molt més versàtil i potent (permet establir túnels, encamina-

ments alternatius, etc.), és més complexa i es recomana utilitzar els procedi-

ments anteriors per a configuracions bàsiques de la xarxa.

4.1.1. Configuració de xarxa en distribucions de tipus Fedora

Red Hat i Fedora utilitzen estructures de fitxers diferents per a la configuració

de la xarxa: /etc/sysconfig/network. Per exemple, per a la configuració estàtica

de la xarxa:

NETWORKING=yes

HOSTNAME=my-hostname

Nom de l'ordinador definit per l'ordre hostname

FORWARD_IPV4=true

True per a NAT, tallafocs, passarel·les i encaminadors.

False per a qualsevol altre cas

GATEWAY="XXX.XXX.XXX.YYY"

Adreça IP de la porta de sortida a Internet.

Per a la configuració amb DHCP s'ha de treure la línia de gateway, ja que serà

assignada pel servidor. I en cas d'incorporar NIS cal agregar una línia amb el

servidor de domini: NISDOMAIN=NISProject1.

Per a configurar la interfície eth0 en l'arxiu /etc/sysconfig/network-scripts/

ifcfg-eth0 (reemplaçar les X amb els valors adequats):

DEVICE=eth0

BOOTPROTO=static

BROADCAST=XXX.XXX.XXX.255

IPADDR=XXX.XXX.XXX.XXX

NETMASK=255.255.255.0

NETWORK=XXX.XXX.XXX.0

ONBOOT=yes Activarà la xarxa en l'arrencada

També a partir d'FC3 es poden agregar:

TYPE=Ethernet

HWADDR=XX:XX:XX:XX:XX:XX

GATEWAY=XXX.XXX.XXX.XXX

IPV6INIT=no

USERCTL=no

PEERDNS=yes

O, si no, per a la configuració del DHCP:

DEVICE=eth0

ONBOOT=yes

GNUFDL • PID_00167526 22 Administració de xarxa

BOOTPROTO=dhcp

Per a deshabilitar DCHP, cal canviar BOOTPROTO=dhcp per BOOTPROTO=none.

Qualsevol canvi en aquests fitxers implicarà reiniciar els serveis amb service

network restart (o si no /etc/init.d/network restart).

Per a canviar el nom de l'amfitrió s'han de seguir aquests tres passos:

1) L'ordre hostname�nom-nou.

2) Canviar la configuració de la xarxa a /etc/sysconfig/network editant:

HOSTNAME=nom-nou.

3) Restaurant els serveis (o reiniciant):

• service network restart (o /etc/init.d/network restart).

• Reiniciant l'escriptori passant a mode consola amb init 3 i canviant a

mode GUI amb init 5.

Verificar si el nom tampoc no està donat d'alta a /etc/hosts. El

nom de l'ordinador es pot canviar en temps d'execució amb sysctl -w

kernel.hostname="nom-nou".

4.1.2. Configuració d'una xarxa Wi-Fi (sense fil)

Per a la configuració d'interfícies Wi-Fi s'utilitzen bàsicament el paquet wire-

less-tools (a més d'ifconfig o ip). Aquest paquet utilitza l'ordre

iwconfig per a configurar una interfície sense fil, però també es pot fer per mitjà

de l'arxiu /etc/network/interfaces.

Exemple: Configurar una Wi-Fi en Debian (similar en FC)

Suposem que volem configurar una targeta de xarxa sense fil Intel Pro/Wireless

2200BG (molt comuna en una gran quantitat de portàtils, com per exemple

Dell, HP...). Normalment, el programari que controla les targetes es divideix

en dues parts: el mòdul programari, que es carregarà en el nucli per mitjà de

l'ordre modprobe, i el microprogramari, que és el codi que es carregarà a la targeta

i que ens dóna el fabricant (consulteu la pàgina d'Intel per a aquest model).

Com estem parlant de mòduls, és interessant utilitzar el paquet de Debian mo-

dule-assistant, que ens permet crear i instal·lar fàcilment un mòdul (una altra

opció seria instal·lar les fonts i crear el mòdul corresponent). El programari

(el trobem a la pàgina del fabricant, i el denomina ipw2200) el compilarem i

instal·larem amb l'ordre m-a del paquet module-assistant.

aptget install module-assistant instal·lació del paquet

m-a -t update

GNUFDL • PID_00167526 23 Administració de xarxa

m-a -t -f get ipw2200

m-a -t -build ipw2200

m-a -t install ipw2200

Des de l'adreça indicada pel fabricant (en la seva documentació), es descarrega

la versió del microprogramari compatible amb la versió del controlador, en el

nostre cas per al controlador versió 1.8 el microprogramari és el 2.0.4, obtingut

des de la pàgina http://ipw2200.sourceforge.net/firmware.php

I a continuació es descomprimeix i instal·la el microprogramari:

tar xzvf ipw2200fw2.4.tgz C /tmp/fwr/

cp /tmp/fwr/*.fw /usr/lib/hotplug/firmware/

Amb això es copiaran tres paquets (ipw2200-bss.fw, ipw2200-ibss.fw i ipw2200-

sniffer.fw). Després es carrega el mòdul amb modprobe�ipw2200, es reinicia

el sistema (reboot) i després, des de la consola, podem fer dmesg�|�grep�ipw;

aquesta ordre ens mostrarà algunes línies similars a les que es mostren a conti-

nuació, que indicaran que el mòdul està carregat (es pot verificar amb lsmod):

ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, git1.0.8

ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection

...

Després es descarrega el paquet wirelesstools, que conté iwconfig (per exemple,

amb aptget�install�wirelesstools) i executem iwconfig; sortirà una cosa sem-

blant al següent:

eth1 IEEE 802.11b ESSID:"Nombre-de-la-Wifi"

Mode:Managed Frequency:2.437 GHz

Access Point:00:0E:38:84:C8:72

Bit Rate=11 Mb/s TxPower=20 dBm

Security mode:open

...

A continuació, cal configurar l'arxiu de xarxes; per exemple, gedit� /etc/

network/interfaces i afegir la interfície wifi eth1, per exemple:

iface eth1 inet dhcp

pre-up iwconfig eth1 essid "Nom de la Wi-Fi"

pre-up iwconfig eth1 key open XXXXXXXXXX

La línia preup executa l'ordre iwconfig abans d'activar la interfície. Aquesta con-

figuració és per a quan es vol utilitzar un servei en mode DHCP (assignació

automàtica d'IP); s'ha d'utilitzar en comptes de dhcp la paraula static i a més

posar les línies següents, per exemple (com en una targeta de cable):

GNUFDL • PID_00167526 24 Administració de xarxa

address 192.168.1.132

netmask 255.255.255.0

network 192.168.0.0

broadcast 192.168.0.255

gateway 192.168.1.1

Un mètode alternatiu per a configurar la interfície és:

iface eth1 inet dhcp

wireless-essid "Nom de la Wi-Fi"

wireless-key 123456789e

A continuació es pot posar en marxa la xarxa amb ifup eth1 i ens donarà in-

formació sobre la connexió i ens indicarà l'estat i la qualitat de recepció. Per a

buscar (scan) les xarxes Wi-Fi disponibles (punts d'accés) podem utilitzar iw-

list�scan, que ens mostrarà informació de les xarxes disponibles, i si ens volem

connectar a una de diferent, es pot utilitzar l'ordre iwconfig per a canviar de

xarxa o punt d'accés (access point).

4.2. Configuració del sistema de resolució de noms

El pas següent és configurar el sistema de resolució de noms (name resolver),

que converteix noms com ara pirulo.remix.com a 192.168.110.23. L'arxiu /etc/

resolv.conf és l'utilitzat per a tal finalitat. El format és molt simple (una línia

de text per sentència). Hi ha tres paraules clau per a tal finalitat: domain (do-

mini local), search (llista de dominis alternatius) i name server (l'adreça IP del

servidor de noms de domini).

4.2.1. Exemple de l'arxiu /etc/resolv.conf

domain remix.com

search remix.com piru.com

name server 192.168.110.1

name server 192.168.110.65

Aquesta llista de servidors de nom sovint depèn de l'entorn de xarxa, que pot

canviar depenent d'on sigui o es connecti la màquina. Els programes de conne-

xió a línies telefòniques (pppd) o obtenció d'adreces IP automàticament (dh-

client) són capaços de modificar resolv.conf per a inserir o eliminar ser-

vidors, però aquesta característica no sempre funciona adequadament i de ve-

gades pot entrar en conflicte i generar configuracions errònies. El paquet re-

solvconf (encara en Unstable) soluciona de manera adequada el problema

i permet una configuració simple dels servidors de nom de manera dinàmi-

ca. resolvconf està dissenyat per a funcionar sense que sigui necessària cap

configuració manual; no obstant això, el paquet és bastant nou i pot requerir

alguna intervenció per a aconseguir que funcioni adequadament.

Nota

Per a més informació sobre elpaquet resolvconf, podeuconsultar el web explicatiu:http://packages.debian.org/unstable/net/resolvconf

GNUFDL • PID_00167526 25 Administració de xarxa

Un arxiu important és /etc/host.conf, que permet configurar el comportament

del sistema de resolució de noms. La seva importància és que indica on es resol

primer l'adreça o el nom d'un node. Aquesta consulta es pot fer al servidor

DNS o en taules locals dins de la màquina actual (/etc/hosts).

4.2.2. Exemple de l'arxiu /etc/host.conf

order hosts,bind

multi on

Aquesta configuració indica que primer es verifica /etc/hosts abans de

sol·licitar una petició al DNS i també indica (2a. línia) que retorni totes les

adreces vàlides que hi hagi a /etc/hosts. Per això, l'arxiu /etc/hosts és on es

col·loquen les adreces locals i també serveix per a accedir a nodes sense haver

de consultar el DNS.

La consulta és molt més ràpida, però té el desavantatge que si el node canvia,

l'adreça serà incorrecta. En un sistema correctament configurat, només hauran

d'aparèixer el node local i una entrada per a la interfície loopback.

4.2.3. Exemple de l'arxiu /etc/hosts

127.0.0.1 localhost loopback

192.168.1.2 pirulo.remix.com pirulo

Per al nom d'una màquina es poden utilitzar àlies, fet que significa que la

màquina es pot anomenar de diferents maneres per a la mateixa adreça IP.

Amb referència a la interfície loopback, aquest és un tipus especial d'interfície

que permet fer connexions amb si mateixa (per exemple, per a verificar que

el subsistema de xarxa funciona sense accedir a la xarxa). Per defecte, l'adreça

IP 127.0.0.1 ha estat assignada específicament al loopback (una ordre telnet

127.0.0.1 connectarà amb la màquina mateixa). La configuració és molt fàcil

(la fan generalment els scripts d'inicialització de xarxa).

4.2.4. Exemple del loopback

ifconfig lo 127.0.0.1

route add host 127.0.0.1 lo

En la versió 2 de la biblioteca GNU hi ha una canvi important respecte a

la funcionalitat de l'arxiu host.conf. Aquesta millora inclou la centralització

d'informació de diferents serveis per a la resolució de noms, la qual cosa pre-

senta grans avantatges per a l'administrador de xarxa. Tota la informació de

consulta de noms i serveis ha estat centralitzada en l'arxiu /etc/nsswitch.conf,

el qual permet a l'administrador configurar l'ordre i les bases de dades de ma-

nera molt simple. En aquest arxiu cada servei apareix en una línia amb un

conjunt d'opcions, en què, per exemple, hi ha la resolució de noms de no-

Nota

Exemple de nsswitch.conf:hosts: dns files...networks: files

GNUFDL • PID_00167526 26 Administració de xarxa

de. S'hi indica que l'ordre de consulta de les bases de dades per a obtenir la

IP del node o el seu nom serà primer el servei de DNS, que utilitzarà l'arxiu

/etc/resolv.conf per a determinar la IP del node DNS, i en cas que no el pugui

obtenir, utilitzarà el de les bases de dades locals (/etc/hosts). Altres opcions

per a això podrien ser nis, nisplus, que són altres serveis d'informació que es

descriuran en unitats posteriors. També es pot controlar per mitjà d'accions

(entre []) el comportament de cada consulta, com per exemple:

hosts: xfn nisplus dns [NOTFOUND = return] files

Això indica que quan es faci la consulta al DNS, si no hi ha un registre per a

aquesta consulta, retorni un zero al programa que la va fer. Es pot utilitzar el

"!" per a negar l'acció, com per exemple:

hosts dns [!UNAVAIL = return] files

4.3. Configuració de l'encaminament

Un altre aspecte que cal configurar és l'encaminament. Si bé hi ha el tòpic so-

bre la seva dificultat, generalment es necessiten uns requisits d'encaminament

molt simples. En un node amb múltiples connexions, l'encaminament con-

sisteix a decidir on cal enviar i què es rep. Un node simple (una sola connexió

de xarxa) també necessita encaminament, ja que tots els nodes disposen d'un

loopback i una connexió de xarxa (per exemple, Ethernet, PPP, SLIP...). Com es

va explicar anteriorment, hi ha una taula anomenada routing table, que conté

files amb diversos camps, però tres són summament importants: adreça de

destinació, interfície per on sortirà el missatge i adreça IP, que efectuarà el pas

següent a la Xarxa (passarel·la).

L'ordre route permet modificar aquesta taula per a fer les tasques

d'encaminament adequades. Quan arriba un missatge, es mira la seva

adreça de destinació, es compara amb les entrades a la taula i s'envia per

la interfície en què l'adreça coincideix millor amb la destinació del pa-

quet. Si una passarel·la és especificada, s'envia a la interfície adequada.

Considerem, per exemple, que el nostre node és en una xarxa de classe C amb

adreça 192.168.110.0 i té una adreça 192.168.110.23; i l'encaminador amb

connexió a Internet és 192.168.110.3. La configuració serà:

• Primer la interfície:

ifconfig eth0 192.168.110.23 netmask 255.255.255.0 up

Nota

Consulta de taulesd'encaminament:route -nnetstat -r

GNUFDL • PID_00167526 27 Administració de xarxa

• Més endavant, cal indicar que tots els paquets amb adreces 192.168.0. *

han de ser enviats al dispositiu de xarxa:

route add -net 192.1 ethernetmask 255.255.255.0 eth0

El -net indica que és una ruta de xarxa, però també es pot utilitzar -host

192.168.110.3. Aquesta configuració permetrà connectar-se a tots els nodes

dins del segment de xarxa (192.1), però què passarà si ens volem connectar

a un altre node fora d'aquest segment? Seria molt difícil tenir totes les entra-

des adequades per a totes les màquines a les quals ens volem connectar. Per a

simplificar aquesta tasca, hi ha el default route, que s'utilitza quan l'adreça de

destinació no coincideix a la taula amb cap de les entrades. Una possibilitat

de configuració seria:

route add default gw 192.168.110.3 eth0

Nota

El gw és la IP o el nom d'una passarel·la o node encaminador.

Una forma alternativa de fer-ho és:

ifconfig eth0 inet down deshabilito la interfície

ifconfig

lo Link encap:Local Loopback

... (no mostrarà cap entrada per a eth0)

route

... (no mostrarà cap entrada en la taula de rutes)

Després s'habilita la interfície amb una nova IP i una nova ruta:

ifconfig eth0 inet up 192.168.0.111 \

netmask 255.255.0.0 broadcast 192.168.255.255

route add -net 10.0.0.0 netmask 255.0.0.0 \

gw 192.168.0.1 dev eth0

La barra (\) indica que l'ordre continua en la línia següent. El resultat:

ifconfig

eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0

inet addr:192.168.0.111 Bcast: 192.168.255.255 Mask:255.255.0.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

...

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

...

route

Kernel IP routing table

GNUFDL • PID_00167526 28 Administració de xarxa

Destination Gateway Genmask Flags Metric Ref Use Iface

192.168.0.0 * 255.255.0.0 U 0 0 0 eth0

10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0

Per a més informació vegeu els manuals de les ordres ifconfig(8) i route(8).

4.4. Configuració d'inetd

El pas següent en la configuració de xarxa és la configuració dels servidors i

serveis que permetran a un altre usuari accedir a la màquina local o als seus

serveis. Els programes servidors utilitzaran els ports per a escoltar les peticions

dels clients, els quals es dirigiran a aquest servei com a IP:port. Els servidors

poden funcionar de dues maneres diferents: standalone (en aquesta mode el

servei escolta el port assignat i sempre està actiu) o per mitjà d'inetd.

L'inetd és un servidor que controla i gestiona les connexions de xarxa

dels serveis especificats en l'arxiu /etc/inetd.conf, el qual, davant d'una

petició de servei, posa en marxa el servidor adequat i li transfereix la

comunicació.

Dos arxius importants necessiten ser configurats de la manera següent: /etc/

services i /etc/inetd.conf. En el primer s'associen els serveis, els ports i el pro-

tocol, i en el segon, quins programes servidors respondran davant d'una peti-

ció a un port determinat. El format de /etc/services és name port/protocol alias,

en què el primer camp és el nom del servei, el segon, el port on atén aquest

servei i el protocol que utilitza, i el següent, un àlies del nom. Per defecte hi

ha una sèrie de serveis que ja estan preconfigurats. A continuació es mostra

un exemple de l'arxiu /etc/services (# indica que el que hi ha a continuació

és un comentari):

tcpmux 1/tcp # TCP port service multiplexer

echo 7/tcp

echo 7/udp

discard 9/tcp sink null

discard 9/udp sink null

systat 11/tcp users

...

ftp 21/tcp

ssh 22/tcp # SSH Remote Login Protocol

ssh 22/udp # SSH Remote Login Protocol

telnet 23/tcp

# 24 - private

smtp 25/tcp mail

...

GNUFDL • PID_00167526 29 Administració de xarxa

L'arxiu /etc/inetd.conf és la configuració per al servei mestre de xarxa (inetd

server daemon). Cada línia conté set camps separats per espais: service socket_type

proto flags user server_path server_args, en què service és el servei descrit a la

primera columna de l'arxiu /etc/services, socket_type és el tipus de sòcol (valors

possibles: stream, dgram, raw, rdm, o seqpacket), proto és el protocol vàlid per a

aquesta entrada (ha de coincidir amb el de l'arxiu /etc/services), flags indica

l'acció per prendre quan hi ha una nova connexió sobre un servei que està

atenent una altra connexió (wait diu a inetd que no posi en marxa un nou

servidor, i nowait significa que inetd ha de posar en marxa un nou servidor).

user serà l'usuari amb el qual s'identificarà qui ha posat en marxa el servei,

server_path és el directori on es troba el servidor i server_args són arguments

possibles que seran passats al servidor. Un exemple d'algunes línies de l'arxiu

/etc/inetd.conf són (cal recordar que després de # hi ha comentaris, per la qual

cosa, si un servei té # abans del nom, significa que no està disponible):

...

telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd

ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd

# fsp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.fspd

shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd

login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind

# exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd ...

...

A partir de Debian Woody 3.0 r1, la funcionalitat d'inetd ha estat reemplaça-

da per xinetd (recomanable), el qual necessita l'arxiu de configuració /etc/

xinetd.conf (vegeu el final del mòdul). Si es vol posar en marxa el servei d'inetd,

s'ha d'executar (i crear els enllaços adequats en els directoris /etc/rcX.d) /etc/

init.d/inetd.real start (vegeu un exemple de configuracions en el punt 15 de

l'apartat 12, "Configuracions avançades i eines").

A més de la configuració d'inetd o xinetd, la configuració típica dels serveis de

xarxa en un entorn d'escriptori o servidor bàsic podria incloure a més:

• ssh: connexió interactiva segura com a reemplaçament de telnet; inclou

dos arxius de configuració, /etc/ssh/ssh_config (per al client) i /etc/ssh/

sshd_config (per al servidor).

• exim: agent de transport de correu (MTA), inclou els arxius de configura-

ció: /etc/exim/exim.conf, /etc/mailname, /etc/alias, /etc/email-addresses.

• fetchmail: dimoni per a descarregar el correu d'un compte POP3, amb

/etc/fetchmailrc.

• procmail: programa per a filtrar i distribuir el correu local, ~/.procmailrc.

Vegeu també

Per a veure més sobre la con-figuració típica dels serveis dexarxa en un entorn d'escriptorio servidor bàsic vegeu el mò-dul de servidors (el mòdul 2)de l'assignatura Administracióavançada de sistemes GNU/Li-nux.

GNUFDL • PID_00167526 30 Administració de xarxa

• tcpd: serveis de filtres de màquines i dominis habilitats i deshabilitats per

a connectar-se al servidor (wrappers); /etc/hosts.allow, /etc/hosts.deny.

• DHCP: servei per a la gestió (servidor) o obtenció d'IP (client), /etc/dhcp3/

dhclient.conf (client), /etc/default/dhcp3-server (servidor), /etc/dhcp3/

dhcpd.conf (servidor).

• CVS: sistema de control de versions concurrents; /etc/cvs-cron.conf, /etc/

cvs-pserver.conf.

• NFS: sistema d'arxius de xarxa; /etc/etc/exports.

• Samba: sistema d'arxius de xarxa i compartició d'impressores en xarxes

Windows; /etc/samba/smb.conf.

• lpr: dimoni per al sistema d'impressió; /etc/printcap (per al sistema lpr, no

per a CUPS).

• Apache i Apache2: servidor de web; /etc/apache/* i /etc/apache2/*.

• squid: servidor de servidor cau; /etc/squid/*.

4.5. Configuració addicional: protocols i xarxes

Hi ha altres arxius de configuració que en la majoria dels casos no s'utilitzen

però que poden ser interessants. /etc/protocols és un arxiu que relaciona iden-

tificadors de protocols amb noms de protocols; així, els programadors poden

especificar els protocols pels seus noms en els programes.

Exemple de l'arxiu /etc/protocols

ip 0 IP # internet protocol, pseudo protocol number #hopopt 0 HOPOPT # IPv6 Hop-by-Hop Option [RFC1883] icmp 1 ICMP # internet control message protocol

L'arxiu /etc/networks té una funció similar a /etc/hosts, però respecte a les xar-

xes indica noms de xarxa amb relació a la seva adreça IP (l'ordre route mostrarà

el nom de la xarxa i no la seva adreça, en aquest cas).

Exemple de l'arxiu /etc/networks

loopnet 127.0.0.0 localnet 192.168.0.0 amprnet 44.0.0.0 ...

GNUFDL • PID_00167526 31 Administració de xarxa

4.6. Aspectes de seguretat

És important tenir en compte els aspectes de seguretat en les connexions a

xarxa, ja que una font d'atacs importants es produeix per mitjà de la xarxa.

Ja se'n parlarà més sobre aquest tema en la unitat corresponent a seguretat;

tanmateix, hi ha unes quantes recomanacions bàsiques que s'han de tenir en

compte per a minimitzar els riscos immediatament abans i després de confi-

gurar la xarxa del nostre ordinador:

a) No activar serveis a /etc/inetd.conf que no s'utilitzaran; inserir un # abans

del nom per a evitar fonts de risc.

b) Modificar l'arxiu /etc/ftpusers per a denegar que certs usuaris puguin tenir

connexió via FTP amb la màquina.

c) Modificar l'arxiu /etc/securetty per a indicar des de quins terminals (un nom

per línia; per exemple, tty1 tty2 tty3 tty4) es permet la connexió del superusuari

(root). Des dels terminals restants, root no es podrà connectar.

d) Utilitzar el programa tcpd. Aquest servidor és un wrapper que permet accep-

tar o negar un servei des d'un determinat node, i es col·loca a /etc/inetd.conf

com a mediador d'un servei. El tcpd verifica unes regles d'accés a dos arxius:

/etc/hosts.allow i /etc/host.deny

Si s'accepta la connexió, posa en marxa el servei adequat passat com a argu-

ment (per exemple, la línia del servei d'FTP mostrada abans a inetd.conf: ftp

stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd).

tcpd primer cerca /etc/hosts.allow i després /etc/hosts.deny. L'arxiu hosts.deny

conté la informació sobre quins són els nodes que no tenen accés a un ser-

vei dins d'aquesta màquina. Una configuració restrictiva és ALL: ALL, ja que

només es permetrà l'accés als serveis des dels nodes declarats a /etc/hosts.allow.

L'arxiu /etc/hosts.equiv permet l'accés a aquesta màquina sense haver

d'introduir una clau d'accés (contrasenya). Es recomana no usar aquest meca-

nisme i aconsellar als usuaris no utilitzar l'equivalent des del compte d'usuari

per mitjà de l'arxiu .rhosts.

En Debian és important configurar /etc/security/access.conf, l'arxiu que in-

dica les regles de qui i des d'on es pot connectar (login) a aquesta màquina.

Aquest arxiu té una línia per ordre amb tres camps separats per ":" del tipus

permís:usuaris:origen. El primer serà un + o − (accés denegat), el segon un nom

d'usuari o usuaris, grup o user@host, i el tercer un nom d'un dispositiu, node,

domini, adreces de node o de xarxes, o ALL.

GNUFDL • PID_00167526 32 Administració de xarxa

Exemple d'access.conf

Aquesta ordre no permet entrades com a root sobre tty1:

ALL EXCEPT root:tty1 ...

Permet accedir a u1, u2, g1 i tots els de domini remix.com:

+:u1 u2 g1 .remix.com:ALL

4.7. Opcions d'IP

Hi ha una sèrie d'opcions sobre el trànsit IP que és convenient esmentar. La

configuració es fa per mitjà de la inicialització de l'arxiu corresponent en el

directori /proc/sys/net/ipv4/. El nom de l'arxiu és el mateix que el de l'ordre i

per a activar-los s'ha de posar un 1 dins de l'arxiu, i un 0 per a desactivar-lo.

Per exemple, si es vol activar ip_forward, s'hauria d'executar:

echo 1 > /proc/sys/net/ipv4/ip_forward

Els més utilitzats són ip_forward, utilitzat per a l'encaminament entre interfí-

cies o amb IP masquerading; ip_default_ttl, que és el temps de vida per a un pa-

quet IP (64 mil·lisegons per defecte); i ip_bootp_agent, variable lògica (boolea-

na) que accepta paquets (o no) amb adreça origen del tipus 0.b.c.d i destinació

d'aquest node, difusió o multidestinació.

Ordres�per�a�la�solució�de�problemes�amb�la�xarxa

Si teniu problemes en la configuració de la xarxa, es pot començar verificant

la sortida de les ordres següents per a obtenir una primera idea:

ifconfig

cat /proc/pci

cat /proc/interrupts

dmesg | more

Per a verificar la connexió a la xarxa, es poden usar les ordres següents (cal tenir

instal·lats netkit-ping, traceroute, dnsutils, iptables i net-tools):

ping uoc.edu # verificar la connexió a Internet

traceroute uoc.edu # buscar paquets IP

ifconfig # verificar la configuració de l'amfitrió

route -n # verificar la configuració de la ruta

dig [@dns.uoc.edu] www.uoc.edu # verificar registres de www.uoc.edu

# sobre el servidor dns.uoc.edu

iptables -L -n |less # verificar filtratge de paquets (nucli >= 2.4)

netstat -a # mostra tots els ports oberts

netstat -l --inet # mostra els ports en escolta

netstat -ln --tcp # mostrar ports TCP en escolta (numèric)

GNUFDL • PID_00167526 33 Administració de xarxa

5. Configuració del DHCP

DHCP són les sigles de Dynamic Host Configuration Protocol. La configuració és

molt simple i serveix perquè, en lloc de configurar cada node d'una xarxa in-

dividualment, es pugui fer de manera centralitzada i l'administració sigui més

fàcil. La configuració d'un client és molt fàcil, ja que només s'ha d'instal·lar

un dels paquets següents: dhcp3-client (versió 3, Internet Software Consor-

tium), dhcpcd (Yoichi Hariguchi i Sergei Viznyuk), pump (Red Hat), i agregar

la paraula dhcp en l'entrada corresponent a la interfície que es vol que funcio-

ni sota el client DHCP (per exemple, /etc/network/interfaces ha de tenir iface

eth0 inet dhcp...).

La configuració del servidor requereix una mica més d'atenció, però no pre-

senta complicacions. Primer, perquè el servidor pugui servir tots els clients

DHCP (incloent-hi Windows), s'han de resoldre algunes qüestions prèvies re-

lacionades amb les adreces de difusió. Per a això, primer el servidor ha de poder

enviar missatges a l'adreça 255.255.255.255, que no és vàlida en GNU/Linux.

Per a provar-ho, executeu:

route add -host 255.255.255.255 dev eth0

Si apareix el missatge 255.255.255.255: Unknown host, s'ha d'afegir l'entrada

següent a /etc/hosts: 255.255.255.255 dhcp, i intentar-ho novament:

route add -host dhcp dev eth0

La configuració de dhcpd es pot fer amb la interfície gràfica linuxconf o bé editar

/etc/dhcpd.conf. Un exemple d'aquest arxiu és:

# Exemple de /etc/dhcpd.conf:

default-lease-time 1200;

max-lease-time 9200;

option domain-name "remix.com";

deny unknown-clients;

deny bootp;

option broadcast-address 192.168.11.255;

option routers 192.168.11.254;

option domain-name-servers 192.168.11.1, 192.168.168.11.2;

subnet 192.168.11.0 netmask 255.255.255.0

{ not authoritative;

range 192.168.11.1 192.168.11.254

host mart {

hardware ethernet 00:00:95:C7:06:4C;

fixed address 192.168.11.146;

GNUFDL • PID_00167526 34 Administració de xarxa

option host-name "mart";

}

host saturn {

hardware ethernet 00:00:95:C7:06:44;

fixed address 192.168.11.147;

option host-name "saturn";

}

}

Això permetrà al servidor assignar el rang d'adreces 192.168.11.1 al

192.168.11.254, tal com es descriu en cada node. Si no hi ha el segment host

{...} corresponent, s'assignen aleatòriament. Les IP són assignades per un temps

mínim de 1.200 segons i màxim de 9.200 (en cas que no hi hagi aquests parà-

metres, s'assignen indefinidament).

Abans d'executar el servidor, s'ha de verificar si tenim el fitxer /var/state/

dhcp/dhcpd.leases (en cas contrari, caldrà crear-lo amb touch� /var/state/

dhcp/dhcpd.leases). Per a executar el servidor: /usr/sbin/dhcpd (o bé po-

sar-lo en els scripts d'inicialització). Amb /usr/sbin/dhcpd�-d�-f es podrà veu-

re l'activitat del servidor sobre la consola del sistema. [Mou01, Rid00, KD00,

Dra99]

GNUFDL • PID_00167526 35 Administració de xarxa

6. Aliàsing d'IP

Hi ha algunes aplicacions en què és útil configurar múltiples adreces IP a un

únic dispositiu de xarxa. Els ISP27 utilitzen freqüentment aquesta característica

per a proveir de característiques personalitzades (per exemple, de World Wide

Web i FTP) als seus usuaris. Per a això, el nucli ha d'estar compilat amb les

opcions de network aliasing i IP (aliasing support).

Després d'instal·lar el nou nucli, la configuració és molt fàcil. Els àlies són

annexats a dispositius de xarxa virtuals associats al nou dispositiu amb un

format com ara:

dispositiu: número virtual

Per exemple:

eth0:0, ppp0:8

Considerem que tenim una xarxa Ethernet que suporta dues subxarxes IP di-

ferents simultàniament i que la nostra màquina hi vol tenir accés directe. Un

exemple de configuració seria:

ifconfig eth0 192.168.110.23 netmask 255.255.255.0 up

route add -net 192.168.110.0 netmask 255.255.255.0 eth0

ifconfig eth0:0 192.168.10.23 netmask 255.255.255.0 up

route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0

Això significa que tindrem dues IP, 192.168.110.23 i 192.168.10.23, per a la

mateixa NIC. Per a esborrar un àlies, cal agregar un "-" al final del nom (per

exemple, ifconfig eth0:0- 0). [Mou01, Ran05]

Un cas típic és que es vulgui configurar una única targeta Ethernet perquè sigui

la interfície de diferents subxarxes IP. Per exemple, suposem que tenim una

màquina que es troba en una xarxa LAN 192.168.0.x/24, i volem connectar

la màquina a Internet usant una adreça IP pública proporcionada amb DHCP,

usant la targeta Ethernet existent.

Per exemple, es pot fer com en l'exemple anterior o també editar l'arxiu /

etc/network/interfaces, de manera que inclogui una secció similar a la

següent:

iface eth0 inet static

address 192.168.0.1

netmask 255.255.255.0

(27)De l'anglès Internet service provi-ders

GNUFDL • PID_00167526 36 Administració de xarxa

network 192.168.0.0

broadcast 192.168.0.255

iface eth0:0 inet dhcp

La interfície eth0:0 és una interfície virtual i, en activar-se, també ho farà el

seu pare eth0.

GNUFDL • PID_00167526 37 Administració de xarxa

7. IP masquerade

L'IP masquerade és un recurs perquè un conjunt de màquines puguin

utilitzar una única adreça IP. Això permet que els nodes ocults puguin

sortir cap a Internet (són els que utilitzen una IP privada; per exemple,

198.162.10.1); però no poden acceptar trucades o serveis de l'exterior

directament, sinó per mitjà de la màquina que té la IP real.

Això significa que alguns serveis no funcionen (per exemple, talk) i d'altres

han de ser configurats en mode PASV (passiu) perquè funcionin (per exem-

ple, FTP). Tanmateix, WWW, telnet o IRC funcionen adequadament. El nu-

cli ha d'estar configurat amb les opcions següents: network firewalls, TCP/IP

networking, IP:forwarding/gatewaying, IP:masquerading. Normalment, la confi-

guració més comuna és disposar d'una màquina amb una connexió SLIP o PPP

i tenir un altre dispositiu de xarxa (per exemple, una targeta Ethernet) amb

una adreça de xarxa reservada. Com vam veure, i d'acord amb l'RFC 1918, es

poden utilitzar com a IP privades els rangs d'adreces següents (IP/màscara):

• 10.0.0.0/255.0.0.0,

• 172.16.0.0/255.240.0.0,

• 192.168.0.0/255.255.0.0.

Els nodes que han de ser ocultats (masqueraded) seran dins d'aquesta segona

xarxa. Cada una d'aquestes màquines hauria de tenir l'adreça de la màquina

que fa el masquerade, com a passarel·la per defecte o encaminador. Sobre la

màquina esmentada podem configurar:

• Ruta de xarxa per a Ethernet considerant que la xarxa té un IP=192.168.1.0/

255.255.255.0:

route add -net 192.168.1.0 netmask 255.255.255.0 eth0

• Ruta per defecte per a la resta d'Internet:

route add default ppp0

• Tots els nodes sobre la xarxa 192.168.1/24 seran masqueraded:

ipchains -A forward -s 192.168.1.0/24 -j MASQ

GNUFDL • PID_00167526 38 Administració de xarxa

• Si s'utilitza iptables sobre un nucli (o kernel) 2.4 o superior:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Consulteu les referències i la unitat que tracta sobre la seguretat de la infor-

mació d'ipchains i iptables. [Ran05, KD00]

GNUFDL • PID_00167526 39 Administració de xarxa

8. NAT amb el nucli 2.2 o superiors

La IP Network Address Translation (NAT) és el reemplaçament que deixa obso-

letes les prestacions d'IP masquerading en GNU/Linux, i que aporta noves pres-

tacions al servei. Dins de les millores introduïdes en la pila de TCP/IP del nucli

2.2 de GNU/Linux tenim que el NAT forma part del nucli. Per a utilitzar-lo,

és necessari que el nucli es compili amb CONFIG_IP_ADVANCED_ROUTER,

CONFIG_IP_MULTIPLE_TABLES i CONFIG_IP_ROUTE_NAT. I si es necessita

control exhaustiu de les regles NAT (per exemple, per a activar el tallafocs) ha

d'estar activat també CONFIG_IP_FIREWALL i CONFIG_IP_ROUTE_FWMARK.

Per a treballar amb aquestes noves característiques, és necessari usar el progra-

ma ip (inclòs en les distribucions més importants a partir de la versió 2.4 del

kernel http://es.wikipedia.org/wiki/Iproute2). Llavors, per a traslladar adreces

de paquets d'entrada es pot utilitzar:

ip route add nat <extaddr>[/<masklen>] via <intaddr>

Això farà que un paquet d'entrada destinat a ext.-addr (l'adreça visible des de

fora d'Internet) es transcriu la seva adreça destinació a int-addr (l'adreça de la

seva xarxa interna per mitjà de la passarel·la o tallafocs). El paquet s'encamina

d'acord amb la taula local d'encaminament. Es poden traslladar adreces sim-

ples o blocs. Per exemple:

ip route add nat 240.0.11.34 via 192.109.0.2

ip route add nat 240.0.11.32/27 via 192.109.0.0

El primer fa que l'adreça interna 192.109.0.2 sigui accessible com a

240.0.11.34. El segon resitua (remapping) el bloc 192.109.0.0-31 a 240.0.11.32-

63. En aquest cas s'han utilitzat com a exemple translacions a adreces de la

classe DE, com ara 240.0.*.*, a fi de no utilitzar cap adreça pública. L'usuari

haurà de reemplaçar aquestes adreces (240.0.11.34 i 240.0.11.32-63) per les

adreces públiques corresponents a les quals vulgui fer la translació. [Ran05]

GNUFDL • PID_00167526 40 Administració de xarxa

9. Com cal configurar una connexió DialUP i PPP?

Si bé avui dia és poc habitual treballar amb mòdem, ja que es tenen solucions

d'ASDL amb preus i amplada de banda millors, es farà una petita introducció

sobre la configuració d'una connexió de marcatge sobre PPP en GNU/Linux,

que és molt simple.

PPP,28 que permet fer IP-Links entre dos ordinadors amb un mòdem (heu de

considerar que ha de ser un mòdem suportat per GNU/Linux, ja que no tots,

especialment els interns, coneguts com a winmodems, es poden configurar, ja

que molts necessiten programari addicional per a establir la comunicació).

[Vas00, Law07, Sec00]

Com a passos previs s'ha de disposar de la informació següent: l'init-string del

mòdem (normalment no és necessari, però si es necessita i no en tenim de

disponible, es pot utilitzar ATZ, que funciona en la majoria dels mòdems, o es

poden consultar llistes especialitzades d'init-strings).

A més, necessitarem les dades de l'ISP: identificació de connexió (login name),

clau (contrasenya) i número de telèfon. Seria aconsellable tenir adreces de DNS,

però és opcional en les versions actuals de pppd. Cal verificar a més que el mò-

dem estigui correctament connectat. Amb un mòdem extern s'ha d'executar

echo > /dev/ttyS0 i mirar els llums del mòdem per si tenen activitat. En cas con-

trari, cal intentar-ho amb ttyS1 per si el mòdem està connectat al segon port

sèrie. Amb un mòdem intern cal consultar el manual de maquinari suportat

per a veure si aquest mòdem pot ser reconegut per GNU/Linux, i en cas afir-

matiu, potser cal reconfigurar el nucli per a utilitzar-lo. També podem utilitzar

cat /proc/pci per si es troba en el bus PCI. [PPP00]

La manera més fàcil de configurar ara el mòdem és per mitjà del paquet kppp

(cal instal·lar els paquets kdenetwork-ppp* i ppp*). Sobre un terminal, executeu

/usr/bin/kppp. Sobre la finestra, completeu les opcions següents:

• Accounts → New Connection

• Dial → Authentication → 'PAP/CHAP'

• Store Password → yes

• IP → Dynamic IP Address

• Autoconfigure hostname → No

• Gateway → Default Gateway → Assign the Default Route

• DNS → Configuration Automatic → Disable existing DNS

• Device → ttyS1(com1) o ttyS2 (com2)

• Modem → Query Modem (per a veure els resultats; si no obteniu resultats,

canvieu el dispositiu ttySx).

(28)De l'anglès point to point proto-col.

GNUFDL • PID_00167526 41 Administració de xarxa

Entrarem nom d'entrada (o login) i contrasenya, i estarem connectats a Inter-

net (per a verificar la connexió es pot executar ping www.google.com, per exem-

ple). Aquí s'ha utilitzat el paquet kppp, però igualment es podria utilitzar linux-

conf o gnomeppp indistintament.

Una manera ràpida de configurar pppd en Debian consisteix a usar el programa

pppconfig, que ve amb el paquet del mateix nom. pppconfig configura els

arxius com els anteriors després de formular preguntes a l'usuari per mitjà

d'una interfície de menús. Una altra opció diferent per a usar pppd consisteix

a executar-lo des de wvdial, que ve amb el paquet wvdial. En comptes de

fer que pppd executi chat per a marcar i negociar la connexió, wvdial fa el

marcatge, la negociació inicial i després inicia pppd perquè faci la resta. En

la majoria dels casos donant només el número telefònic, el nom d'usuari i la

contrasenya, wvdial aconsegueix establir la connexió.

Una vegada configurat PPP perquè funcioni, per exemple amb el_meu _isp,

cal editar /etc/network/interfaces, de manera que inclogui una secció com la

següent (les ordres ifup, ifdown utilitzen les instruccions pon i poff per a confi-

gurar interfícies PPP):

iface ppp0 inet ppp

provider el_meu_isp

amb aquesta secció, ifup ppp0 fa:

posa el_meu_isp

Actualment no és possible usar ifup-down per a fer una configuració auxi-

liar de les interfícies PPP. Com pon desapareix abans que pppd hagi acabat

d'establir la connexió, ifup executa els scripts up abans que la interfície PPP

estigui preparada per a utilitzar-la. Fins que se solucioni aquest error conti-

nua essent necessari fer una configuració posterior a /etc/ppp/ip-up o /etc/ppp/

ip-up.d/.

Molts proveïdors de serveis d'Internet (ISP) de banda ampla utilitzen PPP per

a negociar les connexions fins i tot quan les màquines dels clients estan con-

nectades mitjançant Ethernet o xarxes ATM. Això s'aconsegueix mitjançant

PPP sobre Ethernet (PPPoE), que és una tècnica per a l'encapsulament del flux

PPP dins de les trames Ethernet. Suposem que l'ISP es diu el_meu_isp. Primer

cal configurar PPP i PPPoE per a el_meu_isp. La manera més fàcil de fer-ho con-

sisteix a instal·lar el paquet pppoeconf i executar pppoeconf des de la con-

sola. A continuació, cal editar /etc/network/interfaces de manera que inclogui

un fragment com el següent:

iface eth0 inet ppp

provider el_meu_isp

GNUFDL • PID_00167526 42 Administració de xarxa

De vegades sorgeixen problemes amb PPPoE relatius a la unitat de transmissió

màxima (MTU29) en línies DSL30; es pot consultar el DSL-HOWTO per a més

detalls. També s'ha de tenir en compte si el mòdem té un encaminador, per-

què el mòdem/encaminador maneja per si sol la connexió PPPoE i apareix del

costat de la LAN com una simple porta d'enllaç Ethernet a Internet.

(29)De l'anglès maximum transmitunit.

(30)De l'anglès digital subscriber line.

GNUFDL • PID_00167526 43 Administració de xarxa

10.Configuració de la xarxa mitjançant hotplug

El paquet hotplug permet el suport d'arrencada en calent (s'ha de tenir instal·lat

el paquet del mateix nom). El maquinari de xarxa es pot connectar en calent

tant durant l'arrencada, després d'haver inserit la targeta en la màquina (una

targeta PCMCIA, per exemple), com després que una utilitat com discover s'hagi

executat i hagin estat carregats els mòduls necessaris. Quan el nucli detecta

nou maquinari, inicialitza el controlador per al maquinari i després executa

el programa hotplug per a configurar-lo. Si més tard s'elimina el maquinari,

executa novament hotplug amb paràmetres diferents. En Debian, quan es crida

hotplug aquest executa els scripts dels directoris /etc/hotplug/ i /etc/hotplug.d/

. El maquinari de xarxa recentment connectat és configurat per /etc/hotplug/

net.agent. Suposem que la targeta de xarxa PCMCIA ha estat connectada, cosa

que implica que la interfície eth0 està preparada per a utilitzar-la.

/etc/hotplug/net.agent fa el següent:

ifup eth0=hotplug

Llevat que hàgiu afegit una interfície lògica anomenada hotplug a /etc/

network/interfaces, aquesta ordre no farà res. Perquè aquesta ordre configuri

eth0, cal afegir les línies següents a /etc/network/interfaces:

mapping hotplug

script echo

Si només voleu que eth0 s'activi en calent i no altres interfícies, cal utilitzar

grep en comptes d'echo, com es mostra a continuació:

mapping hotplug

script grep

map eth0

ifplugd activa o desactiva una interfície segons si el maquinari subjacent està

connectat a la xarxa o no ho està. El programa pot detectar un cable connec-

tat a una interfície Ethernet o un punt d'accés associat a una interfície Wi-Fi.

Quan ifplugd veu que l'estat de l'enllaç ha canviat, executa un script que per

defecte executa ifup o ifdown per a la interfície. ifplugd funciona en combina-

ció amb hotplug. En inserir una targeta, cosa que significa que la interfície està

preparada per a utilitzar-la, /etc/hotplug.d/net/ifplugd.hotplug inicia una instàn-

cia d'ifplugd per a aquesta interfície. Quan ifplugd detecta que la targeta està

connectada a una xarxa, executa ifup per a aquesta interfície.

GNUFDL • PID_00167526 44 Administració de xarxa

Per a associar una targeta Wi-Fi amb un punt d'accés, pot ser que necessiteu

programar-la amb una clau de xifratge WEP adequada. Si esteu usant ifplugd

per a controlar ifup com es va explicar anteriorment, llavors, evidentment,

no podreu configurar la clau de xifratge usant ifup, ja que aquest només és

cridat després que la targeta ha estat associada. La solució més simple és usar

waproamd, que configura la clau de xifratge WEP segons els punts d'accés

disponibles, que es descobreixen mitjançant la recerca de les xarxes Wi-Fi. Per

a més informació consulteu man�waproamd i la informació del paquet.

GNUFDL • PID_00167526 45 Administració de xarxa

11.Xarxa privada virtual (VPN)

Una VPN31 és una xarxa que utilitza Internet com a transport de dades,

però impedeix que hi puguin accedir membres externs.

Tenir una xarxa amb VPN significa tenir nodes units per mitjà d'un túnel per

on viatja el trànsit i on ningú no hi pot interactuar. S'utilitza quan es tenen

usuaris remots que accedeixen a una xarxa corporativa per a mantenir la se-

guretat i privacitat de les dades. Per a configurar una VPN es poden utilitzar

diversos mètodes SSH (SSL), CIPE, IPSec, PPTP, que es poden consultar en les

referències (es recomana consultar VPN PPP-SSH HOWTO, de Scott Bronson,

i VPN-HOWTO de Matthew D. Wilson). [Bro01, Wil02]

Per a fer les proves de configuració, en aquest apartat s'utilitzarà OpenVPN,

que és una solució basada en SSL VPN, i es pot usar per a un ampli rang de

solucions; per exemple, accés remot, VPN punt a punt, xarxes Wi-Fi segures

o xarxes distribuïdes empresarials. OpenVPN implementa les capes OSI 2 o

3 amb protocols SSL/TLS i suporta autenticació basada en certificats, targetes

(smart cards), i altres mètodes de certificació. OpenVPN no és un servidor in-

termediari (o proxi) d'aplicacions ni opera per mitjà d'un navegador web.

(31)De l'anglès virtual privatenetwork.

Per a analitzar aquest servei utilitzarem una opció d'OpenVPN anomenada

OpenVPN for Static key configurations, que ofereix una manera simple de con-

figurar una VPN ideal per a proves o per a connexions punt a punt. Els seus

avantatges són simplicitat, i que no és necessari un certificat X509 PKI32 per

a mantenir la VPN. Els desavantatges són que només permet un client i un

servidor. En no utilitzar clau pública i clau privada, hi pot haver igualtat de

claus amb sessions anteriors, i hi ha d'haver, doncs, una clau en mode text

en cada igual (peer), i la clau secreta ha de ser intercanviada anteriorment per

un canal segur.

11.1. Exemple simple

En aquest exemple es configurarà un túnel VPN sobre un servidor amb IP =

10.8.0.1 i un client amb IP = 10.8.0.2. La comunicació serà xifrada entre el cli-

ent i el servidor sobre el port UDP 1194, que és el port per defecte d'OpenVPN.

Després d'instal·lar el paquet s'haurà de generar la clau estàtica:

openvpn --genkey --secret static.key

(32)De l'anglès public key infrastruc-ture.

GNUFDL • PID_00167526 46 Administració de xarxa

Després s'ha de copiar l'arxiu static.key en l'altre igual sobre un canal se-

gur (per exemple, utilitzant ssh o scp). L'arxiu de configuració del servidor

openVPN_server, per exemple:

dev tun

ifconfig 10.8.0.1 10.8.0.2

secret static.key

L'arxiu de configuració del client, per exemple, openVPN_client:

remote myremote.mydomain

dev tun

ifconfig 10.8.0.2 10.8.0.1

secret static.key

Abans de verificar el funcionament de la VPN, s'ha d'assegurar en el tallafocs

que el port 1194 UDP està obert sobre el servidor i que la interfície virtual tun0

usada per OpenVPN no està bloquejada ni sobre el client ni sobre el servidor.

Tingueu en ment que el 90% dels problemes de connexió trobats per usuaris

nous d'OpenVPN estan relacionats amb el tallafocs.

Per a verificar l'OpenVPN entre dues màquines, haureu de canviar les IP per

les reals i el domini pel que tingueu, i després executar del costat del servidor:

openvpn [server config file]

Que donarà una sortida com la següent:

Sun Feb 6 20:46:38 2005 OpenVPN 2.0_rc12 i686-suse-linux [SSL] [LZO] [EPOLL]

built on Feb 5 2005

Sun Feb 6 20:46:38 2005 Diffie-Hellman initialized with 1024 bit key

Sun Feb 6 20:46:38 2005 TLS-Auth MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]

Sun Feb 6 20:46:38 2005 TUN/TAP device tun1 opened

Sun Feb 6 20:46:38 2005 /sbin/ifconfig tun1 10.8.0.1 pointopoint 10.8.0.2 mtu 1500

Sun Feb 6 20:46:38 2005 /sbin/route add -net 10.8.0.0 netmask 255.255.255.0

gw 10.8.0.2

Sun Feb 6 20:46:38 2005 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:23 ET:0

EL:0 AF:3/1 ]

Sun Feb 6 20:46:38 2005 UDPv4 link local (bound): [undef]:1194

Sun Feb 6 20:46:38 2005 UDPv4 link remote: [undef]

Sun Feb 6 20:46:38 2005 MULTI: multi_init called, r=256 v=256

Sun Feb 6 20:46:38 2005 IFCONFIG POOL: base=10.8.0.4 size=62

Sun Feb 6 20:46:38 2005 IFCONFIG POOL LIST

Sun Feb 6 20:46:38 2005 Initialization Sequence Completed

GNUFDL • PID_00167526 47 Administració de xarxa

I del costat client:

openvpn [client config file]

Per a verificar que funciona, es pot fer ping 10.8.0.2 des del servidor i ping

10.8.0.1 des del client.

Per a agregar compressió sobre l'enllaç, s'ha d'afegir la línia següent als dos

arxius de configuració:

comp-lzo

Per a protegir la connexió per mitjà d'un encaminador NAT/firewall alive, i

seguir els canvis d'IP per mitjà d'un DNS, si un dels iguals (peers) canvia, cal

agregar als dos arxius de configuració:

keepalive 10 60

ping-timer-rem

persist-tun

persist-key

Per a executar-ho com a dimoni amb els privilegis del grup o usuari nobody,

cal agregar als arxius de configuració:

user nobody

group nobody

daemon

11.2. Configuració (manual) d'un client Debian per a accedir a

un VPN sobre un túnel pptp

Nota

Per a més informació podeuconsultar el web d'OpenVPN:http://openvpn.net/howto.html

En primer lloc s'ha d'instal·lar el client PPTP,33 i no és necessari tenir suport

MPPE en el nucli.

Per a això farem:

apt-get update

apt-get install pptp-linux

apt-get install resolvconf

Cal contestar sí si surt el missatge Append original file to dynamic file?

Després, cal reiniciar les interfícies amb:

/etc/init.d/ifupdown restart

(33)De l'anglès point-to-point tunne-ling protocol.

GNUFDL • PID_00167526 48 Administració de xarxa

O amb:

/etc/init.d/networking restart

També és necessari tenir instal·lat el paquet iproute:

apt-get install iproute

Per a la configuració del client crearem en el seu directori (per defecte /etc/ppp/)

el fitxer /etc/ppp/options.pptp (que contindrà opcions comunes a tots els túnels

que es creïn en l'equip):

lock noauth nobsdcomp nodeflate

Agreguem la línia següent a l'arxiu /etc/ppp/chap-secrets:

usuari PPTP passwd *

On diu usuari s'ha de posar el nom de l'usuari del servidor de VPN i en passwd

la paraula clau d'accés, i cal acabar la línia amb un asterisc.

S'ha de crear l'arxiu /etc/ppp/peers/uoc amb els paràmetres de configuració

del túnel:

pty "pptp nom.domini --nolaunchpppd"

name usuari

remotename PPTP

usepeerdns

defaultroute replacedefaultroute

file /etc/ppp/options.pptp

ipparam uoc

connect "route add nom.domini gw `ip route | \

grep default | cut -f3 -d' '`"

On diu usuari s'ha de posar el nom de l'usuari, nom.domini és el nom del servi-

dor VPN, per exemple, vpngw.uoc.es VPN, i uoc és el nom del túnel que crearem

i que es referirà a l'arxiu /etc/ppp/peers/uoc.

Abans de finalitzar hem de crear un parell de scripts que encaminaran els pa-

quets pel túnel cap a Internet i el tancaran quan s'hagi acabat.

Creem l'arxiu /etc/ppp/ip-up.d/uoc amb permisos d'execució i amb el contin-

gut següent:

#!/bin/sh

cat /etc/ppp/resolv.conf | resolvconf -a tun0

GNUFDL • PID_00167526 49 Administració de xarxa

Li canviem els atributs d'execució:

chmod +x /etc/ppp/ip-up.d/uoc

Finalment, creem l'arxiu /etc/ppp/ip-down.d/uoc amb el contingut següent:

#!/bin/sh

route del nom.domini

# canviar pel servidor, per exemple, vpngw.uoc.es

resolvconf -d tun0

I també amb permisos d'execució:

chmod +x /etc/ppp/ip-down.d/uoc

Ara només falta posar en marxa el túnel amb pon�uoc.

Després de posar en marxa el túnel i de fer ifconfig, veurem una nova interfície

de xarxa amb el nom de ppp0. Per a finalitzar la utilització del túnel, només

haurem de fer poff�uoc, amb la qual cosa desapareixerà la interfície ppp0.

Hi ha una interfície gràfica anomenada kvpnc per a configurar diferents cli-

ents de VPN. En aquesta aplicació no és necessari crear els scripts i no hi ha

cap problema per a instal·lar un client VPN pptp o de qualsevol altre tipus

seguint les instruccions. També és possible configurar fàcilment un client des

del Gnome per mitjà del Gnome Network Manager per a pptp:

sudo apt-get install network-manager-pptp pptp-linux

Nota

Podeu consultar els detalls de la interfície gràfica kvpnc a la seva pàgina web:

http://home.gna.org/kvpnc/en/index.html

Un altre web interessant on trobareu informació sobre VPN és la pàgina del NetworkManager:

http://projects.gnome.org/NetworkManager/admins/

GNUFDL • PID_00167526 50 Administració de xarxa

12.Configuracions avançades i eines

Hi ha un conjunt de paquets complementaris (o que substitueixen els conven-

cionals) i eines que o bé milloren la seguretat de la màquina (recomanats en

ambients hostils), o bé ajuden en la configuració de xarxa (i del sistema en

general) de manera més amigable.

Aquests paquets poden ser de gran ajuda a l'administrador de xarxa per

a evitar intrusos o usuaris locals que s'excedeixen en les seves atribuci-

ons (generalment, no per part de l'usuari local, sinó per mitjà d'una su-

plantació d'identitat) o bé ajudar l'usuari novell a configurar adequada-

ment els serveis.

En aquest sentit, és necessari preveure:

1)�Configuració�avançada�de�TCP/IP: per mitjà de l'ordre sysctl és possible

modificar els paràmetres del nucli durant l'execució o en l'inici per a ajustar-los

a les necessitats del sistema. Els paràmetres susceptibles de modificar són els

que es troben en el directori /proc/sys/, i es poden consultar amb sysctl�-a.

La manera més simple de modificar aquests paràmetres és per mitjà de l'arxiu

de configuració /etc/syscntl.conf. Després de la modificació, s'ha de tornar a

engegar la xarxa:

/etc/init.d/networking restart

En aquest apartat veurem algunes modificacions per a millorar les prestacions

de la xarxa (segons les condicions) o la seguretat del sistema (consulteu les

referències per a més detalls) [Mou01]:

net.ipv4.icmp_echo_ignore_all = 1

2) No respon paquets ICMP, com per exemple l'ordre ping, que podria significar

un atac DoS (denial-of-service).

net.ipv4.icmp_echo_ignore_broadcasts = 1

3) Evita congestions de xarxa no responent la difusió (broadcast).

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.lo.accept_source_route = 0

net.ipv4.conf.eth0.accept_source_route = 0

GNUFDL • PID_00167526 51 Administració de xarxa

net.ipv4.conf.default.accept_source_route = 0

4) Inhibeix els paquets d'IP source routing que podrien representar un problema

de seguretat (en totes les interfícies).

net.ipv4.tcp_syncookies = 1

net.ipv4.conf.all.accept_redirects = 0

5) Permet rebutjar un atac DoS de paquets SYNC que consumiria tots els re-

cursos del sistema i forçaria a fer un reinici de la màquina.

net.ipv4.conf.lo.accept_redirects = 0

net.ipv4.conf.eth0.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

6) Útil per a evitar atacs amb CMP redirect acceptance (aquests paquets són uti-

litzats quan l'encaminament no té una ruta adequada) en totes les interfícies.

net.ipv4.icmp_ignore_bogus_error_responses = 1

7) Envia alertes sobre tots els missatges erronis a la xarxa.

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.lo.rp_filter = 1

net.ipv4.conf.eth0.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1

8) Habilita la protecció contra l'IP spoofing en totes les interfícies.

net.ipv4.conf.all.log_martians = 1

net.ipv4.conf.lo.log_martians = 1

net.ipv4.conf.eth0.log_martians = 1

net.ipv4.conf.default.log_martians = 1

9) Generarà registres sobre tots els spoofed packets, source routed packets i redirect

packets.

10) Els paràmetres següents permetran que el sistema pugui atendre millor i

més ràpidament les connexions TCP.

net.ipv4.tcp_fin_timeout = 40, Per defecte, 60.

net.ipv4.tcp_keepalive_time = 3600, Per defecte, 7.200.

net.ipv4.tcp_window_scaling = 0

net.ipv4.tcp_sack = 0

net.ipv4.tcp_timestamps = 0, Per defecte, tots a 1 (habilitats).

GNUFDL • PID_00167526 52 Administració de xarxa

11)�Iptables: les últimes versions de GNU/Linux (nucli 2.4 o superiors) inclo-

uen nous mecanismes per a construir filtres de paquets anomenats netfilter

[Mou01]. Aquesta nova funcionalitat és gestionada per una eina denominada

iptables, que presenta característiques millors que el seu predecessor (ipchains).

Com es veurà en el mòdul corresponent a seguretat, és summament fàcil cons-

truir un tallafocs amb aquesta eina per a detectar els atacs scans més comuns,

DoS, IPMAC spoofing, etc., i fer-los front. Per a activar-lo cal que el nucli si-

gui 2.4 o superior, que estigui configurat per a donar suport d'ipfilter (cosa

que significarà que s'haurà de recompilar el nucli per a activar l'opció network

packet filtering [CONFIG_NETFILTER], i totes les subopcions específiques). Les

regles específiques s'han d'activar durant l'arrencada (per exemple, per mitjà

de l'script /etc/init.d i l'enllaç adequat al directori rc adequat) i té un format

similar (consulteu les referències sobre les capacitats i la sintaxi completa) a:

iptables -A Type -i Interface -p protocol -s SourceIP

--source-port Port -d DestinationIP

--destination-port Port -j Action

12)�GnuPG: aquesta eina permet xifrar dades per a la tramesa posterior (per

exemple, correu electrònic) o emmagatzemament, i també per a generar firmes

digitals (compleix l'estàndard de l'RFC2440) i no utilitza algoritmes patentats,

la qual cosa significa més llibertat en la utilització però pèrdua de compatibili-

tat amb altres eines (per exemple, PGP 2.0) que utilitzen algoritmes com IDEA

i RSA. Per a compilar-lo o instal·lar-lo, cal seguir les indicacions dels autors.

En primer lloc, s'ha de crear una parella de claus (pública i privada) executant

com a root l'ordre gpg --gen-key dues vegades i contestant les preguntes que ens

fa. Generalment, aquestes claus s'emmagatzemaran a /root. El següent és ex-

portar (per exemple, a una pàgina web) la clau pública perquè altres usuaris la

puguin utilitzar per a xifrar els correus o la informació que només podrà veure

l'usuari que ha generat la clau pública. Per a això, caldrà utilitzar gpg --export

-ao UID, la qual cosa generarà un arxiu ASCII de la clau pública de l'usuari UID.

Per a importar una clau pública d'un altre usuari, es pot usar gpg --import fi-

lename, i per a signar una clau (significa indicar al sistema que s'està d'acord

que la clau firmada és de qui diu ser), es pot utilitzar gpg --sign-key UID. Per a

verificar una clau, es pot utilitzar gpg --verify file/data i per a xifrar o desxifrar,

gpg -sear UID file g i gpg -d file, respectivament [Gnu].

13)�Logcheck: una de les activitats d'un administrador de xarxa és verificar

diàriament (més d'una vegada per dia) els arxius de registre (log) per a detectar

possibles atacs, intrusions o esdeveniments que puguin donar indicis sobre

aquestes qüestions. Aquesta eina selecciona (dels arxius de registre) informa-

ció condensada de problemes i riscos potencials i després envia aquesta infor-

mació al responsable, per exemple, per mitjà d'un correu. El paquet inclou

GNUFDL • PID_00167526 53 Administració de xarxa

utilitats per a executar-se de manera autònoma i recordar l'última entrada ve-

rificada per a les execucions subsegüents. Per a més informació sobre la confi-

guració i instal·lació, podeu consultar les referències. [Log]

14)� PortSentry� i� Tripwire: aquestes eines ajuden en les funcions de

l'administrador de xarxa pel que fa a seguretat. PortSentry permet detectar i

respondre a accions de recerca de ports (pas previ a un atac o a un spamming)

en temps real i prendre diverses decisions respecte a l'acció que s'està duent a

terme. Tripwire és una eina que ajudarà l'administrador notificant sobre pos-

sibles modificacions i canvis en arxius per a evitar possibles danys (més greus).

Aquesta eina compara les diferències entre els arxius actuals i una base de da-

des generada prèviament per a detectar canvis (insercions i esborrament), la

qual cosa és molt útil per a detectar possibles modificacions d'arxius vitals,

com per exemple, en arxius de configuració. Consulteu les referències sobre

la instal·lació i configuració d'aquestes eines. [Tri]

15)�Xinetd: aquesta eina millora notablement l'eficiència i les prestacions

d'inetd i tcp-wrappers. Un dels grans avantatges de xinetd és que pot fer front

a atacs de DoA34 per mitjà de mecanismes de control per als serveis basats

en la identificació d'adreces del client, en temps d'accés i temps de connexió

(logging). No s'ha de pensar que xinetd és el més adequat per a tots els serveis

(per exemple, FTP i SSH és millor que s'executin només com a dimonis), ja

que molts generen una gran sobrecàrrega al sistema i disposen de mecanismes

d'accés segurs que no creen interrupcions en la seguretat del sistema. [Xin]

La compilació o instal·lació és simple, i només és necessari configurar dos ar-

xius: /etc/xinetd.conf (l'arxiu de configuració de xinetd) i /etc/rc.d/init.d/xi-

netd (l'arxiu d'inicialització de xinetd). El primer arxiu conté dues seccions:

defaults, que és on es troben els paràmetres que s'aplicaran a tots els serveis, i

service, que seran els serveis que es posaran en marxa per mitjà de xinetd.

Un exemple típic de la configuració podria ser:

# xinetd.conf

# Les opcions de configuració per defecte que s'apliquen a tots els

# servidors es poden modificar per a cada servei

defaults

{

instances = 10

log_type = FILE /var/log/service.log

log_on_success = HOST PID

log_on_failure = HOST RECORD

}

# El nom del servei ha de ser a /etc/services per a obtenir

# el port correcte

# Si es tracta d'un servidor/port no estàndard, useu "port = X"

service ftp

(34)De l'anglès denial-of-access.

GNUFDL • PID_00167526 54 Administració de xarxa

{

socket_type = stream

protocol = tcp

wait = no

user = root

server = /usr/sbin/proftpd

}

#service telnet

#{

# socket_type = stream

# protocol = tcp

# wait = no

# user = root

# no_access = 0.0.0.0

# only_from = 127.0.0.1

# banner_fail = /etc/telnet_fail

# server = /usr/sbin/in.telnetd

#}

service ssh

{

socket_type = stream

protocol = tcp

wait = no

user = root

port = 22

server = /usr/sbin/sshd

server_args = -i

}

service http

{

socket_type = stream

protocol = tcp

wait = no

user = root

server = /usr/local/apache/bin/httpd

}

#service finger

#{

# socket_type = stream

# protocol = tcp

# wait = no

# user = root

# no_access = 0.0.0.0

# only_from = 127.0.0.1

# banner_fail = /etc/finger_fail

# server = /usr/sbin/in.fingerd

# server_args = -l

GNUFDL • PID_00167526 55 Administració de xarxa

#}

# Fi de /etc/xinetd.conf

Els serveis comentats (#) no estaran disponibles. A la secció defaults es poden

inserir paràmetres com ara el nombre màxim de peticions simultànies d'un

servei, el tipus de registre (log) que es vol tenir, des de quins nodes es rebran

peticions per defecte, el nombre màxim de peticions per IP que s'atendran, o

serveis que s'executaran com a superservidors (imapd o popd), com per exem-

ple:

default {

instances = 20

log_type = SYSLOG

authpriv log_on_success = HOST

log_on_failure = HOST

only_from = 192.168.0.0/16

per_source = 3

enabled = imaps

}

La secció service, una per cada servei, com per exemple:

service imapd {

socket_type = stream

wait = no

user = root

server = /usr/sbin/imapd

only_from = 0.0.0.0/0 #allows every client

no_access = 192.168.0.1

instances = 30

log_on_success += DURATION USERID

log_on_failure += USERID

nice = 2

redirect = 192.168.1.1 993

#Permet redireccionar el trànsit del port 993

#cap al node 192.168.1.1

bind = 192.168.10.4

#Permet indicar a quina interfície està associat el servei per a evitar

# problemes de suplantació de servei.

}

L'arxiu /etc/init.d/xinetd permetrà posar en marxa el servidor (amb l'enllaç

adequat, segons el nivell d'execució seleccionat; per exemple, 3, 4 i 5). És con-

venient canviar els atributs de tots dos arxius per a garantir que no són modi-

ficats o desactivats amb chmod 700 /etc/init.d/xinetd; chown 0.0 /etc/init.d/xcon-

fig; chmod 400 /etc/xinetd.conf; chattr +i /etc/xinetd.conf.

GNUFDL • PID_00167526 56 Administració de xarxa

16)�Linuxconf: és una eina de configuració i administració d'un sistema GNU/

Linux però que ha quedat obsoleta, si bé es pot trobar encara en algunes dis-

tribucions.

17)�Webmin: és una altra eina (paquets webmin-core, webmin-dhcp, webmin-

inetd, webmin-sshd...) que permet per mitjà d'una interfície web (és necessari

tenir per exemple el servidor Apache instal·lat), configurar i afegir aspectes re-

lacionats amb la Xarxa. Si bé encara es desenvolupa, en moltes distribucions

no s'inclou per defecte. Per a executar-la, una vegada instal·lada, des d'un na-

vegador cal cridar l'URL https://localhost:10000, que sol·licitarà l'acceptació

del certificat SSL i l'usuari (inicialment root) i la seva clau (passwd).

18)� System-config-*: en Fedora hi ha una varietat d'eines gràfiques que

s'anomenen system-config-"alguna-cosa", en què "alguna-cosa" és la funció per

a la qual estan dissenyades. En general, si s'està en un entorn gràfic, es pot

arribar a cada una per mitjà d'un menú; tanmateix, cada una d'aquestes eines

implica un menú que cal recordar. Una eina que centralitza totes les system

config és system-config-control, en una sola entrada de menú i en una única

interfície gràfica, des de la qual es pot seleccionar d'acord amb una organit-

zació d'icones. Per a això, cal anar a "Aplicacions" → "Afegeix/Treu programa-

ri", i aquí s'arrenca com a root el gestor gràfic de programari Pirut (i s'ha de

tenir habilitat el repositori Fedora Extras). En la interfície del Pirut, s'usa, per

exemple, la recerca de paquets disponibles amb el patró system-config-*; trieu

system-config-control* i feu clic a Apply. Entre altres opcions, s'hi poden confi-

gurar gairebé tots els aspectes de la xarxa i els serveis.

19)�Networkmanager: és una eina que permet manejar fàcilment xarxes sen-

se fil i per cable de manera simple i sense grans complicacions, però no és in-

dicat per a servidors (només per a màquines d'escriptori). Instal·lar-lo és molt

fàcil: apt-get�install�network-manager-xx, en què xx és gnome o kde, segons

l'escriptori instal·lat. Per a configurar-lo s'han de comentar totes les entrades

a (Debian) /etc/network/interfaces, excepte la interfície de loopback interface,

per exemple deixant només:

auto lo

iface lo inet loopback

Aquest pas no és obligatori però accelera el descobriment de les xarxes o in-

terfícies. Sobre Debian també s'ha d'agregar un pas extra, i és que l'usuari

s'ha d'integrar dins del grup netdev per una qüestió de permisos. Per a fer-

ho, cal executar (com a root o si no amb l'ordre sudo per davant) adduser

usuari_actual�netdev i reiniciar (o també reiniciar la xarxa amb /etc/init.d/

networking restart i sortir i tornar a entrar perquè l'usuari actual es quedi in-

clòs en el grup netdev).

20)�Altres�eines:

Nota

Més informació a Solucorp.http://www.solucorp.qc.ca/li-nuxconf/

Nota

Més informació a la pàgina deWebmin.http://www.webmin.com/

GNUFDL • PID_00167526 57 Administració de xarxa

• Nmap: explorar i auditar amb finalitats de seguretat una xarxa.

• Nessus: avaluar la seguretat d'una xarxa de manera remota.

• Wireshark (antic Ethereal): analitzador de protocols de xarxa.

• Snort: sistema de detecció d'intrusos, IDS.

• Netcat: utilitat simple i potent per a depurar i explorar una xarxa.

• TCPDump: monitoratge de xarxes i adquisició d'informació.

• Hping2: genera i envia paquets d'ICMP/UDP/TCP per a analitzar el funci-

onament d'una xarxa.Vegeu també

Algunes d'aquestes eines se-ran tractades en el mòduld'administració de seguretaten l'assignatura Administracióavançada de sistemes GNU/Li-nux, que tracta sobre segure-tat.

GNUFDL • PID_00167526 59 Administració de xarxa

Activitats

1. Definiu els escenaris de xarxa següents:

a) Màquina aïllada.b) Petita xarxa local (4 màquines, 1 passarel·la).c) 2 xarxes locals segmentades (2 conjunts de 2 màquines, un encaminador cada una i unapassarel·la general).d) 2 xarxes locals interconnectades (dos conjunts de 2 màquines + passarel·la cada una).e) 2 màquines connectades per mitjà d'una xarxa privada virtual. Indiqueu els avantatges idesavantatges de cada configuració, per a quin tipus d'infraestructura són adequades i quinsparàmetres rellevants es necessiten.

2. Configureu la xarxa de l'opció a, b i d del punt 1.

GNUFDL • PID_00167526 60 Administració de xarxa

Bibliografia

[Bro01] Bronson, S. (2001). "VPN PPP-SSH". The Linux Documentation Project.

[Cis00] Cisco (2000). "TCP/IP White Paper". <http://www.cisco.com>

[Com01] Comer, D. (2001). TCP/IP Principios básicos, protocolos y arquitectura. Prentice Hall.

[Dra99] Drake, J. (1999). "Linux Networking". The Linux Documentation Project.

[Gar98] Garbee, B. (1998). TCP/IP Tutorial. N3EUA Inc.

[Gnu] Gnupg.org. GnuPG Web Site. <http://www.gnupg.org/>

[IET] IETF. "Repositori de Request For Comment desenvolupats per la Internet EngineeringTask Force (IETF) en el Network Information Center (NIC)".

[KD00] Kirch, O.; Dawson, T. (2000). Linux Network Administrator's Guide. O'ReillyAssociates. [I en línia (gratuït) a Free Software Foundation, Inc.]. <http://www.tldp.org/guides.html>

[Law07] Lawyer, D. (2007). "Linux Modem". The Linux Documentation Project.

[Log] LogCheck. <http://logcheck.org/>

[Mal96] Mallett, F. (1996). TCP/IP Tutorial. FAME Computer Education.

[Mou01] Mourani, G. (2001). Securing and Optimizing Linux: The Ultimate Solution. OpenNetwork Architecture, Inc.

[PPP00] Williams, C.; Drake, J.; Hart, R. (2000). "Linux PPP". The Linux DocumentationProject.

[Ran05] Ranch, D. (2005). "Linux IP Masquerade" i Tapsell, J. (2005). "MasqueradingMade Simple". The Linux Documentation Project.

[Rid00] López Ridruejo, D. (2000). "The Linux Networking Overview". The Linux Docu-mentation Project.

[Sec00] Seco, A. (2000). "Diald". The Linux Documentation Project.

[Tri] Tripwire.com. Tripwire Web Site. <http://www.tripwire.com/>

[Vas00] Vasudevan, A. (2000). "Modem-Dialup-NT". The Linux Documentation Project.

[Wil02] Wilson, M. D. (2002). "VPN". The Linux Documentation Project.

[Xin] Xinetd Web Site. <http://www.xinetd.org/>

GNUFDL • PID_00167526 61 Administració de xarxa

Annex

Controlar�els�serveis�vinculats�a�xarxa�a�FCx

Un aspecte important de tots els serveis és com es posen en marxa. Fcx (des

de FC6) inclou una sèrie d'utilitats per a gestionar els serveis –dimonis– (in-

cloent-hi els de xarxa). Com ja s'ha vist en l'apartat d'administració local, el

runlevel és el mode d'operació que especifica quins dimonis s'executaran. A

FC podem trobar: runlevel 1 (monousuari), runlevel 2 (multiusuari), runlevel 3

(multiusuari amb xarxa), runlevel 5 (X11 més runlevel 3). Típicament s'executa

el nivell 5 o 3 si no es necessiten interfícies gràfiques. Per a determinar quin

nivell s'està executant, es pot utilitzar /sbin/runlevel i per a saber quin nivell és

el que s'arrenca per defecte, cat /etc/inittab | grep :initdefault:, que ens donarà

informació com id:5:initdefault: (també es pot editar /etc/inittab per a canviar

el valor per defecte).

Per a visualitzar els serveis que s'estan executant, podem utilitzar /sbin/chkcon-

fig -list, i per a gestionar-los podem utilitzar system-config-services en mode

gràfic o ntsysv en la línia d'ordres. Per a habilitar serveis individuals podem

utilitzar chkconfig. Per exemple, l'ordre següent habilita el servei crond per als

nivells 3 i 5: /sbin/chkconfig�--level�35�crond�on.

Independentment de com s'hagin posat en marxa els serveis, es pot utilitzar

/sbin/service -status-all o individualment amb /sbin/service crond status per a

saber com està cada servei. I també gestionar-lo (start, stop, status, reload, res-

tart); per exemple, service�crond�stop per a parar-lo o service�crond�restart per

a reiniciar-lo.

És important no�deshabilitar�els�serveis�següents (tret que se sàpiga el que

s'està fent): acpid, haldaemon, messagebus, klogd, network, syslogd. Els serveis més

importants vinculats a la xarxa (encara que no es recullen tots, sí la majoria

en aquesta llista no exhaustiva) són:

• NetworkManager,�NetworkManagerDispatcher: és un dimoni que per-

met canviar entre xarxes fàcilment (Wi-Fi i Ethernet bàsicament). Si només

té una xarxa no és necessari que s'executi.

• Avahi-daemon,�avahi-dnsconfd: és una implementació de zeroconf i és

útil per a detectar dispositius i serveis sobre xarxes locals sense DNS (és el

mateix que mDNS).

GNUFDL • PID_00167526 62 Administració de xarxa

• Bluetooth,�hcid,�hidd,�sdpd,�dund,�pand: Bluetooth és una xarxa sense

fil per a dispositius portàtils (no és Wi-Fi, 802.11). Per exemple, teclats,

ratolins, telèfons, altaveus, auriculars, etc.

• Capi,�isdn: xarxa basada en maquinari ISDN35.

• Iptables: és el servei de tallafocs estàndard de Linux. És totalment necessari

per seguretat si es té connexió a xarxa (cable, DSL, T1).

• Ip6tables: és el servei de tallafocs estàndard de Linux per a protocols i

xarxes basats en IPv6.

• Netplugd: pot monitorar la xarxa i executar instruccions quan en canviï

l'estat.

• Netfs: s'utilitza per a muntar automàticament sistemes d'arxius per mitjà

de la xarxa (NFS, Samba, etc.) durant l'arrencada.

• Nfs,�nfslock: són els dimonis estàndard per a compartir sistemes d'arxius

per mitjà de la xarxa en sistemes operatius d'estil Unix/Linux/BSD.

• Ntpd: servidor d'hora i data a través de la xarxa.

• Portmap: és un servei complementari per a NFS (file sharing) o NIS (aut-

hentication).

• Rpcgssd,� rpcidmapd,� rpcsvcgssd: s'utilitza per a NFS v4 (nova versió

d'NFS).

• Sendmail: aquest servei permet gestionar els correus (MTA) o donar suport

a serveis com IMAP o POP3.

• Smb: aquest dimoni permet compartir fitxers sobre sistemes Windows.

• Sshd: SSH permet a altres usuaris connectar-se interactivament de manera

segura a la màquina local.

• Yum-updatesd: servei d'actualitzacions per xarxa d'FC.

• Xinetd: servei alternatiu d'inetd que presenta un conjunt de característi-

ques i millores, com per exemple llançar múltiples serveis per al mateix

port (aquest servei pot no estar instal·lat per defecte).

(35)En català correspon a XDSI(Xarxa de Serveis Integrats).