Cur So Linux 009

57
Universidad Católica de Temuco Escuela de Informática El Sistema Operativo Linux (GNU/Linux) Versión 0.0.9 Copyleft @ 2003 por Alejandro Mellado [email protected] [email protected]

Transcript of Cur So Linux 009

Page 1: Cur So Linux 009

Universidad Católica de TemucoEscuela de Informática

El Sistema Operativo Linux(GNU/Linux)Versión 0.0.9

Copyleft @ 2003 por Alejandro [email protected]

[email protected]

Page 2: Cur So Linux 009

Índice de contenidoIntroducción................................................................................................................................................................3

Breve Historia.........................................................................................................................................................3Distribuciones.........................................................................................................................................................4

Principales Características.........................................................................................................................................5Instalación...............................................................................................................................................................7Definición de las particiones................................................................................................................................7Particiones de disco................................................................................................................................................8Limitaciones relacionadas con las BIOS que afectan a LILO............................................................................9Recomendaciones sobre Puntos de montaje y Particiones..................................................................................9Estructura y funcionamiento...............................................................................................................................10Organización y permisos de archivos y directorios...........................................................................................12

Conceptos de permisos de archivos................................................................................................................13Interpretando los permisos de archivos..........................................................................................................13Dependencias....................................................................................................................................................15Cambiando permisos........................................................................................................................................15Manejando enlaces de archivos.....................................................................................................................16

Interpretes de comandos......................................................................................................................................18EL Manual de comandos (man)......................................................................................................................20

Interfaz gráfica de usuario.......................................................................................................................................22El sistema X Window..........................................................................................................................................22Requisitos de hardware........................................................................................................................................22

Kernel y módulos.....................................................................................................................................................24Módulos................................................................................................................................................................24Cómo configurar el núcleo (kernel)....................................................................................................................24

Descompresión de los fuentes ........................................................................................................................25Configuración del núcleo................................................................................................................................25Compilación del núcleo ..................................................................................................................................26

Administración del Sistema.....................................................................................................................................29La cuenta root.......................................................................................................................................................29Gestión de Usuario...............................................................................................................................................29

Conceptos de gestión de usuarios...................................................................................................................29Identificación y administración de procesos......................................................................................................33

Primer plano y Segundo plano........................................................................................................................34Gestión de paquetes..................................................................................................................................................39

Concatenación y Compresión de Archivos........................................................................................................40Descompresión y desconcadenación de Archivos............................................................................................40

La descompresión de archivos .gz se realiza con el comando gzip, ejemplo:....................................41Configurador, Constructor e Instalador.............................................................................................................41Gestor de paquetes de RedHat ...........................................................................................................................42

Principales Servicios Internet..................................................................................................................................43Httpd (Apache Server).........................................................................................................................................43Agentes Transmisores de Correo (MTA’,s).......................................................................................................43

Sendmail...........................................................................................................................................................43Postfix...............................................................................................................................................................43Qmail.................................................................................................................................................................43Servicio POP....................................................................................................................................................44

Servicio de Transferencia de Archivos (FTP)....................................................................................................44Referencias de Bases de datos y Lenguajes de Programación..............................................................................45SAMBA.....................................................................................................................................................................47Gestores de Ventanas (Windows Managers)..........................................................................................................54Referencias................................................................................................................................................................57

2

Page 3: Cur So Linux 009

Introducción

Breve Historia

UNIX es uno de los sistemasoperativosmáspopularesdel mundo debidoa su extensosoportey distribución.Originalmentefue desarrolladocomosistemamultitareacon tiempocompartidopara pequeñoscomputadoresy mainframesa mediadosde los 70, y desdeentoncesse ha convertido en uno de los sistemasmás utilizados, a pesar de suocasionalmente,"confusainterfaz" con el usuarioy el problemade su estandarización.Entonces,¿Cuál es la verdaderarazón de la popularidadde UNIX? Muchos hackersconsideranque UNIX es el auténticoy único sistemaoperativo.El desarrollode Linuxpartedeun grupoenexpansióndehackersdeUNIX quequisieronhacersusistemaconsuspropias manos. Existen numerosasversionesde UNIX para muchos sistemas,desdecomputadores personales hasta supercomputadores como el Cray Y-MP.

Linux es unaversiónde UNIX de libre distribución,inicialmentedesarrolladapor LinusTorvaldsen la Universidadde Helsinki, en Finlandia.Fue desarrolladocon la ayudademuchosprogramadoresy expertosUnix, reuniendocolaboradoresdetodoel mundograciasa la presenciade Internet. Cualquier habitante del planeta puede accedera Linux,desarrollarnuevosmódulosy cambiarloa su antojo.El núcleode Linux no utiliza ni unasolalíneadel códigooriginal deAT&T o de cualquierotra fuentede propiedadcomercial,y buenapartedel softwareparaLinux sedesarrollabajo lasreglasdel proyectodeGNU dela Fundación de Software Libre (Free Software Foundation) en Cambridge Massachusetts.

Inicialmente,sólofue un proyectodeaficionadodeLinus Torvaldsqueestuvoinspiradoenel Minix, un pequeñoUNIX desarrolladopor Andy Tanenbaum.Por esto las primerasdiscusionessobreLinux surgieronen el grupode Newscomp.os.minix.Estasdiscusionesgirabanentornoal desarrollodeun pequeñosistemaUNIX decarácteracadémicodirigidoa aquellos usuarios de Minix que querían algo más. El desarrollo inicial de Linuxaprovechabalas característicasde conmutaciónde tareasenmodoprotegidodel 386,y seescribiótodo en ensamblador.Linus dice, "Comencéa utilizar el C trasescribir algunosdrivers,y ciertamenteseaceleróel desarrollo.En estepuntosentíquemi ideadehacerunMinix mejor queMinix sehacíamásseria.Esperabaquealgúndía pudieserecompilarelgcc bajo Linux. Dos mesesde trabajo,hastaquetuve un driver de discos(con numerososbugs,peroqueparecíafuncionaren mi PC)y un pequeñosistemade archivos.Aquí teníaya la versión0.01[al final de Agostode1991]:no eramuy agradabledeusarsin el driverde disquetes,y no hacíagran cosa.No penséquealguiencompilaríaesaversión".No seanunciónadasobreesaversión,puestoquelas fuentesdel 0.01 jamásfueronejecutables:conteníansolo rudimentosde lo queseríael núcleo, y seasumíaqueseteníaaccesoa unMinix parapoderlocompilar y jugar con él. El 5 de Octubrede 1991,Linus anunciólaprimeraversión"oficial" deLinux, la 0.02.Ya podíaejecutarbash(el shelldeGNU) y gcc(el compiladorde C de GNU), perono hacíamuchomás.La intencióneraserun jugueteparahackers.No habíanadasobresoportea usuarios,distribuciones,documentaciónninadaparecido.Hoy, la comunidaddeLinux auntrataestosasuntosdeformasecundaria.Lo

3

Page 4: Cur So Linux 009

primero sigue siendo el desarrollo del kernel.

Linus escribíaencomp.os.minixlo siguiente:¿Suspiráisal recordaraquellosdíasdeMinix-1.1, cuandolos hombreseran hombresy escribíansus propios drivers?¿Ossentíssinningúnproyectointeresantey osgustaríatenerun verdaderoS.O.quepudieraismodificaraplacer? ¿Os resulta frustrante el tener solo a Minix? Entonces,este artículo es paravosotros."Como dije hace un mes, estoy trabajandoen una versión gratuita de algoparecidoa Minix paracomputadoresAt-386. He alcanzadola etapaen la que puedeserutilizable y voy a poner las fuentesparasu distribución.Es solo la versión0.02 pero heconseguido ejecutar en él bash, gcc, gnu-make, gnu-sed, compress, etc".

Tras la versión0.03, Linus saltó a la versión0.10, al tiempo quemásgenteempezabaaparticipar en su desarrollo. Tras numerosasrevisiones, se alcanzó la versión 0.95,reflejandola esperanzade tenerlista muy prontounaversión"oficial". (Generalmente,laversión1.0 de los programassecorrespondencon la primerateóricamentecompletay sinerrores).Esto sucedíaen Marzo de 1992.Año y medio después,en Diciembredel 93, elnúcleo estaba en la revisión 0.99.pl14, en una aproximación asintótica al 1.0. [1].

Más de un añodespués,en Diciembrede1993,el núcleodel sistemaestabaen la versión0.99 y la versión 1.0 no llegó hasta el 14 de marzo de 1994.

Una vez que el núcleo estuvo "usable", los programadorescomenzarona buscaraplicacionesy utilidadesparaagregary hacerel sistemamásútil, eseesel momentoenqueentra el proyecto GNU, iniciado en 1984 por la Fundaciónde Software Libre (FreeSoftwareFoundation),entidadcreadapor Richard M. Stallman,con el fin de hacerunsistemaoperativo libre. Dado que existía ya mucho softwareen el proyectoGNU, losprogramadorescomenzarona unir el núcleo Linux con dichas herramientasGNU,conformandolo que hoy conocemoscomo sistemaGNU/Linux o simplementeLinux,como se suele llamar equivocadamente.

La versión actual del núcleo es la 2.4 y sigue avanzandodía a día con la meta deperfeccionar y mejorar el sistema [2].

Distribuciones

Linux también se puede conseguiraccediendoa ciertos distribuidores, los cuales seencargande recoger,empaquetary presentarLinux en susdiferentesmodalidadesen un ounos bonitos CD-ROMs, con la ventajade que normalmenteproporcionanmanuales,eincluso hasta soporte al usuario.

Los distribuidoresqueaquísecitansonsólounospocos,ya queúltimamentehanaparecidobastantes.

Una de las primerasdistribucionesqueapareciófue la SlackWare,cuyaúltima versiónalmomento de escribir este documente es la 7.2.

4

Page 5: Cur So Linux 009

Paralos quedeseenun Linux bien ordenado,en cuantoa paquetesy versionesinstaladas,pueden con las distribuciones:

SalckwareDebianMandrakeRedHatSuseCalderaConectiva

La particularidadde estasdistribucionesa exepciónde la Debiany Slackwareesla formaenquemanejanlos paquetesdeaplicaciones,los cualesusanla extensión.rpm,y la utilidadcon la queseinstalanRPM[3]. La distribucióndebiancuentacon otro gestorde paquetescon extensión“.deb” y la SlackwareSimplementemanejalos paquetesen formatostar ygz.

Principales Características

Linux es un sistemaoperativo que funciona en máquinas386 y superiores,en DECALPHA, SUN SPARCy en PowerPC.Actualmentesetrabajaparaquesepuedaejecutaren plataformas 680x0, MIPS y PowerMAC.

Usa libreríastantoestáticascomodinámicas,el códigofuenteestádisponible,incluyendoel kernel y drivers, herramientas de desarrollo y programas de usuario.

Soportalos sistemasde archivosde minix, Xenix, y todos los del SystemV, MS-DOS,OS/2 FAT16, VFAT, FAT32, HPFS-2 (OS/2 2.1), HFS (Mac) y NTFS (Windows NT).

Soporta cualquier CD-ROM estándar,red TCP/IP. Los requerimientosmínimos parafuncionarson, un 386SX/16con 1 Mb de RAM, una disqueteray una tarjetade video.Aunqueesrecomendableun maquinamuy superiorparaaprovecharla capacidadesgráficasque ofrecen las últimas distribuciones.

ConLinux sepuedenhacerlasmismascosassequehacenconcualquiersistemaoperativo(Mac, Windows, Irix, etc), ya quesecuentacon herramientasde desarrollo,lenguajesdeprogramación,entornosgráficos,editores,programasde telecomunicaciones,newsy mail,procesadores de texto, juegos e incluso paquetes integrados.

Empresascomo RedHat,Mandrake,Caldera,Walnut Creek,Apple, Digital, MetroLink yotrasseempiezana interesarpor estepequeñogransistema.Inclusola NASA hautilizadoun ordenador486 con la DebianGNU Linux paraun proyecto,el cual se lanzó con eltransbordador Columbia.

El tópico de queLinux espara"locos de la informáticaseha acabado".La instalaciónes

5

Page 6: Cur So Linux 009

cadavezmássencilla,inclusoquela deotrossistemas,ademássepuedeinstalarun entornográficomuy intuitivo desdeel cualsepuedegestionartodala máquinay recursos[3]. Losúltimos instaladoresde las distribucionestalescomoRedHat,Suseo Mandrake,seinicianen forma gráficay proveeunainterfazde instalacióninteractivae intuitiva muy fácial deusar.

Características del sistema

El núcleoescapazdeemularpor su cuentalas instruccionesdel coprocesador387,con loque en cualquier386 con coprocesadoro sin él se podránejecutaraplicacionesque lorequieran.Linux soportadiversossistemasde archivosparaguardarlos datos.Algunosdeellos, como el ext2fs, han sido desarrollados específicamente para Linux.

Otrossistemasdearchivos,comoel Minix o el deXenix tambiénsonsoportados.Además,tambiénsoportael ISO-9660,queesel estándarseguidoen el formatode los CD-ROMs.Linux implementatodo lo necesarioparatrabajaren red con TCP/IP.Desdemanejadoresparalas tarjetasde red máspopulareshastaSLIP y PPP,quepermitenaccedera unaredTCP/IPpor el puertoserie.TambiénseimplementanPLIP (paracomunicarsepor el puertode la impresora)y NFS (paraaccesoremotoa archivos).Y tambiénse han portadolosclientes de TCP/IP, como FTP, telnet, NNTP y SMTP.

El núcleodeLinux hasidodesarrolladoparautilizar lascaracterísticasdel modoprotegidode los microprocesadores80386y 80486.En concreto,haceusode la gestióndememoriaavanzadadel modoprotegidoy otrascaracterísticasavanzadas.Cualquieraqueconozcalaprogramacióndel 386 enel modoprotegidosabráqueestemodofue diseñadoparasu usoenUNIX (o tal vezMultics). Linux haceusodeestafuncionalidadprecisamente.El núcleosoportaejecutablesconpaginaciónpor demanda.Estosignificaquesólo los segmentosdelprogramaque se necesitanse carganen memoria desdeel disco. Las páginasde losejecutablessoncompartidasmediantela técnicacopy-on-write,contribuyendotodo ello areducir la cantidad de memoria requerida para las aplicaciones.

Con el fin de incrementarla memoriadisponible,Linux implementala paginacióncon eldisco: puedetenerhasta256 megabytesde espaciode intercambioo "swap" en el discoduroel cualubicausualmenteenunapartición,dejandola alternativatambiéndetenerlaenarchivo . Cuandoel sistemanecesitamásmemoria,expulsarápáginasinactivasal disco,permitiendola ejecuciónde programasmásgrandeso aumentandoel númerode usuariosque puedeatendera la vez. Sin embargo,el espaciode intercambiono puedesuplirtotalmentea la memoriaRAM, ya queel primeroesmuchomáslentoqueésta.La memoriadedicadaa los programasy a la cachéde disco está unificada. Por ello, si en ciertomomentohay muchamemorialibre, el tamañode la cachéde discoaumentaráacelerandoasí los accesos.Los programasejecutableshacenusode las libreríasde enlacedinámico.Estosignificaquelos programasejecutablescompartenel códigocomúndelas libreríasenun único archivo (como sucedeen el SunOS).Así, los ejecutablesseránmáscortosa lahoradeguardarlosenel disco,incluyendoaquellosquehaganusodemuchasfuncionesdelibrería. También puedenenlazarseestáticamentecuando se deseeque los programasejecutablesno requieranla presenciade las libreríasdinámicasen el sistema.El enlacedinámicose haceen tiempo de ejecución,con lo que el programadorpuedecambiarlaslibreríassin necesidadderecompilarlos programas.El nombreswapesinadecuado,ya que

6

Page 7: Cur So Linux 009

no seintercambianprocesoscompletos,sinopáginasindividuales.Porsupuesto,enmuchoscasosseexpulsanal discoprocesoscompletos,perono siempreocurreen la imagende lamemoria de los programas(archivos core). Entre esto y la posibilidad de compilarprogramas con soporte de depuración, el programador podrá averiguar la causa de sus falloso caídas.

Instalación

Definición de las particiones

Muchas distribucionesnecesitabanque se crearán a mano las particiones de Linuxutilizando el programafdisk. En las últimas versiones,las particionesya puedensercrearlasautomáticamente,o con un utilitarios de alto nivel. Usandounau otra utilidad, sedebeconocerlo siguienteacercade los nombresparalos dispositivosy las particionesenLinux:

Bajo Linux, los dispositivosy lasparticionestienennombresmuy distintosa los utilizadosen otros sistemasoperativos.Bajo MS-DOS o Windows por ejemplo, las disqueterasseidentificancomounidadA: y B:, mientrasquelas particionesdel discoduroseidentificancomo unidades C:, D:, etc.

Bajo Linux, la denominaciónes algo diferente.Los manejadoresde dispositivos,que seencuentranenel directorio/dev,seusanparacomunicarcon los dispositivosdesu sistema(como discosduroso ratones).Si se tienepor ejemploun ratón en su sistema,se puedeaccedera él a travésdel manejador/dev/mouse.Lasdisqueteras,discosdurosy particionestienencadaunoun manejadorpropio.Es importanteentendercómosehacereferenciaa losdispositivoscon el fin de poderlosusar.La siguientetabla lista los nombresde diversosmanejadores de disco:

Nombre DispositivoPrimera disquetera (A:) /dev/fd0Segunda disquetera (B:) /dev/fd1 Primer disco duro (todo el disco) /dev/hda Primer disco duro, partición primaria 1 /dev/hda1 Primer disco duro, partición primaria 2 /dev/hda2 Primer disco duro, partición primaria 3 /dev/hda3 Primer disco duro, partición primaria 4 /dev/hda4 Primer disco duro, partición lógica 1 /dev/hda5 Primer disco duro, partición lógica 2 /dev/hda6 .. . Segundo disco duro (todo el disco) /dev/hdb Segundo disco duro, partición primaria 1 /dev/hdb1 .. . Primer disco duro SCSI (todo el disco) /dev/sda Primer disco duro SCSI, partición primaria 1 /dev/sda1 .. .

7

Page 8: Cur So Linux 009

Segundo disco duro SCSI (todo el disco) /dev/sdb Segundo disco duro SCSI, partición primaria 1 /dev/sdb1 .. .

Tabla: Nombres de discos y particiones en Linux

Algunas notas acerca de esta tabla.

Obsérveseque /dev/fd0 correspondea la primera disquetera(A: bajo MS-DOS) y que/dev/fd1 correspondea la segunda(B:). Además,los discosduros SCSI se nombrandemaneradiferente a otros discos. Los IDE, MFM y RLL se accedena través de losdispositivos/dev/hda,/dev/hdb,etc.Las particionesde /dev/hdason/dev/hda1,/dev/hda2,etc. Sin embargo,los dispositivosSCSI se nombrancon /dev/sda,/dev/sdb,etc., y lasparticionescon/dev/sda1,/dev/sda2,etc.Aquí tenemosun ejemplo.Supongamosqueustedtieneun discoduroIDE con3 particionesprimarias.LasdosprimerassonparaMS-DOS,yla terceraesextendiday contienedosparticioneslógicas,ambasparaserusadasconLinux.Los dispositivosquedaríanrepresentadoscon: Primerapartición MS-DOS (C:) /dev/hda1Segunda partición MS-DOS (D:) /dev/hda2 Partición extendida /dev/hda3 Primera particiónlógica de Linux /dev/hda5Segundapartición lógica de Linux /dev/hda6Observequenoshemossaltado/dev/hda4,ya quecorrespondea la cuartaparticiónprimaria,queno existeen el ejemplo. Las particioneslógicas se nombrande forma consecutivapartiendode/dev/hda5. 2.3.3 Creación de las particiones en Linux

Particiones de disco

Con el fin de instalarcualquierdistribuciónde Linux, debeexistir espaciodisponibleparaél. Este espaciode disco necesitaestar separadodel espaciode disco usadopor otrossistemasoperativosque se puedentener instaladosen un computador,de modo que sepuedetener un Windows XX, un OS/2, o incluso una versióndiferentede Linux comosistemaoperativoadicional.Un discopuededividirse en diferentesparticiones.Sepuedeaccedera cadaparticióncomosi fueraun discoseparado.Ademáscadaparticióntieneunaetiquetade tipo que se usa para indicar como esta almacenadala información en lapartición.Por ejemplo,hay distintostipos de particionesusadospor DOS,OS/2,y Linux.Aun si seinstalaSuseLinux ensu propiodiscoduro,o enun computadorqueno contieneningúnotro sistemaoperativo,senecesitarácrearparticionesparaquelas useSuseLinux.En estecasoesmuy sencillo,ya queno hay otrasparticionesen el discoduro de las quepreocuparse.Por otra parte,puedequererinstalarSuseLinux en un discoqueya contienesoftware o datos de un sistema operativo diferente. Las cosas pueden ser algo mas delicadasenestasituación,ya queun errorpuededestruirtusparticionesactuales,por no mencionarlos datosquecontengan!Duranteel procesodeinstalación,setienela oportunidaddecrearparticionesparaSuseLinux o cualquierotra distribución.Llegadoestepunto, la mayorpreocupacióndebe ser estar seguro de tener suficiente espacio disponible para lasparticiones de Linux.

8

Page 9: Cur So Linux 009

Limitaciones relacionadas con las BIOS que afectan a LILO

LILO estasometidoa algunaslimitacionesimpuestaspor las BIOS en la mayoríade losordenadoresbasadosen Intel. Específicamente,muchasBIOS no puedenaccedera masdedos discosy no puedenaccedera los datosalmacenadosmásallá del cilindro 1023 (elcilindro 1024)deningúndispositivo.Hay quetomarencuentaquealgunasBIOS recientesno tienenestaslimitaciones,perono sepuededecirde forma universal.Todoslos datosalos queLILO necesiteaccederduranteel arranque(incluyendoel núcleode Linux) estánlocalizadosen el directorio/boot, queesnormalmentepartede la particiónraíz (conocidacomo/). A continuaciónsedescribenunasdirectricesquesedebenseguirsi seva a usarLILO para arrancar el sistema Linux:

En el primero, de dos dispositivos IDE

Si setienen2 dispositivosIDE (o EIDE). /bootdebeestarlocalizadoen unode ellos.Hayquetomaren cuantaqueestalimitación sobredosdispositivostambiénincluye cualquierCD-ROM IDE quesetengaen el controladorprimario IDE. Así, si setieneun discoduroIDE, y un CD-ROM IDE en el controlador primario, /boot debe estar localizadoúnicamenteenel primerdiscoduro,aunquesetenganotrosdiscosdurosenel controladorIDE secundario. Un primer dispositivo IDE o SCSI.

Si setieneun dispositivoIDE (o EIDE) y uno o másdispositivosSCSI, /boot debeestarlocalizadobienenel dispositivoIDE o enel dispositivoSCSIconID 0 o ID 1. NingúnotroID SCSI funcionara. En el primer de dos dispositivos SCSI

Si sóloexistendiscosdurosSCSI, /bootdebeestarlocalizadoenel dispositivocon ID 0 oID 1. Ningún otro ID SCSI funcionara.ParticionesCompletamentedelantedel cilindro1023.

No importa la configuraciónanteriorqueseaplique,la particiónquecontiene/boot debeestarlocalizadaenteramentedebajodel cilindro 1023.Si la partición que contiene/bootsobrepasael cilindro 1023,puedeencontrarsefrentea unasituaciónen la queLILO podráfuncionaren un principio (porquetoda la informaciónnecesariase encuentredebajodelcilindro 1023),peropodríafallar si un secargaun nuevonúcleo,y esteresideencimadelcilindro 1023. Como se mencionaanteriormente,es posible que algunasnuevasBIOSpuedanpermitir a LILO trabajarcon configuracionesno mencionadasen estasdirectrices.Así mismo, algunasde las funcionalidadesocultas puedense usadaspara conseguirarrancarun sistemaLinux, aunquela configuraciónno siga estasdirectrices.De todasformas,debidoal numerode variablesinvolucradas,RedHat Softwareno puedesoportaresos esfuerzos extraordinarios.

Recomendaciones sobre Puntos de montaje y Particiones

La particiónde intercambio:La particiónde intercambioseusaparasoportarla memoriavirtual o de intercambio(Swap).Si el computadorordenadortiene 16 MB de RAM omenos,esimprescindible crearunaparticiónde intercambio,y aunquesecuentecon más

9

Page 10: Cur So Linux 009

memoriadetodosmodosesrecomendableunaparticióndeintercambio.El tamañomínimode la partición de intercambio debería ser mayor o igual a la memoria RAM delcomputador,o a 16 MB. De preferenciamucho mayor a la memoria del computadordependiendo al carga de trabajo que tendrá según su funcionalidad.

La partición/boot: La partición/bootesunapequeñapartición(de no másde 25 MB paralas antiguasdistribucionesy 75 MB paralas últimas)queseusaparaalojar la imagendelsistemaoperativoLinux, es recomendableusar estápartición ya que el sistemala leesolamenteal inicio y una vez cargadoel sistemaprácticamenteno poseeaccesolo queminimiza la probabilidad de errores en disco.

La partición raíz: La partición raíz es dondereside/ (el directorio raíz). Sólo necesitacontenercosasnecesariasparaarrancarel sistema,asícomolos archivosdeconfiguracióndel sistema.Una partición raíz de 600MB a 1000MB funcionarabien en casi todas lasdistribuciones.( En sistemasIntel no se debe olvidar las restriccionesdel LILO quemencionaron anteriormente).

La partición /usr: La partición /usr donderesidirágran partedel softwarede un sistemaLinux. Esta partición deberáser de unos 1000 a 2000 MB, dependiendode cuantospaquetessequieraninstalar.Siemprequeseaposible,sedebeintentarsergenerosocon lapartición /usr. Cualquierpaquetebasadoen RPM quese instaledespuéssegenerarámásespacio en /usr que ninguna otra partición.

La partición /var: La partición /var es usadapara los archivos de spool (colas deprocesamientopor lotes) y reportesde sistema.Si está partición va ser usada pararecipientes de correo y alojamiento de sitios WEB como es el caso de algunasdistribucionesesrecomendablequeestapartición sealo suficientementegrandede modoqueno se llene la particióna futuro, paraestecasouna tamañorecomendablesería2000MB. Si estápartición sólo tendrácolas de impresión y reportesde sistemael tamañoreservado recomendable sería 300 MB.

La partición/home:Aquí esdondesesitúanlos directorioshome(directorioraízprincipal)de los usuariosde Linux. El tamañode /home dependedel numerode usuariosque seplaneentenerenel sistemaLinux y dequéespaciodealmacenamientoestedestinadoa susdirectorios /home.

La partición/opt: Existencasosenqueel sistemapuedeestardestinadoa basesde datosyprogramasde aplicación de gestión que necesitengran cantidad de almacenamientohistórico.En estecasoesrecomendablecontarcon unapartición/opt en la cual sealojenlos archivosdebasededatosy/o programasdeaplicación,por lo queestáparticióndebesemuy granderespectode las demás,dependiendode crecimientohistórico de los datosesrecomendable asignar un tamaño sobre los 10 GB de almacenamiento o más.

10

Page 11: Cur So Linux 009

Estructura y funcionamiento

Linux seinicia despuésdequela BIOS le pasael controla LILO, LILO a suvez le pasaelcontrol al núcleode Linux. El núcleoes el programacentraldel sistemaoperativo,quecontrolaa todoslos demásprogramas.Lo primeroquehaceLinux unavezquecomienzasuejecuciónes cambiar la CPU a modo protegido.El procesador80386 que controla elcomputadortiene dos modos que se denominan"modo real" y "modo protegido". ElsistemaoperativoDOScorreenmodoreal,al igual quela BIOS.Sin embargo,los sistemasoperativosmásavanzadosnecesitancorreren modoprotegido.Por ello, cuandoLinux seinicia, descartala BIOS. Los procesadoresdistintosal 386 llegana esteestadode maneradiferente.Ningún otro procesadornecesitacambiara modo protegido,y sólo unospocostienenun contextotan pesadode carga,como LILO y la BIOS. Una vez que arrancaelnúcleo,Linux trabajacasi de la mismamanera.A continuación,Linux mira queclasedehardwaretienedebajo.Necesitaademássaberqueclasede discosdurostiene,si hay o noun ratón serial, si estáa conectadoa una red, y otro tipo de información adicional dehardware.Linux no puederecordarciertascosasluego de apagado,de maneraque laspreguntacadavez que arranca.Duranteel arranque,el núcleo de Linux muestraunoscuantosmensajes,aunquecon ciertasvariaciones.Esteprocesode consultapuedecausaralgunosproblemasconel sistema,perosi lo hace,lo haráprobablementecuandoseinstaleLinux por primera vez. Si se tienen problemas, es recomendableconsultar ladocumentaciónde la distribución en particular. El núcleo solamente se ocupa deadministrarlos otros programas,entoncescuandoésteestásatisfechocon que todo andabien debearrancarotro programaparaque hagalos trabajosútiles. El programaque elnúcleo arranca se llama init.

BIOS

Lilo Linux Init

login

getty X server

shell Gestor de ventana

xdm

11

Page 12: Cur So Linux 009

Unavezqueel núcleoarrancainit, no lanzaningúnotro programa.El núcleosetransformaasíenun administradory proveedor,no enun programaactivo.Porlo tanto,parasaberquees lo que haceel computadorluego que el núcleoarranca,deberemosexaminarinit. Lacomplicadasecuenciade arranquepor la que atraviesainit no es idéntica en todos loscomputadores.ParaLinux existenvariasversionesde init, y cadaunahacelas cosasa sumanera.Ademástambiéninfluye si la máquinaestáen red,e inclusocual distribuciónseutilizó parainstalarLinux. Algunasde las cosasque puedensucedercuandoinit arrancason: El control de integridaddel sistemade archivos.(¿Quéesun sistemade archivos?.Un sistemadearchivosesla disposicióndelos archivosenel discoduros.Ademáspermiteque Unix sepa que partes del disco duro están ocupadas y cuales partes no.Desafortunadamente,ciertosfactorescomolos cortesenel suministrodeenergíahacenquela información que el sistemade archivostiene sobrela disposiciónen el disco de losarchivos no coincida con la disposiciónreal. En estoscasosse usa la utilidad de unprogramallamadofsck, queescapazdeencontrarestassituacionesy enmuchoscasos"consuerte"corregirlas).Se lanzanprogramasespecialesde encaminamientopara las redes.Estosprogramasinformana el computadorcómosesuponequepuedecomunicarseconlasotros. Se borran los archivos temporalesque crean ciertos programas.Se actualizacorrectamenteel reloj del sistema.Estoesmáscomplicadode lo quepuedeparecer,puesUnix de manerapredeterminada,necesitala horaen UCT (UniversalCoordinatedTime),tambiénconocidacomohorade Greenwich,y el reloj de la CMOS queesalimentadoporunabateríadentrodel computadormuy probablementeestaráconfiguradoconla horalocal.Esto significa quedebeteneralgúnprogramaque lea la hora del reloj de la CMOS y lacorrija transformándola en hora UCT.

Despuésque init termina con sus actividadesde arranque,comienzacon sus tareasplanificadas.init se convierteasí en el padrede todoslos procesosdel sistemaUnix. Unprocesoessimplementeun programaqueestáa corriendoo ejecutándose;comocualquierprogramapuedeejecutarsemásde unavez, entoncespuedehabermásdeun procesoparaun programadadoen particular.En Unix, los procesosson instanciasde un programasecreanmedianteuna llamadaal sistemaque es un servicio provisto por el núcleoque sedenominadafork. (su traducciónen españoles "bifurcación", esto es que un procesosebifurcaendosindependientes.)init bifurcaunoscuantosprocesos,los quea suvezbifurcanotrosprocesos.En Linux con todaseguridadinit ejecutavariasinstanciasde un programallamadogetty.El programagettypermitir iniciar el ingresodeun usuario,enrealidadgettyes un programapara obtenciónde un terminal que en muchoscasospuedeser serial oemulado,una vez que el getty está trabajandollama al programalogin que solicita elnombre de usuario y contraseñapara autorizar el ingreso al sistemasLinux, una vezautorizadoel usuariose ejecutael interpretede comandos(bash,tcsh, etc) y el usuariopuedeinteractuary/o usarel sistema.No necesariamenteinit llama a getty, tambiénpuedellamaral programaxdm (gdmo kdm delasúltimasdistribuciones),estallamadaseproducecuandole indicamosal sistemasqueseinicie automáticamenteen modografico,el xdm osussucesoresllamarana login paraque solicite el nombrede usuarioy contraseñaparaautoriceel ingresoal sistema,unavezautorizadoselevanteel gestorde ventanasdefinidopara el usuario(interfaz gráfica) y el usuariopuedecomenzara usar el sistemaen unentorno de ventanas (parecido a Windows).

12

Page 13: Cur So Linux 009

Organización y permisos de archivos y directorios

Conceptos de permisos de archivos

Al serUNIX un sistemamultiusuario,paraprotegerarchivosdeusuariosparticularesde lamanipulación por parte de otros, UNIX proporciona un mecanismoconocido comopermisosde archivos.Estemecanismopermitequearchivosy directorios"pertenezcan"aun usuarioenparticular.Por ejemplo,comoRicardocreaarchivosen su directorio\home,Ricardo es el propietario de esos archivos y tiene acceso a ellos.

UNIX también permite que los archivos seancompartidosentre usuariosy grupos deusuarios.Si Ricardo lo desea,podrárestringir el accesoa susarchivosde forma de queningúnotro usuariotengaacceso.De cualquiermodo,en la mayor a de los sistemaspordefectose permiteque otros usuariospuedanleer los archivosde algúnusuariopero nomodificarlos o borrarlos.

Comosehaexplicado,cadaarchivopertenecea un usuarioenparticular.Porotraparte,losarchivos también pertenecena un grupo en particular, que es un conjunto de usuariosdefinidopor el sistema.Cadausuarioperteneceal menosa un grupodeusuarioscuandoescreado.El administradordel sistemapuedehacerqueun usuariotengaaccesoa másde ungrupo.

Los gruposusualmentesondefinidospor el tipo deusuariosqueaccedena la máquina.Porejemplo,enun sistemaUNIX deunauniversidad,los usuariospuedenserdivididos en losgrupos estudiantes,dirección, profesorese invitados. Hay también unos pocos gruposdefinidospor el sistema(como bin y admin) los cualessonusadospor el propio sistemaparacontrolarel accesoa los recursosy no esusalquelos usuariosnormalespertenezcanaestos grupos.

Los permisosestándivididos en tres tipos: lectura,escrituray ejecución.Estospermisospuedenser fijadosparatresclasesde usuarios:el propietariodel archivo,el grupoal quepertenece el archivo y para todos los usuarios independientemente del grupo.

El permisode lecturapermitea un usuarioleerel contenidodel archivoo enel casode undirectorio,listar el contenidodel mismo(usandoel comando"ls"). El permisodeescriturapermite a un usuario escribir y modificar el archivo. Para directorios, el permiso deescriturapermitecrearnuevosarchivoso borrararchivosya existentesen dichodirectorio.Por ultimo, el permisode ejecuciónpermite a un usuarioejecutarel archivo si es unprogramao guión del intérpretede comandos.Paradirectorios,el permisode ejecuciónsepermite al usuario cambiar al directorio en cuestión con el comando "cd".

Interpretando los permisos de archivos

Ejemplo del uso de permisos de archivos. Usando el comando "ls" con la opción -l se puedever a un listado de los archivos, el cual incluye los permisos de archivos.

13

Page 14: Cur So Linux 009

/home/ricardo/foo# ls -l stuff-rw-r--r-- 1 ricardo users 505 Mar 13 19:05 stuff

/home/ricardo/foo#

El primercampoimpresoenel listadorepresentalos permisosdearchivos.El tercercampoesel propietariodel archivo(ricardo),y el cuartoesel grupoal cual perteneceel archivo(users).Obviamente,el ultimo campoes el nombredel archivo (stuff), y los demáscampos los trataremos más adelante.

Estearchivopertenecea ricardoy al grupousers.Echemosun vistazoa los permisos.Lacadena-rw-r--r-- nosinforma,por orden,de los permisosparael propietario,el grupodelarchivo y cualquier otro usuario.

El primer carácterde la cadenade permisos("-") representael tipo de archivo. El "-"significa que es un archivo regular. Las siguientestres letras ("rw-") representanlospermisosparael propietariodel archivo, ricardo. El caracter"r" para lecturay "w" paraescritura. Luego Ricardo tiene permisos de lectura y escritura para el archivo stuff.

Comoseha mencionado,apartede los permisosde lecturay escrituraestáa el permisodeejecución,representadopor una"x". Comohay un "-" en lugar de "x", estosignifica queRicardono tienepermisoparaejecutaresearchivo.Estoescorrecto,puestoquestuff no esun programadeningúntipo. Porsupuesto,comoel archivoesdeRicardo,puededarsea simismo permiso de ejecución si lo desea.

Los siguientestrescaracteres,r-- representanlos permisosparalos miembrosdel grupo.Elgrupo al que pertenece el archivo es users. Como solo aparece una "r" cualquier usuario quepertenezca al grupo users puede leer este archivo.

Los últimos tres caracteres,también r--, representanlos permisospara cualquier otrousuariodel sistema(diferentesdel propietarioo de los pertenecientesal grupousers).Denuevo,comosóloestáa presenteel carácter"r", los demásusuariospuedenleerel archivo,pero no escribir en el o ejecutarlo.

Aquí tenemos otros ejemplos de permisos de grupo.

-rwxr-xr-x El propietariodel archivopuedeleer,escribiry ejecutarel archivo.Losusuariospertenecientesal grupo del archivo, y todos los demásusuariospuedenleer yejecutar el archivo.

-rw------- El propietariodel archivo puedeleer y escribir. Nadie más puedeacceder al archivo.

-rwxrwxrwx Todos los usuarios pueden leer, escribir y ejecutar el archivo.

14

Page 15: Cur So Linux 009

Dependencias

Es importantedarsecuentade que los permisosde un archivo tambiéndependende lospermisosdel directorio en el que residen.Por ejemplo, aunqueun archivo tenga lospermisos-rwxrwxrwx, los otros usuariosno podránaccedera el a menosque tambiéntenganpermisode lecturay ejecuciónparael directorioenel cual seencuentrael archivo.Si Ricardoquiererestringir el accesoa todossusarchivos,podrásimplementeponer lospermisosde su directorio "/home" (/home/ricardo)a -rwx------. De esta forma ningúnusuariopodráaccederasudirectorioni a ningunodesusarchivoso subdirectorios.Ricardono necesita preocuparse de los permisos individuales de cada uno de sus archivos.

En otraspalabras,paraaccedera un archivo, se debede tener permisode ejecucióndetodos los directoriosa lo largo del caminode accesoal archivo, ademásde permisodelectura (o ejecución) del archivo en particular.

Habitualmente,los usuariosde un sistemaUNIX sonmuy abiertoscon susarchivos.Lospermisosquese dan a los archivosusualmenteson -rw-r--r--, lo que permitea todoslosdemásusuariosleer los archivos,perono modificarlosde ningunaforma.Los directorios,usualmentetienenlos permisos-rwxr-xr-x, lo quepermitequelos demásusuariospuedanmoverse y ver los directorios, pero sin poder crear o borrar nuevos archivos en ellos.

Muchosusuariospuedenquererlimitar el accesodeotrosusuariosa susarchivos.Poniendolos permisosde un archivoa -rw------- no sepermitir a a ningúnotro usuarioaccederalarchivo. Igualmente, poniendo los permisos del directorio a -rwx------ no se debe permitir alos demás usuarios acceder al directorio en cuestión.

Cambiando permisos

El comandochmodseusaparaestablecerlos permisosde un archivo.Solo el propietariopuede cambiar los permisos del archivo. La sintaxis de chmod es:

chmod fa,u,g,ogf+,-gfr,w,xg h lenamesi

Brevemente,indicamos a que usuarios afecta all, user, group o other. Entoncesseespecificasi se estánañadiendopermisos(+) o quitándolos(-). Finalmentese especificaque tipo de permiso lectura, escritura o ejecución (read, write o execute).Algunosejemplos:

chmod a+r stuffDa a todos los usuarios acceso al archivo.

chmod +r stuffComo arriba| si no se indica a, u, g o o por defecto se toma a.

15

Page 16: Cur So Linux 009

chmod og-x stuffQuita permisos de ejecución a todos los usuarios excepto al propietario.

chmod u+rwx stuffPermite al propietario leer, escribir y ejecutar el archivo.

chmod o-rwx stuff

Quita permisosde lectura, escrituray ejecucióna todos los usuariosmenosalpropietario y a los usuarios del grupo del archivo.

Manejando enlaces de archivos

Los enlacesle permiten dar a un único archivo múltiples nombres.Los archivos sonidentificadospor el sistemapor su númeroinodo, el cual es el único identificador delarchivo para el sistema de archivos. Un directorio es una lista de números de inodos con suscorrespondientesnombresde archivo. Cada nombre de archivo en un directorio es unenlace a un inodo particular.

Enlaces duros (Hard links)

El comandoln es usadapara crear múltiples enlacespara un archivo. Por ejemplo,supongamosquetieneun archivofoo enun directorio.Usandols -i, seve númerodeinodopara el archivo.

# ls -i foo22192 foo#

Aquí, el archivo foo tieneel númerode inodo 22192en el sistemade archivos.Podemoscrear otro enlace a foo, llamado bar:

# ln foo bar

Con ls -i se ve que los dos archivos tienen el mismo inodo.

# ls -i foo bar22192 bar 22192 foo#

Ahora,accediendoa foo o a bar accederemosal mismoarchivo.Si hacecambiosen foo,estoscambiostambiénserhanefectuadosen bar.Paratodoslos efectos,foo y bar sonelmismo archivo.

Estosenlacessonconocidoscomoenlacesduros(hardlinks) porquedirectamentecreanelenlaceal inodo. Nóteseque solo podemoscrearenlacesdurosentrearchivosdel mismo

16

Page 17: Cur So Linux 009

sistema de archivos; los enlaces simbólicos no tienen esta restricción.

Cuandoborraun archivoconrm, estáa solamenteborrandoun enlacea un archivo.Si usael comando

# rm foo

solo el enlace de nombre foo es borrado; bar todavía existirá. Un archivo es sólodefinitivamenteborrado del sistemacuando no quedanenlacesa él. Usualmente,losarchivostienenun únicoenlace,por lo queel usoderm los borra.Perosi el archivotienemúltiples enlaces,el uso de rm sólo borraráun único enlace;paraborrar el archivo, sedeben a borrar todos los enlaces del archivo.

El comando ls -l muestra el número de enlaces a un archivo (entre otrainformación).

# ls -l foo bar-rw-r--r-- 2 root root 12 Aug 5 16:51 bar-rw-r--r-- 2 root root 12 Aug 5 16:50 foo#

La segunda columna en el listado, "2", especifica el número de enlaces al archivo.

Así resultaqueun directoriono esmásqueun archivoquecontieneinformaciónsobrelatranslaciónenlacea inodo.también,cadadirectoriotieneal menosdosenlacesdurosen el:"/." (un enlaceapuntandoa si mismo)y "/.." (un enlaceapuntandoal directorioanterioropadre). En el directorio raíz "/", el enlace "/.." simplemente apunta a "/.".

Enlaces simbólicos

Los enlacessimbólicossonotro tipo de enlace,queesdiferenteal enlaceduro.Un enlacesimbólico permitedar a un archivo el nombrede otro, perono enlazael archivo con uninodo.

El comando"ln -s" creaun enlacesimbólicoa unarchivo.Porejemplo,si usamoselcomando

# ln -s foo bar

crearemosun enlacesimbólicobarapuntandoal archivofoo. Si usamosls -i, veremosquelos dos archivos tienen inodos diferentes, en efecto.

# ls -i foo bar22195 bar 22192 foo#

De cualquier modo, usando"ls -l" se ve que el archivo bar es un enlacesimbólicoapuntando a foo.

17

Page 18: Cur So Linux 009

# ls -l foo barlrwxrwxrwx 1 root root 3 Aug 5 16:51 bar -> foo-rw-r--r-- 1 root root 12 Aug 5 16:50 foo#

Los bits de permisos en un enlace simbólico no se usan (siempre aparecencomorwxrwxrwx). En su lugar, los permisosdel enlacesimbólico son determinadospor lospermisos del archivo apuntado por el enlace (en nuestro ejemplo, el archivo foo).

Funcionalmente,los enlacesdurosy simbólicossonsimilares,perohayalgunasdiferencias.Por unaparte,sepuedecrearun enlacesimbólicoa un archivoqueno existe;esteno esaplicableparaenlacesduros.Losenlacessimbólicossonprocesadospor el núcleodeformadiferentea los duros,lo cual essolo unadiferenciatécnica,peroa vecesimportante.Losenlacessimbólicosson de ayudapuestoque identifican al archivo al que apuntan;conenlaces duros no hay forma fácil de saber que archivo está a enlazado al mismo inodo.

Los enlacesse usan en muchaspartesdel sistemaLinux. Los enlacessimbólicos sonespecialmente importantes para las imágenes de las librerías compartidas en "/lib".

Interpretes de comandos

El shell de Unix

Esmuy fácil creararchivosenel sistemaoperativoUNIX. Porlo tanto,losusuariostiendena crearmuchosarchivosqueutilizan unagrancantidaddeespacio.Sehadichoquela únicacosaestándary comúna todoslos sistemasUNIX esel mensaje-del-díaqueles pide a losusuarios que borren los archivos que no necesitan.

(Guía del administrador de System V.2 4.1 Comandos Unix)

Cuandoingresaal sistemaUnix, seenfrentaconalgomáso menoscomolo quesemuestraa continuación:

/home/ricardo$

Ese"algo" sedenominaprompt.Comosunombresugiere,le solicitaal usuarioqueingreseun comando.Todoslos comandosUnix consistende una secuenciade letras,númerosycaracteres.No sonválidoslos espaciosdentrodel nombredel comando.Algunoscomandosválidossonmail, cat,y more.Algunoscaracteresno estánpermitidosserevisaráestetemamásadelante.Unix ademáshacediferenciaentremayúsculasy minúsculas,lo quesignificaqueCaty catsoncomandosdistintos.El promptsemuestracomoresultadodel accionardeun programa especial denominado intérprete de comando.

El intérpretedecomandoso shellaceptalos comandosqueescribeel usuarioy los ejecuta.Los comandospuedenformar programasen el lenguajedel intérpretede comandos,y adichos programas se los denomina "shell scripts".

18

Page 19: Cur So Linux 009

Los shell en Unix seclasificanen dos grandesgrupos:los tipo Bourney los tipo C. Losshell tipo Bournetomansu nombrea partir de su inventor,StevenBourne.StevenBourneescribióel shell original de Unix, denominadosh; a partir deentonces,la mayor a de losshells tienen un nombre con el sufijo sh para indicar que son extensiones de la idea original.Existen varias implementacionesde esteshell que colectivamentellevan el nombredeshellsBourne.tambiénsoncomuneslos shellstipo C cuyo original fue implementadoporBill Joy.Tradicionalmente,los shellBournesehanutilizadoparalos scriptsdeshell y porrazonesde compatibilidadcon el sh original, mientrasque los shells C han sido máscomunesen su aplicaci on interactiva.(Los C tienenventajasen cuantoa susmejorescaracterísticasinteractivas,aunqueson másdifíciles de programar.)Linux viene con unshellBournedenominadobash,escritopor la FundacióndeSoftwareLibre (FreeSoftwareFoundation).El nombrebashprovienedeBourneAgain SHell, unode los tantosjuegosdepalabrasenUnix. Setratadeun shellBourne"avanzado":tienelascapacidadesestándardeprogramaciónque se encuentranen todos los shells Bourne y ademásvarias de lascaracterísticasinteractivas que se encuentran en los shells C. bash es el shellpredeterminadocuandose usaLinux. Apenasingresapor primeravez, el prompt que elusuarove esproductode la accióndebash,enotraspalabras:el usuarioestáejecutandosuprimer programa Unix, el shell bash. Mientras está conectado,el shell bash estarápermanentemente funcionando.

Un comando Unix típico

El primer comandoquedebeconoceres cat. Parautilizarlo, escriba"cat" y luegooprimaintro:

/home/ricardo$ cat

Si tieneahorael cursorposicionadoen una líneanueva,entonceslo queha hechoestáabien. Existenunascuantasvariantesquese podríanhabertecleado,algunasfuncionarán,otras no.

Si setienealgúnerror de tecleoal escribir"cat", sedeberíahabervisto algomáso menosasí:

/home/ricardo$ ct ct: command not found/home/ricardo$

Por lo tanto,el shell le informaqueno pudoencontrarun programadenominado"ct", y leofreceotro promptparaseguirtrabajando.Ya semencionóqueUnix hacediferenciaentremayúsculas y minúsculas: CAT está a mal escrito.

Puede que el usuario haya escrito algunos espacios en blanco antes del comando, como:

/home/ricardo$ cat

19

Page 20: Cur So Linux 009

Sin embargo, el resultado es correcto, y el programa cat corre sin problemas.

Tambiénpuedeque haya oprimido un Intro en una línea en blanco; no se preocupeycontinúe, pues no tiene ningún efecto.

Si el usuariohaejecutadoconéxito el comando"cat" y estáa esperandoquehagaalgoquelo maraville.El comando"cat" no esun juego,catesunamuy buenautilidad queno parecemuy útil a primera vista. Escriba cualquier cosa y luego oprima Intro . Lo que ver a es:

/home/ricardo$ catHelp! I'm stuck in a Linux program!Help! I'm stuck in a Linux program!

(El texto inclinado marcaque es lo que he tecleado.)Lo que parecehaberhechocat esdevolverun ecode lo escrito.Estoesútil a veces,tal vez no ahora.ParaanalizarciertoscomandosUnix, tecleeCtrl-d. Ctrl-d esel caracterend-of-le,o EOF,paraabreviar.Puedequeen ciertoslibros de textoaparezcacomoend-of-text.Seharáreferenciaa estecaractercomoEOF. Es un caracterde control queinforma a los programasUnix queha cesadoelingresode datos.Cuandocat ve que no tecleamásnada,termina.Paraver otro ejemploparecido,pruebeel programasort. Como su nombrelo indica, sort es un programadeclasificación.Si un usuario tecleaunascuantaslíneasy luego oprime Ctrl-d , sort lasmostraráa la salidade maneraordenada.Estaclasede programasse denominanfiltros,porquetoman texto desdesu entrada,lo filtran, y lo vierten a su salida modificado dealgunamanera.Tantocatcomosortsonfiltros inusuales.catesinusualpuesleeel textodeentraday no lo cambia.sortesinusualporquelee todaslas líneasdeentradahastael EOF,antesdeemitir susalida.La mayoríadelos filtros trabajansobrela basedelíneapor línea:leen una línea de la entrada,realizancierto computo,y escribenuna línea diferentedesalida[4].

EL Manual de comandos (man)

El comandomanmuestralas páginasde la guíade referenciaparaun comandodadp.Porejemplo:

/home/ricardo$ man cat

cat(1) cat(1)

NAME

cat - Concatenates or displays files SYNOPSIS

cat [-benstuvAET] [--number] [--number-nonblank] [--squeeze-blank][--show-nonprinting] [--show-ends] [--show-tabs] [--show-all][--help] [--version] [file...]

20

Page 21: Cur So Linux 009

DESCRIPTION

This manual page documents the GNU version of cat ...

Hay aproximadamenteunapáginacompletade informaciónsobrecat.No sedebeesperarentenderla páginade manualcuandose usa por primera vez. Las páginasde manualsuponenun ciertoconocimientodeUnix, conocimientoquetal vezel usuariono poseaestemomento.Cuandoseterminade leer la página,esprobablequeseveaun bloqueenvideoinversoal final dela página,parecidoa "--more--" o a "Line 1". Setratadel pedidodemás(información) que contiene el manual.

En lugardedejarescaparel texto fueradelos límitesde la pantalla,mansedetieneal finaldecadapágina,y esperaparaver quehadecididohacerel usuario.Si deseaseguirleyendo,sepresionala barraespaciadoray seavanzaa unapágina.Si deseaterminarcon la lecturadela páginadelmanual,se presionala tecla"q" . Seretornaa entoncesal promptdel shell,que esperará hasta que el usuario escriba otro comando.

El manproveeademásunafunción de búsquedade palabrasclave.Por ejemplo,digamosqueel usuarioestáa interesadoenel temaPostScript,el lenguajedecontrolde impresorasdesarrolladopor Adobe. Si escribe"man -k ps" o "man -k Postscript",recibirá comoresultadounalista detodoslos comandos,llamadasal sistema,y otraspartesdocumentadasde Unix quecontenganla palabra"ps" (o "Postscript")en su nombreo descripciónbreve.Estopuedellegara sermuy útil cuandosequierebuscarunaherramientaparahaceralgo,pero no conoce su nombre o si existe.

21

Page 22: Cur So Linux 009

Interfaz gráfica de usuario

El sistema X Window

X Windowsesun enormeentornográficoparasistemasUnix, potentey tambiéncomplejo.Originalmentefue desarrolladopor el MIT, y desdeentonceslos desarrolladoresdesistemascomercialeshan convertido a las X en un estándarde las plataformasUnix.PrácticamentetodaslasestacionesdetrabajoUnix del mundoutilizanX Window enalgunade sus variantes.

Existe, desarrolladapor un equipo de programadoresinicialmente lideradospor DavidWexelblat,unaimplementacióngratuitade las X Windowsversión11, release6 (X11R6)parasistemasUnix con 80386/80486/Pentium.Estaimplementación,llamadaXFree86,seencuentradisponibleen Unix x86 como SystemV/386, 386BSDy por supuestoLinux.Incluye todos los binarios necesarios, archivos de soporte, librerías y utilidades.

Requisitos de hardware

La documentaciónque se incluye con el adaptadorde video debeespecificarcual es el"chipset" que utiliza. Si el usuarioestáa punto de comprarseuna nuevatarjeta gráfica,convienepediral vendedorel modeloexactodetarjetay "chipset"devideo.Estosupondrá,casi siempre,recurrir al servicio técnico,pero normalmentelos vendedoresno pondráninconvenientes.La mayor parte de los vendedoresde PCs se limitan a decir que suscomputadorestienen tarjetasgráficas "SVGA estándar"que tiene que funcionar en susistema.Si selesexplicaquesusoftware(nombrandoa Linux y XFree86,por supuesto)nosoporta todos los "chipsets" y que usted necesita por eso información más detallada.

Configuración de Xfree86

En las últimas distribucionesde Linux configurar XFree86 no suele ser difícil. Sinembargo,si va a usarmanejadoresde "chipsets"aún en desarrolloo se deseaobtenerelmejor rendimientoo resolución de una tarjeta aceleradora,configurar a la perfecciónXFree86 puede tardar bastante.

En estasecciónsedescribirácómocreary editarel archivoXF86Config,queconfiguraalservidor X en forma "manual". En muchos casos lo mejor es comenzar con unaconfiguraciónbásica,debajaresolución,como640x480puntos,queessoportadapor todaslas tarjetasy monitores.Una vez comprobadosu funcionamientoa baja resolución,sepuedepasara modificar la configuraciónparaexplotar toda la capacidadde la tarjetadevideo.

Además de la información que se da en esta documento,debe leerse la siguientedocumentación :

22

Page 23: Cur So Linux 009

La documentaciónpropia de XFree86en /usr/X11R6/lib/X11/doc(vienecon el paqueteXFree86-3.1-doc,ya debe ir en la versión 4.xx). Se debe prestarespecialatenciónalarchivo README.Config, que es un tutorial sobre la configuración de Xwindows.

Diferentes"chipsets"de video tendríansus propios archivosREADME en el directorioanterior (por ejemplo, README.Cirrus). Léase el que corresponda.

Las páginas de manual para Xfree86.Las páginas de manual para XF86Config.

Las páginasde manualparael servidorconcretoqueutilice (como XF86 SVGA o XF86S3).

El archivo de configuración principal debe ser /usr/X11R6/lib/X11/XF86Config.Estearchivo contieneinformación acercadel ratón, parámetrosde la tarjeta gráfica, etc. ElarchivoXF86Config.edesun ejemploqueincluyela distribución.CopieestearchivocomoXF86Config y modifíquelo para su sistema.

23

Page 24: Cur So Linux 009

Kernel y módulos

¿Que es el Kernel (núcleo) del Linux?

En síntesisel Kernel del Linux es el corazónde sistema,es decir, es en sí el sistemaoperativo.El núcleodeUnix actúacomointermediarioentrelos programasy el ordenador.En primer lugar, gestionala memoriade todoslos programaso procesos,y seaseguradequeserepartenlos ciclos del procesador.Además,proporcionaunainterfazportableparaque los programasse comuniquenfácilmente con su hardware[5]. Esta encargadodemanejarel sistemasde archivosy directorio,organizael uso de los recursode hardware,proveede mecanismosde proteccióny estabilidad,e interactuamediantemóduloscon losdispositivos tales tarjetas de sonido, tarjetas Red, Scanner, etc.

Es necesarioactualizarlos núcleos,ya quelos nuevosnormalmenteofrecenla posibilidaddeentenderseconmásaccesorioshardware(o sea,incluyenmásmanejadoreso drivers),seejecutanmásrápidamente,sonmásestableso corrigenerroresde otrasversiones.Muchagenteseactualizael núcleoparapoderusarnuevosmanejadoresquenecesitano librarsede"bugs" de la versión que usaban [5].

Módulos

Hay partesdel códigodel núcleoqueno seenlazandirectamenteenel núcleo.Secompilanpor separadoy luegoseincorporanal núcleoqueya estácorriendo.Es la forma preferidade usar algunos manejadores como los de dispositivos PCMCIA o de cintas QIC-80/40 Hoyen día la tendenciaes modularizar todos los controladoresposibles, salvo aquellosestrictamentenecesariosparaarrancar(ext2,ide,o SCSI,segúnel caso),aunquesiempresepuedehacerunaimageninitrd y sesiguepudiendoarrancarconLILO. kerneldseencargaráde cargarlos y descargarlos por nosotros cuando el sistema los necesite o no [5].

Cómo configurar el núcleo (kernel)

Obtención de los fuentes.

Se pueden obtener las fuentes por FTP anónimo deftp://ftp.funet.fi/pub/OS/Linux/PEOPLE/Linus/,enun "mirror". EnEspañasecuentaconelveloz y magnífico ftp://sunsite.rediris.eso en otros servidores.Típicamentetienen elnombrelinux-x.y.z.tar.gz,dondex.y.z esel númerodeversión.Lasversionesseencuentranendirectoriosv1.1,v1.2y v1.3Y 2.0y 2.1 . El númeromayoresel dela últimaversión,eneste caso versión de desarrollo. Le sugerimosque utilice un servidor "mirror" deftp.funet.fi, por ejemplo:

24

Page 25: Cur So Linux 009

EE.UU.: ftp://tsx-11.mit.edu/pub/linux/sources/system EE.UU.: ftp://sunsite.unc.edu/pub/Linux/kernel Inglaterra:ftp://sunsite.doc.ic.ac.uk/pub/unix/Linux/sunsite.unc-mirror/kernel/ Austria: ftp://fvkma.tu-graz.ac.at/pub/linux/linus Alemania: ftp://ftp.Germany.EU.net/pub/os/Linux/Local.EUnet/Kernel/Linus Alemania: ftp://ftp.dfv.rwth-aachen.de/pub/linux/kernel Francia: ftp://ftp.ibp.fr/pub/linux/sources/system/patches Australia: tp://kirk.bond.edu.au/pub/OS/Linux/kernel España: ftp://sunsite.rediris.es/pub/linux/kernel/sources

Descompresión de los fuentes

Ingresaren la cuentaroot e ir al directorio /usr/src.Si se instalaronlas fuentescuandoinstaló Linux, habrá aquí un directorio linux, con las fuentes antiguas.Si se quierepreservaresasfuentes(y se tiene espaciode sobra),renombre(con mv) esedirectorio alinux-x.y.z (la versión actual x.y.z se puede obtener con el comandouname -r). Esimportante que antes de descomprimir las nuevasfuentes no haya ningún directorio/usr/src/linux.

Ahora, en /usr/src, se descomprimen las fuentes con

tar xvfzp linux-x.y.z.tar.gz

(si sólosetieneunarchivo.tar,sin .gz,seeliminala z del comandotar).Los contenidosdelarchivo se expandiránen /usr/src/linux.Se debeingresarahoraa esedirectorio y leer elarchivoREADME. Aquí seencontraráunasección `INSTALLING the kernel''.Sedebenseguir las instruccionesque allí se describen(aunqueen las siguienteslíneas se haráreferencia de cómo hacer esto)[5].

Configuración del núcleo

Paraconfiguracióndel Núcleoexistentresposibilidades,ejecutandoel comandomakeeneldirectorio /usr/src/linux con los siguentes argumentos;

1.- make config

Estaopción inicia un programashell-scriptde configuraciónquepreguntabastantescosasen forma interactiva.Requiereque estéinstaladobash,con lo quedebeexistir /bin/bash,/bin/sh o la variable $BASH.

2.- make menuconfig

Este comando,iniciará un colorido programa(escrito con lxdialog) muy agradableybastantemásfuncionalqueel makeconfig, parallevar a cabola configuracióndel kernel.

25

Page 26: Cur So Linux 009

Suusoesbastanteintuitivo; lasopcionesconun < > indicanla posibilidaddemodularizar;si en ella presionamosM se seleccionarácomo módulo. Si presionamosESPACIOapareceráun * indicandoqueseráincluido en el kernel.Finalmente,si presionamosN lodeseleccionaremos [5].

3.- make xconfig

Estaopcióndeconfiguracióndebeserejecutadadesdeun xterm,ya queposeeunainterfazgráfica de configuraciónde kernel, es fácil de usar y presentatodas las opcionesdeconfiguración que las anteriores.

Compilación del núcleo

Dependencias y limpieza

Cuandose termina de configurar, se indica que se debeejecutar`make dep' y `clean'.Ejecute`makedep',esteprepararálas dependenciasen pocotiempo,a menosel PC en elcualsecompilaseamuy lento.Cuandotermine,ejecute makeclean'.Estoeliminaarchivosobjetos y demás de la versión anterior. No olvidar este paso.

El momento de compilar

Despuésde preparardependencias,sedebeejecutar makezImage'o `makezdisk' (estaesla partequetardamástiempo).`makezImage'compilaráel núcleoy lo dejarácomprimidoen arch/i386/boot/zImagejunto a otros archivos.Con `make zdisk' el nuevo núcleo secopiaráademásenel disquetequeestépuestoen la disquetera`A:''. `zdisk' esinteresanteparaprobarnúcleos;si explota (o simplementeno hacenada)se quita el disquetede ladisqueteray podráarrancarcon el antiguo núcleo.Ademássirve paraarrancarsi borróaccidentalmenteel núcleo del disco duro. También puedeusarlo para instalar nuevossistemas simplemente volcando el contenido de un disco en otro.

Los núcleosrecientesestáncomprimidos,con una`z' comenzandosu nombre.Un núcleocomprimido se descomprime automáticamente al ser ejecutado.

Otras opciones del `make'

Con`makemrproper'haráunalimpiezamuchomás``intensa''.Suelehacerfalta cuandoseactualiza(parchea)el núcleo.Peroestaopciónborratambiénsu archivode configuracióndel núcleo,así que guardeuna copia del correspondientearchivo .config si creeque leinteresa.

La opción`makeoldconfig' intentaráconfigurarel núcleoconun archivodeconfiguraciónanteriorA partir del 2.0.xxno esnecesario,makerecuerdala última configuraciónevitandotodoel procesodel `makeconfig'.Si nohacompiladoanteriormenteel núcleoo no tieneunarchivodeconfiguraciónanterior,no lo elija puesnormalmentequerráalgoquesesalgadela configuración por defecto.

26

Page 27: Cur So Linux 009

Para compilación con módulos, vea la sección correspondiente.

Instalación del núcleo

Una vez que se tengaun nuevo núcleo que parezcafuncionar como se desea,seráelmomentode instalarlo.Casi todo el mundoutiliza LILO (LInux LOader)paraesto.Con`makezlilo' seinstalaráel núcleoejecutandoLILO, quedandolisto parareiniciar,peroestosolofuncionarási LILO estábienconfiguradoparasusistema:el núcleoes/vmlinuz,LILOestá en /sbin y la configuración de LILO (/etc/lilo.conf) es coherente con lo anterior.

En otro caso,se necesitaráusar LILO directamente.Hay un paqueteque lo instala demaneraadecuada,perosuarchivode configuracióntiendea confundira la gente.Observeel archivodeconfiguración(estaráen /etc/lilo.confo en /etc/lilo/configparaversionesmásantiguas), y vea cuál es la configuración actual. El archivo de configuración será como éste:

image = /vmlinuz label = Linux root = /dev/hda1 ...

La línea`image=' apuntaal núcleoinstaladoactualmente.Casisiemprees/vmlinuz. `label'es el identificador usadopara seleccionarqué sistemaarrancar,y `root' es el disco oparticióna usarparael directorioraíz.Hagaunacopiadeseguridaddesuantiguonúcleoycopieen /vmlinuz o dondedigael archivoanteriorel archivozImagequehayageneradoelprocesode compilación.Ahora, ejecuteLILO (en sistemasmodernos,serásimplementeteclear `lilo'. En sistemasantiguos,habrá que poner `/etc/lilo/install' o `/etc/lilo/lilo -C/etc/lilo/config'.)

Si quieresabermássobrela configuraciónde LILO, o no tieneLILO, obtengala versiónmás reciente de su servidor FTP favorito y siga las instrucciones que le acompañan.

Paraarrancaruno desusantiguosnúcleos,copielas líneasanterioresincluyendo`image=xxx' al principio del archivodeconfiguracióndeLILO, y cambie`image= xxx' por `image= yyy' donde`yyy' esel nombrede caminocompletoal archivode la copiade seguridadguardada.Ahora,cambie`label = zzz' por `label = linux-backup'y reejecuteLILO. Puedeserquenecesiteponerunalíneaenel archivocon`delay=x'dondex sonlascentésimasdesegundoqueLILO esperaráantesde arrancarcon la primeraopción,de modoquepuedainterrumpirse(con la teclaSHIFT) y seleccionarsequénúcleodeseaarrancar(tecleandolaetiqueta (label) asignada).

Inciso de la revisión 2.1

Una forma muy cómodade llevar todo el temadel LILO, si lo tenemosinstalado,y lascompilaciones, etc, es añadir lo siguiente en el /etc/lilo.conf:

...

27

Page 28: Cur So Linux 009

image=/vmlinuz label=ultimo root=/dev/hd[loquesea] read-only append = "" image=/vmlinuz.old label=anterior root=/dev/hd[loquesea] read-only append = ""

Al compilar, si lo hacemos con la secuencia de comandos

# make dep; make clean; make zlilo; make modules; make modules_install

el makezlilo renombrarála anteriorimagendel kernela /vmlinuz.old , dejandola nuevacomo /vmlinuz, e instalará LILO, a continuación con lo cual lo hacemos todoautomágicamente.

La órdenesmake modules;makemodules_installcompilaránlos módulosque hayamosseleccionado,y los instalarán.No olvidar ejecutardepmod-a encuantohayamosarrancadocon dicho núcleo.

En casode que estemoscompilandopor segundavez una misma versión de núcleo, yhayamosvariadoel númerode módulosa compilar,esposiblequela ejecutar"makedep"nosencontremosconun mensajedeerror;estosedebea quelos antiguosmódulosquenohayamos compilado ahora no son borrados. Pueden borrarse tranquilamente.

Módulos

Los módulos del núcleo cargablespermiten simplificar la configuración del núcleo yahorrar memoria. Sirven para añadir dinámicamentenuevos soportesde sistemasdearchivos o manejadores, a un núcleo que ya está corriendo.

Instalación de las utilidades asociadas

Estas utilidades están disponibles allí donde esté el núcleo, como modules-x.y.z.tar.gz. Elijael quecorrespondaa sunúcleo.Descomprímalocon`tar zxvf modules-x.y.z.tar.gz',cambieal directorioquecrea(modules-x.y.z),léaseel archivoREADME, y sigalas instruccionesdeinstalación(normalmente,tansimplecomo`makeinstall').Conello tendrálasutilidadesinsmod,rmmod,ksyms,lsmod,genksyms,modprobey depmoden/sbin.Si lo desea,puedeprobarel manejadorejemplo``hw'' con insmod;leael archivoINSTALL paramásdetalle.insmodinsertaun móduloen el núcleoarrancado.Generalmentelos módulossonarchivos.o; el manejadorejemplo es drv_hello.o, con lo que para insertarlo se usaría`insmoddrv_hello.o'. Para ver los módulos cargados, pruebe lsmod. La salida será como ésta:

28

Page 29: Cur So Linux 009

blah# lsmod Module:#pages:Used by: drv_hello1

`drv_hello' es el nombredel módulo, que usa una página (4k) de memoria,y no haymódulos que dependande él en este momento.Para quitar el módulo, teclee `rmmoddrv_hello'.Vea quermmodnecesitael nombredel módulo,no del archivo.Esenombreloobtiene al listar los módulos instalados [5].

Administración del Sistema

La cuenta root

Los usuariosnormalesestánrestringidosusualmenteparaqueno puedandañara nadiemásen el sistema,sólo a ellos mismos.Los permisosde los archivosen el sistemaestánpreparadosparaquelos usuariosnormalesno tenganpermitidoborraro modificararchivosen directorios compartidospor todos los usuarios(como son /bin y /usr/bin). Muchosusuariostambiénprotegensuspropiosarchivosconlos permisosadecuadosparaqueotrosusuarios no puedan acceder o modificar estos archivos.

Estasrestriccionesdesaparecenpararoot. El usuarioroot puedeleer, modificar o borrarcualquierarchivo en el sistema,cambiarpermisosy pertenenciasen cualquierarchivo,yejecutarprogramasespeciales,como puedenser los que particionanun disco o creansistemasdearchivos.La ideabásicaesquela personao personasqueejecutany gestionanel sistemaentrencomoroot cuandosólo seanecesariopararealizartareasqueno puedenserejecutadaspor un usuarionormal.Puestoqueroot puedehacertodo, es fácil cometererrores que tengan consecuencias catastróficas cuando se trabaja utilizando esta cuenta.

Gestión de Usuario

Independientementede que tenga muchosusuarioso no en el sistema,es importantecomprenderlos aspectosde la gestiónde usuariosbajo Linux. Incluso si se es el únicousuario,se debetener,presumiblemente,una cuentadistinta de root parahacerla mayorparte del trabajo. Cada personaque utilice el sistema debe tener su propia cuenta.Raramenteesunabuenaideael quevariaspersonascompartanla mismacuenta.No sóloesun problemadeseguridad,sinoquelascuentasseutilizan paraidentificarun unívocamentea los usuarios al sistema. Se necesita ser capaz de saber quién está a haciendo qué.

Conceptos de gestión de usuarios

29

Page 30: Cur So Linux 009

El sistemamantieneuna cierta cantidadde información acercade cadausuario.Dichainformación se resume a continuación.

Nombre de usuario

El nombrede usuarioes el identificadorúnico dadoa cadausuariodel sistema.Ejemplosde nombresde usuarioson ricardo, erick y mdw. Se puedenutilizar letras ydígitos junto a los caracteres"_" (subrayado)y "." (punto). Los nombresde usuarioselimitabannormalmentea 8 caracteresde longitud,actualmentealgunosUnix puedentenernombres de usuario de más de 8 caracteres.

user ID

El userID, o UID, esun númeroúnico dadoa cadausuariodel sistema.El sistemanormalmente mantiene la pista de la información por UID, no por nombre de usuario.

group ID

El group ID, o GID, es la identificacióndel grupo del usuariopor defecto.Másadelantese discutirá los permisosde grupo; cadausuariopertenecea uno o másgruposdefinidos por el administrador del sistema.

Clave

El sistematambiénalmacenala clave del usuariode maneracifrada.El comandopasswd se utiliza para poner y cambiar las claves de los usuarios.

Nombre completo

El "nombrereal"o "nombrecompleto"del usuariosealmacenajuntoconel nombrede usuario.Por ejemplo,el usuarioschmojpuedetenerel nombre"Josi schmo"en la vidareal.

Directorio inicial

El directorioinicial esel directorioqueusaráinicialmenteel usuarioencuandoesteutilizando el sistema.Cadausuariodebetener su propio directorio inicial, normalmentesituado bajo "/home".

Intérprete de inicio

El intérpretede inicio del usuarioes el intérpretede comandosque es arrancadoparael usuariounavezqueseconectaparausarel sistema.Ejemplospuedenser/bin/bashy /bin/tcsh.

El archivo /etc/passwdcontienela informaciónanterioracercade los usuarios.Cadalíneadel archivo contiene información acerca de un único usuario; el formato de cada línea es

30

Page 31: Cur So Linux 009

nombre:clave encriptada:UID:GID:nombre completo:dir.inicio:int erprete

Un ejemplo puede ser:

ricardo:Xv8Q981g71oKK:102:100:Ricardo Vallejos:/home/ricardo:/bin/bash

Como puede verse, el primer campo , "ricardo", es el nombre de usuario.

El siguiente campo, "Xv8Q981g71oKK", es la clave cifrada. Las claves no se almacenan enel sistemaen ningúnformato legible por el hombre.Las clavessecifran utilizándosea símismascomoclave secreta.En otraspalabras,sólo si se conocela clave,estapuedeserdescifrar. Esta forma de cifrado es bastante segura y se ha traducido como encriptación.

En la actualidadla mayoría de los sistemasutilizan "claves en sombra" en la que lainformación de las claves se asigna al archivo /etc/shadow.Puesto que el archivo/etc/passwdeslegiblepor todoel mundo,el archivo/etc/shadowsuministraun gradoextrade seguridad,puestoque esteno lo es.Las clavesen sombrasuministranalgunasotrasfunciones como puede ser la expiración de claves y otras utilidades más

El tercercampo"102", esel UID. Estedebeserúnico paracadausuario.El cuartocampo,"100", es el GID. Este usuarioperteneceal grupo numerado"100". La información degrupos, como la información de usuarios, se almacena en el archivo /etc/group.

El quinto campoesel nombrecompletodel usuario."RicardoVallejos". Los dosúltimoscamposson el directorio inicial del usuario"/home/ricardo"y el intérpretede conexión"/bin/bash",respectivamente.No esnecesarioqueel directorioinicial de un usuariotengael mismo nombre que el del nombre de usuario. Sin embargo,ayuda a identificar eldirectorio.

Creando Usuarios

Cuando se crea un usuario hay varios pasos a seguir en forma "manual". Primero, se le debecrear una entradaen /etc/passwd,con un nombre de usuario y UID únicos. Se debeespecificarel GID, nombrecompletoy restode información.Se debecrearel directorioinicial, y poner los permisosen el directorioparaque el usuarioseael dueño.Se debensuministrararchivosde comandosde inicializaciónen el nuevodirectorioy sedebehaceralgunaotra configuracióndel sistema(por ejemplo,prepararun recipienteparael correoelectrónico entrante para el nuevo usuario).

Aunqueno esdifícil el crearusuariosa mano,cuandoseestáa ejecutandoun sistemaconmuchosusuarios,esfácil el olvidarsede algo.La maneramássimpledecrearusuariosesutilizar un programainteractivo que vaya preguntandopor la información necesariayactualicetodoslos archivosdel sistemaautomáticamente.El nombrede esteprogramaesuseraddo adduserdependiendodel softwarequeestáinstalado.Laspáginasmanparaestoscomandos deberían ser suficientemente auto descriptivas.

31

Page 32: Cur So Linux 009

Eliminando usuarios

De forma parecida,borrar usuariospuedehacersecon los comandosuserdelo deluserdependiendo de qué software este instalado en el sistema.

Si sedesea"deshabilitar"temporalmenteun usuarioparaqueno seconecteal sistema(sinborrarla cuentadel usuario),sepuedeprefijar con un asterisco("*") el campode la claveen /etc/passwd. Por ejemplo, cambiando la línea de /etc/passwd correspondiente a kiwi a

ricardoi:*Xv8Q981g71oKK:102:100:Ricardo:/home/ricardo:/bin/bash

evitará que ricardo se conecte.

Asignando Atributos de usuario

Despuésde que hayacreadoun usuario,puedenecesitarcambiaralgúnatributode dichousuario,comopuedeserel directorioinicial o la clave.La formamássimpledehacerestoescambiarlos valoresdirectamenteen /etc/passwd.Paraasignarleunaclavea un usuario,utilice el comando passwd. Por ejemplo,

# passwd ricardo

cambiarála clave de ricardo. Sólo root puedecambiarla clave de otro usuariode estaforma. Los usuarios pueden cambiar su propia clave con passwd también.

En algunossistemas,los comandoschfn y chsh estándisponibles,permitiendoa losusuariosel cambiarsus atributosde nombrecompletoe intérpretede conexión.Si no,deben pedir al administrador de sistemas que los cambie por ellos.

Grupos

Como hemosse descritoanteriormente,cadausuariopertenecea uno o másgrupos.Laúnica importanciareal de las relacionesde grupo es la pertenecientea los permisosdearchivos,cadaarchivotieneun "grupopropietario"y un conjuntodepermisosdegrupoquedefine de qué forma pueden acceder al archivo los usuarios del grupo.

Hay variosgruposdefinidosen el sistema,comopuedenserbin, mail, y sys.Los usuariosno debenpertenecera ningunode estosgrupos;se utilizan parapermisosde archivosdelsistema.En sulugar,los usuariosdebenpertenecera un grupoindividual, comousers.Si sequiere ser detallista,se puedenmantenervarios gruposde usuarioscomo por ejemploestudiantes, soporte y facultad.

El archivo/etc/groupcontieneinformaciónacercadelos grupos.El formatodecadalínea es

nombre de grupo:clave:GID:otros miembros

32

Page 33: Cur So Linux 009

Algunos ejemplos de grupos pueden ser:

root:*:0: usuarios:*:100:mdw,ricardo invitados:*:200: otros:*:250:kiwi

El primer grupo, root, es un grupo especialdel sistemareservadoparala cuentaroot. Elsiguiente grupo, users, es para usuarios normales. Tiene un GID de 100.

Los usuariosmdw y ricardo tienen accesoa estegrupo. Ya se ha mencionadoque en/etc/passwdcadausuario tiene un GID por defecto.Sin embargo,los usuariospuedenpertenecera másdeun grupo,agregandosusnombresdeusuarioa otraslíneasdegrupoen/etc/group. El comando groups lista a qué grupos se tiene acceso.

El tercergrupo, invitados,es parausuariosinvitados,y otroses para"otros" usuarios.Elusuario kiwi tiene acceso a este grupo.

Comosepuedever, el campo"clave" de /etc/groupraramenteseutiliza. A vecesseutilizaparadarunaclaveparaaccedera un grupo.Estoesrarasvecesnecesario.Paraevitarel quelos usuarioscambiena gruposprivilegiados(conel comandonewgroup),seponeel campode la clave a "*".

Se puedenusar los comandosaddgroupo groupaddpara crear grupos a su sistema.Normalmentees más sencillo crear líneasa /etc/groupmanualmente,puestoque no senecesitanmásconfiguracionespara crearun grupo. Paraborrar un grupo, sólo hay queborrar su entrada de /etc/group.

Identificación y administración de procesos

Control de Tareas

Tareas y procesos

Control de Tareasesunautilidad incluida en muchosshells(incluidasBashy Tcsh),quepermite el control de multitud de comandoso tareasal momento.Antes de seguir,deberemos hablar un poco sobre los procesos.

Cadavez queun usuarioejecutaun programa,el usuariogeneralo que se conocecomoproceso,que es simplementeel nombre que se le da a un programacuando se estaejecutando.El comando ps visualiza la lista de procesosque se están ejecutandoactualmente, por ejemplo:

33

Page 34: Cur So Linux 009

/home/ricardo# ps

PID TT STAT TIME COMMAND 24 3 S 0:03 (bash)161 3 R 0:00 ps

/home/ricardo#

La columnaPID representael identificadorde proceso.La última columnaCOMMAND,esel nombredel procesoqueseestáejecutando.Ahora solo seven los procesosqueestáejecutandoel usuarioricardo.Ademásseve quehay dosprocesos,bash(Queesel shell ointérpretedecomandosqueusaricardo),y el propiocomandops.Comopuedeobservar,labashse ejecutaconcurrentementecon el comandops. El bashejecutóps cuandoricardotecleé el comando.Cuandops termina de ejecutarse(despuésde mostrar la tabla deprocesos),el control se retornaal procesobash,el que muestranuevamenteel prompt,indicando que está listo para recibir otro comando.

Un procesoque estacorriendose denominatareaparael shell. Los términosprocesoytarea,sonintercambiables.Sin embargo,sesueledenominar"tarea"a un proceso,cuandoesusadoenconjunciónconcontroldetareas,queesunacaracterísticadel shellquepermitecambiar entre distintas tareas.

Hay muchosmásprocesosapartede los quesemuestranejecutándoseen el sistema,paraverlos todos, se debe ingresar el comando "ps aux".

En muchoscasos,los usuariossolo ejecutanun trabajo cada vez, que es el últimocomandoqueellos ingresarondesdeel shell. Sin embargo,usandoel control de tareas,elusuariopodríaejecutardiferentestareasal mismo tiempo, cambiandoentrecadauno deellosconformelo necesite.¿Cuánbeneficiosopuedellegara seresto?.Supongamosqueelusuarioestácon su procesadorde textos,y de repentenecesitaparary realizarotra tarea,con el control de tareas,el usuariopodrásuspendertemporalmenteel editor, y volver alshell pararealizarcualquierotra tarea,y luego regresaral editor como si no lo hubiesedejadonunca.Lo siguientesoloesun ejemplo,haymontonesdeusosprácticosdel controlde tareas.

Primer plano y Segundo plano

Un procesopuedeestarenPrimerplanoo enSegundoplano.Solopuedehaberun procesoenprimer planoal mismotiempo,el procesoqueestáenprimerplano,esel queinteractúacon el usuario recibe entradasde teclado, y envía las salidasal monitor. (Salvo, porsupuesto,quehayaredirigidola entradao la salida).El procesoensegundoplano,no recibeningunaseñaldesdeel tecladopor lo general,se ejecutanen silencio sin necesidaddeinteracción.

Algunos programasnecesitanmucho tiempo para terminar, y no hacennadainteresante

34

Page 35: Cur So Linux 009

mientrastanto.Compilarprogramasesunadeestastareas,asícomotambiéncomprimirunarchivo grande. No tiene sentido que se sentarsey esperarmientras estos procesosterminan.En estoscasosesmejor lanzarlosen segundoplano,paradejarel ordenadorencondiciones de ejecutar otro programa.

Los procesospuedenser suspendidos.Un procesosuspendidoes aquel que no se estáejecutandoactualmente,sino que estátemporalmenteparado.Despuésde suspenderunatarea,puedeindicar a la misma que continúe,en primer plano o en segundo,segúnsenecesite.Retomarunatareasuspendidano cambiaen nadael estadode la misma,la tareacontinuará ejecutándose justo donde se dejó.

Hay que tener presenteen cuenta que suspenderun trabajo no es lo mismo queinterrumpirlo.Cuandoel usuariointerrumpeun proceso(generalmentecon la pulsacióndectrl-C), el procesomuere,y dejadeestarenmemoriay utilizandorecursosdel computador.Una vez eliminado,el procesono puedecontinuarejecutándose,y deberáserlanzadootravez para volver a realizar sus tareas.También se puede dar el caso de que algunosprogramas capturan la interrupción, de modo que pulsando ctrl-C no se parainmediatamente.Estosehaceparapermitir al programarealizaroperacionesnecesariasdelimpiezaantesde terminar.De hecho,algunosprogramassimplementeno sedejanmatarpor ninguna interrupción.

Envío a segundo plano y eliminación de procesos

Un ejemplosencilloesel usodel comandoyes,quees un comandoaparentementeinútilqueenvíaunaserieinterminablede yesa la salidaestándar.(Realmenteesmuy útil. Si seutiliza unatubería("pipe") paraunir la salidadeyesconotro comandoquehagapreguntasdel tipo si/no, la serie de yes confirmará todas las preguntas.)

Pruebe con esto.

/home/ricardo# yesyyyyy

La seriedeyescontinuaráhastael infinito, a no serqueel usuariola elimine,pulsandolateclade interrupción,generalmentectrl-C . Tambiénpuededeshacersedeestaseriedeyesredigiriendola salidaestándardeyeshacia/dev/null,queesunaespeciede"agujeronegro"o papelera para los datos. Todo lo que el usuario envíe allí, desaparecerá.

/home/ricardo# yes > /dev/null

Ahora va muchomejor, el terminalno se ensucia,pero el promptde la shell no retorna.Esto es porque yes sigue ejecutándosey enviandoesosinútiles yes a /dev/null. Para

35

Page 36: Cur So Linux 009

recuperarlo, se debe pulsar la tecla de interrupción.

Supongamosahoraquesequieredejarqueel comandoyessigaejecutándose,y volver almismo tiempo a la shell paratrabajaren otrascosas.Paraello se enviaráyes a segundoplano, lo que permitirá ejecutarlo, pero sin necesidad de interacción.

Una forma de mandarprocesosa segundoplanoesañadiendoun caracter"&" al final decada comando.

/home/ricardo# yes > /dev/null &[1] 164/home/ricardo#

Comoseobservaenel ejemploanterior,seharegresadoa la shell.¿Peroquéesesode"[1]164"?, ¿se está ejecutando realmente el comando yes?

En Símbolo"[1]" representael númerodetareadel procesoyes.La shellasignaun númeroa cadatareaqueseestéejecutando.Comoyesesel únicocomandoqueseestáejecutando,se le asignael númerode tarea1. El número"164" es el númerode identificacióndelproceso,o PID, que es el númeroque el sistemale asignaal proceso.Ambos númerospueden usarse para referirse a la tarea como veremos despúes.

Ahora el usuario tiene el proceso yes corriendo en segundo plano, y enviandoconstantementela señal y hacia el dispositivo /dev/null. Para chequearel estadodelproceso, se utiliza el comando interno de la shell jobs:

/home/ricardo# jobs[1]+ Running yes >/dev/null &/home/ricardo#

Tambiénpuedeusarel comandops,comomostramosantes,paracomprobarel estadodelatarea.

Paraeliminarunatarea,seutiliza el comandokill. Estecomandotomacomoargumentounnúmerode tareao un númerode ID de un proceso.Estaera la tarea1, asíqueusandoelcomando

/home/ricardo# kill %1

matarála tarea.Cuandoseidentifica la tareacon el númerode tarea,sedebeprecederelnúmero con el caracter de porcentaje ("%").

Ahora que ya se ha matado la tarea, se puede usar el comandojobs de nuevo para

36

Page 37: Cur So Linux 009

comprobarlo:

/home/ricardo# jobs

[1]+ Terminated yes >/dev/null

/home/ricardo#

La tareaestá,en efecto,muerta,y si usael comandojobs de nuevo,no mostraránada.

Tambiénpodrámatarla tareausandoel númerodeID deproceso(PID), el cualsemuestraconjuntamentecon el ID de tareacuandoarrancala misma. En esteejemplo el ID deproceso es 164, así que el comando

/home/ricardo# kill 164

es equivalente a

/home/ricardo# kill %1

No es necesariousarel "%" cuandose hacereferenciaa una tareaa travésde su ID deproceso.

Parada y relanzamiento de tareas

Hay otra manerade ponerunatareaensegundoplano.El usuariopuedelanzarlocomounproceso normal (en primer plano), pararlo, y después relanzarlo en segundo plano.

Primero, lance el proceso yes en primer plano como lo hará normalmente:

/home/ricardo# yes > /dev/null

De nuevo, dado que yes corre en primer plano, no debe retornar el prompt de la shell.

Ahora,en vez de interrumpirla tareacon ctrl-C , sesuspenderála tarea.El suspenderunatareano la mata:solamentela detienetemporalmentehastaqueel usuariola retoma.Parahacer esto el usuario debe pulsar la tecla de suspender, que suele ser ctrl-Z .

/home/ricardo# yes > /dev/nullctrl-Z[1]+ Stopped yes >/dev/null/home/ricardo#

37

Page 38: Cur So Linux 009

Mientrasel procesoestásuspendido,simplementeno seestaejecutando.No gastatiempode CPU en la tarea.Sin embargo,el usuariopuederetomarel procesode nuevocomosinada hubiera pasado. Continuará ejecutándose donde se dejó.

Pararelanzarla tareaen primer plano, se puedeusar el comandofg (del inglés"foreground").

/home/ricardo# fgyes >/dev/null

El shellmuestrael nombredel comandodenuevo,deformaquetengaconocimientodequetareaesla queha puestoen primer plano.Parela tareade nuevo,con ctrl-Z . Estavez seutiliza el comandobg paraponerla tareaensegundoplano.Estoharáqueel comandosigaejecutándoseigual quesi lo hubiesehechodesdeel principio con "&" comoen la secciónanterior.

/home/ricardo# bg[1]+ yes >/dev/null &/home/ricardo#

Y tenemosdenuevoel prompt.El comandojobsdeberáindicarqueyesseestáejecutando,y se puede matar la tarea con kill tal y como se indico anteriormente.

¿Cómosepuedepararla tareade nuevo?Si pulsactrl-Z no funcionará,ya queel procesoestáensegundoplano.La respuestaesponerel procesoenprimer planode nuevo,conelcomandofg, y entoncespararlo. Como se observase puedeusar fg tanto con tareasdetenidas, como con las que estén segundo plano.

Hay unagrandiferenciaentreuna tareaqueseencuentraen segundoplano,y unaqueseencuentradetenida.Unatareadetenidaesunatareaqueno seestáejecutando,esdecir,queno usatiempodeCPU,y queno estáhaciendoningúntrabajo(la tareaaunocupaun lugaren memoria,aunquepuedeser volcadaa disco). Una tarea en segundoplano, se estáejecutando,y usandomemoria,a la vezqueseestácompletandoalgunaacciónmientraselusuario esta realizandootro trabajo. Sin embargo,una tarea en segundoplano puedeintentarmostrartextoensu terminal,lo quepuederesultarmolestosi estáintentandohacerotra cosa. Por ejemplo, si se usó el comando

/home/ricardo# yes &

sin redirigir stdouta /dev/null, una cadenade yes se mostraráen el teminal, sin modoalgunodeinterrumpirlo(nosepuedehacerusodectrl-C parainterrumpirtareasensegundoplano). Parapoderparar esasinterminablesyes, se tendráque usarel comandofg parapasar la tarea a primer plano, y entonces usar ctrl-C para matarla.

Otra observación.Normalmente,los comandos"fg" y "bg" actúansobreel último procesoparado(indicadopor un "+" junto al númerode tareacuandousael comandojobs).Si setienenvariosprocesoscorriendoa la vez,sepodríamandara primer o segundoplanounatarea especifica indicando el ID de tarea como argumento de "fg" o "bg", como en

38

Page 39: Cur So Linux 009

/home/ricardo# fg %2

(para la tarea de primer plano número 2), o

/home/ricardo# bg %3

(parala tareade segundoplanonúmero3). No sepuedenusarlos ID de procesocon fg obg.

Además de esto, si usa el número de tarea por si solo, como

/home/ricardo# %2

es equivalente a

/home/ricardo# fg %2

Nótesenuevamenteque el uso de control de tareases una utilidad de la shell. Loscomandosfg, bg y jobs soninternosde la shell.Si por algúnmotivo el usuarioutiliza unashell que no soporta control de tareas, que no espere disponer de estos comandos.

Y además,hay algunosaspectosdel control de tareasquedifieren entreBashy Tcsh.Dehecho,algunasshellsnoproporcionanningúncontroldetareas,sin embargo,la mayoríadelas shells disponibles para Linux soportan control de tareas.

Cronómetro del sistema

El cronometrodel sistemaesunautilidad quepermiteprogramartareasparaserrealizadascadacierto periodo de tiempo o específicamenteen una fecha y hora determinada.Elarchivodeconfiguracióndeesteesel crontabel cualcontienelíneasdeconfiguracióndelasiguiente manera:

SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/

# run-parts01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.daily22 4 * * 0 root run-parts /etc/cron.weekly42 4 1 * * root run-parts /etc/cron.monthly

el orden de periodo es minutos, horas, días, semanas, años.

39

Page 40: Cur So Linux 009

Gestión de paquetes

Concatenación y Compresión de Archivos

Para la concatenaciónde archivos y/o directoriosexiste una utilidad llamada tar cuyafunción esla de concadenaro fusionarun conjuntode archivosy/o directoriosen un soloarchivo.Si por ejemplose cuentaun directorio llamadowgestor la forma de concadenareste directorio sería:

# tar cfv wgestor.tar wgestor/* (algunos unix necesitan un signo – antes “-cfv”)

donde,

c: indica a tar que se concadenarán archivos,f: hace referencia a que se usaran archivos o dispositivos, yv: indica el modo prolijo (muestra los archivos que va desconcaenando).

En estecaso todo el contenidodel directorio wgestor quedaríaen un archivo llamadowgestor.tar.

Para comprimir el archivo wgestor.tar generado se usa un programa llamado gzip, ejemplo:

# gzip wgestor.tar

la salida resultante será un archivo llamado wgestor.tar.gz.

Las ultimas versionesde tar han incluido el argumentoz para indicar que el archivoconcadenadoserá también comprimido, así por ejemplo los dos comandosanteriorespueden fusionarse en uno solo comando:

# tar czfv wgestor.tar.gz wgestor/*

otraformadenombrarel archivoconcadenadoy comprimidoseríausandola extensióntgz,ejemplo:

# tar czfv wgestor.tgz wgestor/*

De forma genérica el uso de este comando estaría dado por la estructura:

tar czfv <archivo de destino> <archivos fuente>

Nota: La utilidad tar posee más argumentos que pueden ser examinados con el manual de linux “man”.

40

Page 41: Cur So Linux 009

Descompresión y desconcadenación de Archivos

La descompresión de archivos .gz se realiza con el comando gzip, ejemplo:

# gzip –d wgestor.tar.gz

La salida es este comando sería el archivo wgestor.tar.

Por lo generalel archivo quese descomprimees un archivoconcadenado,por lo que sedebedesconcadenar,lo opuestoa la concatenaciónsepuederealizarpor su puestocon elcomando tar, pero cambiando el argumento c por x. Por ejemplo:

# tar xfv wgestor.tar

La salida de este comando sería todo el directorio wgestor que fue concadenado.

Como se menciona anteriormente,las ultimas versiones tar usan el compresor ydescompresor gzip con el argumento z. Por lo tanto en un solo comando podemos realizar ladescompresión de desconcadenación:

# tar xzfv wgestor.tar.gz

Configurador, Constructor e Instalador.

Porlo generallasnuevasversionesdelos paquetesdesoftwaredisponiblesparalinux estánen forma de programasfuentes,debidoa estoes que se introdujo parala distribucióndepaquetesUnix en generalun modelogenéricoquefacilita la compilaciónde paquetesy esindependiente del tipo de sistema Unix.

Parainstalaruno de estospaquetesquepor reglageneralposeenla extensión“.tar.gz” o“.tgz” se realizan los siguientes pasos:

1. Se descomprime y desconcadena el paquete:

# tar xzfv paquete.x.x.tgz

2. Se ingresa al directorio desconcadenado:

# cd paquete.x.x

3. Sellamaal configuradorel cualrevisarátodo el entornodel sistemaoperativoy crearáun archivo (Makefile) para el constructor:

4. Se ejecuta el constructor para compilar el paquete:

41

Page 42: Cur So Linux 009

# make

5. Se ingresa como súper usuario (root) se ejecuta el instalador:

# supassword:# make install

Se en todos estospasosno se han detectadoerroresen los procesosde configuración,compilación e instalación, el paquete se ha instalado correctamente.

Gestor de paquetes de RedHat

El Gestorde paquetesde RedHat (RPM, RedhatPackageManager)esunaaplicaciónqueadministrala instalacióny desinstalaciónde paquetesen Linux. Este administradordepaquetesno solo es usadopor la distribuciónRedHat,si no que se ha convertidoen unestándarLinux para la gestión de paquetesy fue adoptado por ejemplo por lasdistribuciones Suse y Mandrake.

El RPM es un gestor de paquetesque poseemejores característicasque los clásicosarchivos“tar.gz” o “tgz”, ya que contienelos paquetesprecompilados.,ademásde poseedentrodel formato RPM tareasde pre-instalacióny de post-instalación,otorgandoen lainstalaciónunamejor configuraciónenlasvariablesdeentornonecesariaspor el paqueteainstalar y una exhaustivacomprobaciónde los enlacesdinámicos y compatibilidadnecesaria para que el paquete sea instalado correctamente.

Para instalar un paquete RPM usamos por ejemplo el comando:

# rpm –ivh paquete.x.x-x.i386.rpm

Para desinstalar el paquete RPM usamos por ejemplo el comando:

# rpm –e paquete.x.x-x

42

Page 43: Cur So Linux 009

Principales Servicios Internet

Linux en sus distintas distribucionesincorpora diferentesservicios Internet, los cualesvienen preconfigurados y con pequeños cambios de configuración se pueden habilitar.

Httpd (Apache Server)

EsteservicioesllamadoApache,porqueel softwareservidordeWEB sedenominadeestaforma. El apachequedapreconfiguradoen la instalaciónde Linux y puedeser usadolevantandoel servicio (/etc/rc.d/init.d/httpdrestart).La identificación URL del servicioestará dada por el nombre de host que se le haya asignado el servidor Linux o en el dominioDNS de la Red.

Agentes Transmisores de Correo (MTA’,s)

Sendmail

El sendmailes el servicio de correospresenteen la mayoríade los servidoresUNIX, suarchivo principal de configuraciónes el "sendmail.cf" y se encuentrageneralmenteeldirectorio /etc o /etc/mail. Dentro de las consideracionespara la configuraciónde esteservicio,estála de incluir el archivosendmail.cw(o /etc/mail/sendmail.cw)los dominiospor los cualesse nonceráel servidor Linux que se usarácomo servidorde correo.Otroaspectoimportantees también agregaren el archivo /etc/mail/accesslos permisosdeRELAY correspondientes a la red o el dominio que será usado por sendmail.

Postfix

Las ultimas distribucionesde Linux talescomo RedHat8.0 o Mandrake9.0, poseenunagentedeTransmisióndecorreoLlamadoPostfix el cualposeeCaracterísticasmejorasencuanto a seguridad, confiabilidad y rendimiento con respecto al Sendmail.

Qmail

Qmail esotro Agentede Transmisiónde coreos,peroesteno vienecon las distribucionesdeLinux, muchasdelascaracterísticasdeQmail fuerontomadaspor postfix, paraaquellosadministradoresde sistemasquedeseanun pdoderosoagentede correosesrecomendableusar Qmail.

43

Page 44: Cur So Linux 009

Servicio POP

El servicio pop en si no interactuacon ningún host de correo,sino que es un programaservidorqueentregalos correoa clientesdecorreoPOPpreviasolicituddeenvíode estospor parte del cliente.

Servicio de Transferencia de Archivos (FTP)

El servicio de transferenciade archivosse utiliza generalmenteparaalmacenamientodearchivosquesedejanparadominiopúblicaenun servidor.Esteservicioseconfiguracomopartede los servicioinet o el modomejoradoxinet. Poseedosmodalidadesde acceso,unaa los usuarios y otra como usuarios anónimos.

FTP anónimo

Instalar FTP anónimoes sencillo. Bastacon instalarel paqueterpm anon-ftp (si no loseleccionó ya durante la instalación). Una vez instalado, FTP anónimo estará ejecutándose.

Para configurar su servidor FTP podría tener que modificar algunos archivos: /etc/ftpaccessEstearchivo define la mayoríade controlesde accesoen su servidorftp. Alguna de lascosasquepuedehaceresdefinir "grupos"lógicosparacontrolarel accesodesdediferentesubicaciones,limitar el númerodeconexionessimultáneasdeFTP,configurarel registrodetransferencias,y muchomás. Lea la páginadel manualde ftpaccessparaobtenermásdetalles. /etc/ftphosts

ftphostsSeusaparapermitir o denegarel accesoa ciertascuentasdesdediferenteshosts.Consulte la página del manual de ftphosts para obtener más detalles. /etc/ftpusersEs una lista de todoslos usuariosa los queno estápermitidoentrara travésde ftp en sumáquina. Por ejemplo,root estápor defectoen la lista. Eso significa que no se permitehacerftp a sumáquinacomoroot. Estaesunabuenamedidadeseguridad,aunquealgunosadministradores prefieren borrar root de este archivo.

44

Page 45: Cur So Linux 009

Referencias de Bases de datos y Lenguajes deProgramación

GCC

LasversionesdelcompiladorC, C++, ObjetiveC y Fortranestánintegradas;esporesoqueusamosel acrónimo GCC "GNU Compiler Colection". GCC puedeentoncescompilarprogramas escritos en C, C++, Objetive C o Fortran.

PERL

El PERL (Lenguaje práctico de extracción y reporte, Pactical extraction and ReportLanguage)es un lenguajede propósitogeneral,quesurgió con la idea de simplificar lastareasdeadministraciónde UNIX, peroquepor su potenciaseempleaen la actualidadenparadesarrollarmúltiplesaplicaciones,uno delos cualesesla escrituradeprogramasCGIpara el desarrollo de formularios web.

Es un lenguajeinterpretado,aunqueinternamentefuncionacomoun compilador.Aunquefue desarrolladooriginalmenteen un entornoUNIX, actualmenteexistenversionesparacasi todos los sistema operativos.

El PERLesampliamenteusadoenLinux parala programacióndeCGI (CommonGatewayInterface), y programas de gestión de sistemas.

PostgreSQL

El PostgreSQLesun motor o servidorde Basede Datosfácil de usary configurar,poseeinteraccióncon CGIs en C, y/o en Perl, permitiendoel desarrollode sistemasde BasedeDatoscon interfaz de WEB. Tambiénfuncionanbajo el modelocliente/servidor,ya queposeedriversODBC parainteractualconcualquierclienteWindows(Delphi,Visual Basic,Access, etc...).

ParacrearunaBasededatos,ingresamosa la cuentadel usuariopostgres,desdela cuentaroot:

# su postgrespostgres>

Luego creamos una Base de Datos postgres digitando el comando:

45

Page 46: Cur So Linux 009

createdb pruebapsql pruebaWelcome to the POSTGRESQL interactive sql monitor:

Pleasereadthe file COPYRIGHTfor copyright termsof POSTGRESQL type \? forhelp on slash commands

type \q to quit type \g or terminate with semicolon to execute query You are currently connected to the database: postgres prueba=>

Este es el prompt (símbolo de sistema) de postgres, ahora podemos ejecutar comandos.

prueba=>create table prueba (campo1 varchar(10));CREATE prueba=>insert into prueba values ('hello');INSERT numerito 1 prueba=>commit work;NOTICE:EndTransactionBlock and not inprogress/abort stateEND prueba=>select * from prueba;campo1------hello(1 row) prueba=>drop table prueba;DROP prueba=>Ctrl-d

Ya estamos fuera del monitor SQL.

En modográfico existeun utilitario escritoen TCL que nos ayudaa creartablasen unabase de datos:

# pgaccess

46

Page 47: Cur So Linux 009

SAMBA

Introducción

Sambaesel protocolode sesiónde bloquesde mensajes(SessionMessageBlock, SMB),también llamado protocolo NetBIOS o LanManager, en el Linux.

El protocoloSMB esusadopor Microsoft Windows3.11,NT y 95 paracompartirdiscoseimpresoras.

Usandoel paquetede herramientasSambacreadopor Andrew Tridgell, las máquinasUNIX (incluyendo Linux) pueden compartir discos e impresoras con servidores Windows.

Hay cuatro cosas que uno puede hacer con Samba:

Compartir una unidad de Linux con máquinas Windows.Compartir una unidad de Windows con máquinas Linux.Compartir una impresora de Linux con máquinas Windows.Compartir una impresora de Windows con máquinas Linux.Todos estos puntos están cubiertos en este documento.

Instalación

La última versión del código de Samba está disponible en: ftp://nimbus.anu.edu.au/pub/tridge/samba/.

De todas maneras,si se ha instaladola distribución Red Hat, Mandrake,Suseu otraavanzada, existe la opción de instalarlo como paquete.

Algunas otras distribuciones también incluyen los ejecutables de Samba.

Se requierenlos dos servicios (daemons)siguientespara el paqueteSamba.Se sueleninstalaren /usr/sbiny sepuedenejecutartantodesdelos scriptsdeinicio del sistemacomodesde inetd.

Ejecutando los demonios.

smbd (El servicio SMB)nmbd (Provee un derivcio de nombres de NetBIOS para soporte de clientes)

Habitualmente,se instalan en /usr/bin los siguientesejecutablesde Samba,aunquelalocalización (como de costumbre) es opcional.

47

Page 48: Cur So Linux 009

smbclient (Un cliente SMB para maquinas UNIX)smbprint (Un script para imprimir a una impresora en un servidor SMB)smbprint.sysv (Como el de encima, pero para máquinas UNIX SVR4)smbstatus (Lista de las conexiones SMB en marcha en el servidor local)smbrun (Un script 'cola' para facilitar la ejecución de aplicaciones en servidores).

Adicionalmente,seincluyeenesteCOMO un script llamado'print', quesirvecomoun útilfront end para el script smbprint.

El paqueteSambaessencillodeinstalar.Simplementesebajael códigofuentedel servidorque se nombra anteriormente, y se lee el archivo README de la distribución.

Hay tambiénun archivo llamadodocs/INSTALL.txt en la distribuciónqueda un sencilloconjunto de instrucciones paso a paso.

Siguiendocon la instalación,se debeubicar los programasservidoresen /usr/sbiny losejecutables en /usr/bin. Instalando las páginas del manual en /usr/local/man.

Cuandosecompilael paqueteSamba,sedebeespecificarenel Makefile la localizacióndelarchivodeconfiguración,smb.conf.Generalmentedeberíaestaren/etc,perosepuededejarencualquierubicación.Segúnla distribuciónla ubicacióndelos archivosdeconfiguraciónpuede estar en uno u otro directorio sobre /etc, lo usual que es que se ubique en/etc/smb.confo en /etc/samba/smb.conf.Ademásde estosarchivosde configuraciónsecuentatambiéncon unaarchivosde registrocuyaubicacióny nombrees /var/log/samba-log, también está el directorio de bloqueo /var/lock/samba.Instala el archivo deconfiguración,smb.conf.Ve al directoriodondesecompilóel Samba.Mira enel directorioexamples/simpley lee el archivo README. En ese directorio encontrarásel archivosmb.conf.

Cópialoen /etc. ¡TEN CUIDADO! Si tienesunadistribucióndeLinux quetieneel Sambainstaladoya, puedeque ya tengasun archivo de configuraciónen /etc. Probablementedeberíasusar el antiguo. Si no quieresque tu configuraciónestéen /etc, ponla dondequieras y luego pon un enlace simbólico en /etc:

ln -s /path/to/smb.conf /etc/smb.conf

Ejecutando los demonios

Los dos demonios de SMB son /usr/bin/smbd y /usr/sbin/nmbd.

Puedesejecutarlos demoniosde Sambadesdeinetd o comoprocesosindependientes.Siestásconfigurandoun servidor de archivospermanente,deberíanejecutarsedesdeinetdparaque seanreejecutadossi 'mueren'.Si solo quieresusarlos serviciosSMB de vez encuandoo comoayudaa la administracióndel sistema,puedesejecutarloscon un script en/etc/rc.d/init.d o incluso a mano cuando los necesites.

Para ejecutar los demonios desde inetd, pon las siguienteslíneas en el archivo deconfiguración de inetd, /etc/inetd.conf:

48

Page 49: Cur So Linux 009

# Servicios SAMBA NetBIOS (para compartición de archivos e impresoras en PC) netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd

Entonces reejecuta inetd con el siguiente comando:

kill -HUP 1

Para ejecutarlosdesdelos scripts de inicio del sistema,pon las siguienteslíneas en/etc/rc.d/init.d/smby hazle un enlace simbólico con los archivos indicados en loscomentarios:

#!/bin/sh # # /etc/rc.d/init.d/smb - comienza y termina los servicios SMB. # # Se deben crear los siguientes archivos como enlaces simbolicos a este archivo: # symlinks: /etc/rc.d/rc1.d/K35smb (Termina los servicios SMB al cerrar el sistema) # /etc/rc.d/rc3.d/S91smb (Comienza los servicios SMB en modo multiusuario) # /etc/rc.d/rc6.d/K35smb (Termina los servicios SMB al hacer un reboot) # # Libreria de funciones . /etc/rc.d/init.d/functions # Configuracion de red . /etc/sysconfig/network # Asegurarse que la red esta a punto [ ${NETWORKING} = "no" ] && exit 0 # Comprobar como fuimos llamados case "$1" in empezar) echo -n "Poniendo en marcha los servicios SMB: " daemon smbd -D daemon nmbd -D echo touch /var/lock/subsys/smb ;; parar) echo -n "Terminando los servicios SMB: " killproc smbd killproc nmbd rm -f /var/lock/subsys/smb echo "" ;; *) echo "Modo de uso: smb {empezar|parar}" exit 1 esac

49

Page 50: Cur So Linux 009

Configuración General (/etc/smb.conf)

La configuraciónde Sambaen un Linux (u otramáquinaUNIX) escontroladapor un soloarchivo, /etc/smb.conf.Este archivo determina qué recursos del sistema se quierencompartir con el mundo exterior y que restricciones se desea poner en ellos.

Comolas siguientessecciones'direccionarán'la comparticiónde unidadese impresorasdeLinux con máquinasWindows, el archivo smb.confmostradoen estasecciónes lo mássimple posible, solo para propósitos introductorios.

Cada sección del archivo se inicia con una cabecera como [global], [impresoras], etc.

La sección [global] define unas pocas variables que Samba usará para definir lacompartición de todos los recursos.

La sección[homes]permitea los usuariosremotosaccedera susrespectivosdirectoriosprincipalesen la máquinaLinux local (cadauno al suyonadamás).Estoes,si un usuariode Windowsintentaconectara esterecursodesdesu máquinaWindows,seráconectadoasudirectoriopersonal.A tenerencuentaqueparahaceresto,tienequetenerunacuentaenla máquina Linux. ;-)

El archivo smb.conf que viene debajo como ejemplo permite a los usuariosremotosaccedera su directorioprincipal en la máquinalocal y escribiren un directorio temporal.Paraqueun usuariodeWindowsveaestosrecursos,la máquinaLinux debeestarenla redlocal. Entoncesel usuariosimplementeconectaunaunidadde red desdeel ExploradordeWindows o el Windows File Manager.Fíjate que en las siguientessecciones,se daránentradasadicionalesa estearchivo parapermitir la compartición de más recursos. ; /etc/smb.conf

;; Reinicia el servidor cada vez que hagas cambios a este archivo, ej:; /etc/rc.d/init.d/smb parar; /etc/rc.d/init.d/smb empezar [global]; Quita el comentario a la siguiente linea si quieres cuentas de invitado; guest account = nobody log file = /var/log/samba-log.%m lock directory = /var/lock/samba share modes = yes [homes] comment = Directorios principales browseable = no read only = no create mode = 0750 [tmp] comment = Espacio de archivos temporales path = /tmp read only = no public = yes

50

Page 51: Cur So Linux 009

Compartiendo Una Unidad Linux Con Máquinas Windows

Comosemuestraenel archivosmb.confanterior,compartirunaunidadLinux conusuariosWindows es fácil. De todasmaneras,como todo lo demáscon Samba,puedestener lascosas MUY controladas. Aquí tienes unos pocos ejemplos:

Para compartir un directorio con todo el mundo, crea una copia de la sección [tmp]añadiendo algo como esto al smb.conf:

[public] comment = Cosas publicas path = /home/public public = yes writable = yes printable = yes

Para que este directorio lo pueda leer todo el mundo, pero que sólo lo puedan cambiar gentedel grupo 'laborales', modifica la entrada de esta manera:

[public] comment = Cosas publicas path = /home/public public = yes writable = yes printable = no write list = @laborales

Para aprenderotros truquillos con que jugar con las unidadescompartidas,mira ladocumentación de Samba o las páginas del man.Compartiendo Una Unidad Windows Con Máquinas Linux

Se incluye un programacliente de SMB para máquinasUNIX con la distribución deSamba.Proveeun interfaz estilo ftp parala líneade comandos.Puedesusarestautilidadpara transferir archivos entre un 'servidor' Windows y un cliente unix.

Para ver qué recursos están disponibles en un host dado, ejecuta:

/usr/sbin/smbclient -L host

donde 'host' es el nombrede la máquinaque quieres'ver'. Esto devolveráun lista denombresde 'servicios'--estoes,nombresde unidadeso impresorasque puedecompartircontigo--.A menosqueel servidorSMB no tengala seguridadconfigurada,te preguntarápor una clave. Dale la clave de la cuentade 'invitados'o de tu cuentapersonalen esamáquina.

51

Page 52: Cur So Linux 009

Por ejemplo:

smbclient -L zimmerman

La salida de este comando debería ser algo parecido a esto:

Server time is Sat Aug 10 15:58:27 1996Timezone is UTC+10.0Password:Domain=[WORKGROUP]OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51]Server=[ZIMMERMAN] User=[] Workgroup=[WORKGROUP] Domain=[]Sharename Type Comment --------- ---- ------- ADMIN$ Disk Remote Admin public Disk Public C$ Disk Default share IPC$ IPC Remote IPC OReilly Printer OReilly

print$ Disk PrinterDrivers This machinehasa browselist: ServerComment --------- ------- HOPPER Samba 1.9.15p8 KERNIGAN Samba 1.9.15p8 LOVELACE Samba 1.9.15p8 RITCHIE Samba 1.9.15p8 ZIMMERMAN

La lista muestra otros servidores SMB con recursos para compartir con la red.Para usar el cliente, ejecuta:

/usr/sbin/smbclient servicio <password>

donde'servicio'esunamáquinay un servicio.Porejemplo,si estásintentandoentrarenundirectorio que ha sido compartidocomo 'public' en una máquinallamadazimmerman,elserviciodeberíallamarse\\zimmerman\public.De todasmaneras,debidoa restriccionesdelshell, necesitarásponerlas barrasinvertidascon secuenciasde escape,por lo queal finalsaldrá algo parecido a esto:

/usr/sbin/smbclient \\\\zimmerman\\public miclave

donde 'miclave' es una cadena literal con tu password.

Entonces te aparecerá el 'prompt' del smbclient:

Server time is Sat Aug 10 15:58:44 1996Timezone is UTC+10.0Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51]smb: \>

52

Page 53: Cur So Linux 009

Escribe 'h' para obtener una ayuda de como usar el cliente:smb: \> hls dir lcd cd pwd get mget put mput rename more mask del rm mkdir md rmdir rd prompt recurse translate lowercase print printmode queue cancel stat quit q exit newer archive tar blocksize tarmode setmode help ? ! smb: \>

Compartiendo Una Impresora Linux Con Máquinas Windows

ParacompartirunaimpresoraLinux conmáquinasWindows,senecesitaasegurardequelaimpresoraestépreparadapara trabajar bajo Linux. Si se puedeimprimir desdeLinux,preparar una 'compartición' SMB de la impresora es automático.

Paraunarevisiónmásdetalladavenenel COMO Imprimir (PrintingHOWTO) paraponera punto la impresora con Linux.

Ejemplo de cómo agregar una impresora compartida en el archivo de configuración sería:

[global] printing = bsd printcap name = /etc/printcap load printers = yes log file = /var/log/samba-log.%m lock directory = /var/lock/samba [printers] comment = Todas las impresoras security = server path = /var/spool/lpd/lp browseable = no printable = yes public = yes writable = no create mode = 0700 [ljet] security = server path = /var/spool/lpd/lp printer name = lp writable = yes public = yes printable = yes print command = lpr -r -h -P %p %s

¡DebeAsegúrarsedequeel 'path'dela impresora(enestecasobajo[ljet])se correspondealdirectorio de 'spool' en /etc/printcap!

53

Page 54: Cur So Linux 009

NOTA: Hay algunos problemas compartiendo impresorasconectadasa UNIX conmáquinasWindows NT usandoSamba.Un problema es que NT 'vea' la impresoracompartidacorrectamente.Paraconseguirlo,sedebenobservarlas notasen la distribuciónde Samba en el archivo docs/WinNT.txt. El otro va con problemas con las claves.

Gestores de Ventanas (Windows Managers)

¿Qué es un gestor de ventanas?

Un gestor de ventanasno es otra cosa que el conjunto de programas,ventanasyfuncionalidades,quehacenposiblequeel usuariopuedainteractuarconel sistemadeformagrafica y no en modo texto.

Parausarungestordeventanas,hayquetenerconfiguradoun servidorX. Tambiénhayquedecir que el gestor de ventanasutilizado es totalmenteindependientedel servidor Xutilizado[6].

Al contrarioqueenotrossistemasoperativos,enLinux no esnecesarioutilizar un servidorX o másespecificamenteun gestordeventanasparausarel sistema.El sistemaoperativoyel conjunto “servidor X”-“Gestor de ventanas”usado,son cosastotalmentediferentes,independientesentresi. Es más,existenusuariosque trabajanen modo texto sin ningunproblema y sin usar un interfaz grafica.

Existennumerososy variadosgestoresde ventanasparaLinux, unosmejoresy otrosmasdesarrolladosy estables.Es el usuarioel que tienequedecidir quegestorsatisfacemejorsus necesidades,pudiendoincluso tener masde uno instalado.Paraaclararun poco lascosas,podriamosdecirque,si unordenadoresusadopor variosusuarios,todosutilizaranelmismo servidor X pero no necesariamente el mismo gestor de ventanas.

¿Cómo elijo el Gestor de ventanas que quiero arrancar?

Una vez configuradoX sehacenecesariodecirlea Xwindow quégestorde ventanasdebearrancar. Dicho de una manera sencilla, XWindow es la conjunción de 3 componentes:

Sistema Operativo

Servidor X

Xlib

Gestor de Ventanas Cliente X

54

Page 55: Cur So Linux 009

El entorno de ventanasX Window: Es quien implementa las llamadas internas deXWindow, el protocolo X, etc., es decir, el sistema de comunicaciones entre aplicaciones.El servidorgráficoX. Esunprograma(un archivoejecutable)encargadoderespondera lasórdenesgráficas encargadaspor el entorno de ventanas.Es el encargadode dibujarrectángulos,puntosde color o pixels, rellenarzonas,dibujar imágenes,etc.La maneradedecirlea XWindow quéejecutablees el quedeseamosusarescrearun enlacesimbólicollamado /usr/X11R6/bin/X que apunte al servidor que usemos:

Ej: ln -s /usr/X11R6/bin/XF86-S3 /usr/X11R6/bin/X

(le diría que utilice el servidor de las S3).

Esteenlaceescreadopor el programadeconfiguracióncuandoseleccionamosla tarjetaenla lista que nos presenta.

El gestor de ventanas es el módulo encargado de decidir que aspecto, forma,funcionalidades,atajosde teclado,opcionesy menúesdebetenerXwindow. Así, al dividirXWindow en estos3 módulosse nos permite cambiarcualquierade ellos para dotar aXwindow del aspectoo funcionalidadesque deseemos.El entornode ventanasno suelecambiarsenunca(esXFree86),y el servidorX tampoco,ya queésteúltimo essiempreelejecutableapropiadopara manejarnuestratarjeta gráfica (XFree86-SVGA,XFree86-S3,etc.),peroel último estotalmenteseleccionableentremultitud deopcionesy eslo quenospermitecambiarradicalmenteel aspectodeXWindow. Cambiandoel gestordeventanas(oWindow Manager) podemos cambiar prácticamenteel funcionamiento completo deXWindow.

Gestoresde ventanashay muchos:kde, afterstep,gnome,WindowMaker, icewm, etc, ytodos tienen sus respectivosejecutables:startkde, afterstep, gnome-session,wmaker,icewm,etc.Todaestaexplicaciónsehadadopor un motivo muy sencillo:la posibilidaddeelegir el Gestorde Ventanasdeseadoespartede la configuraciónactivade XWindow, yvamos a ver la manera de decirle a XWindow qué gestor deseamos utilizar.

Para ello, simplemente debemos ir al directorio HOME del usuario en cuestion(/home/usuario)o de root (/root) y editar (creándolosi no existe) el archivo de texto“.xinitrc”. En estearchivo pondremosuna línea que indicaráel Gestorde Ventanasquedeseamos utilizar, en el formato:

exec ejecutable_del_gestor_de_ventanas

Ademáspodemosutilizar líneasde comentariosque comiencenpor el carácter'#' y queXWindow ignorará:

Ejemplos de archivos .xinitrc: # utilizar afterstep exec afterstep

55

Page 56: Cur So Linux 009

otro ejemplo podría ser lanzar kde: # utilizar KDE exec startkde

Así, dependiendodel ejecutablequelancemos(startkde,gnome-session,icewm, wmaker,ctwm, fvwm2, wmaker, blackbox, etc.) podremos arrancar el WM deseado.

Otra forma deelegiresseleccionadoenel XDM el gestorde ventanasquedeseamosusar,pero que es el XDM, el XDM es Administradorde sesionesX, esteprogramacorre ensegundoplano y siempreestapresentecuandoconfiguramosel Linux paraarranqueenmodografico, las últimasdistribucionesde linux contienenXDM’s mejoradostalescomokdm (por KDE) y gdm(por Gnome).Así encuandoapareceen la ventanagráficade login(kdm o gdm)esposibleelegirdeunalista degestoresdeventanasel gestorquesequiereautilizar.

56

Page 57: Cur So Linux 009

Referencias

[1] Curso de Linux http://www.cybercursos.net

[2] http://lucas.acer.com.mx/Cursos/distro/basico/html/node4.html

[3] http://moon.inf.uji.es/~koski/rollo.html#2

[4] G.L.U.P. - Guía de Linux Para el UsuarioCopyright @ 1993, 1994, 1996 Ricardo Green eld

[5] Kernel-Como-2 (INSUFLUG COMOs, Mirror en:http://server3.ok.cl/lucas/htmls/comos.html)

[6] http://www.hispafuentes.com/manuales/7.0/hf-guia-usuario/x10118.html

57