Está en la página 1de 9

ElentornodeprogramacinUNIX

deBrianW.KernighanyRobPike. ExtractodelPrefacio ElsistemaoperativoUNIXseinicienunaDECPDP7desechada,enlosLaboratoriosBelldurante 1969.KenThompson,conideasyelapoyodeRuddCanaday,DougMcIlroy,JoeOssannayDennis Ritchie,escribiunsistemadetiempocompartidoydeusogenerallobastanteadecuadoycmodo comoparaatraerausuariosentusiastasyconsuficientecrdibilidadparajustificarlaadquisicindeuna mquinamsgrande:unaPDP1120.UnodelosprimerosusuariosfueRitchie,quienayudoatrasladar elsistemaalaPDP11en1970.Ritchietambindiseyescribiuncompiladorparaellenguajede programacinC.En1973,RitchieyThompsonreescribieronelncleo(Kernel)deUNIXenC, rompiendoasconlatradicindequeelsoftwaredesistemasestescritoenlenguajeensamblador.Con esareescritura,elsistemaadquiriesencialmentelaformaenqueloconocemoshoy. Hacia1974fuepresentadoenlasuniversidadesconfineseducacionalesyalcabodepocosaos estabayadisponibleparausocomercial.Enesetiempo,lossistemasUNIXprosperaronenlos LaboratoriosBellydeallsedifundieronalaboratorios,aproyectodedesarrollodesoftware,acentros deprocesamientosdepalabrasyasistemasdeapoyodeoperacionesenlascompaasdetelfonosde losEstadosUnidos.Desdeentonces,sehanutilizadoentodoelmundoysehaninstaladoenmilesde sistemas,desdemicrohastamacrocomputadoras. AquesedebetalxitodelsistemaoperativoUNIX?Podemosdistinguirvariasrazones.Primero,est escritoenCyesporttil.Segundo,elcdigofuenteestdisponibleyescritoenunlenguajedealto nivel,locullohacefcildeadaptaraexigenciasparticulares.Porltimo,yestoeslomsimportante, esunbuensistemaoperativo,especialmenteparalosprogramadores.Suambientedeprogramacines deextraordinariariquezayproductividad. AuncuandoelsistemaoperativoUNIXpresentavariosprogramasymtodosinnovadores,sueficacia nosedebeaunprogramaoideaenparticular,sinoasuenfoquedeprogramacin,unafilosofade cmoutilizarlacomputadora.Aunqueesafilosofanopuededescribirseenunasolafrase,sebasaenla conviccindequelapotenciadeunsistemadependemsdelasrelacionesentrelosprogramasquede losprogramaspropiamentedichos.MuchosprogramasdeUNIXhacenaisladamentetareastriviales, peroalcombinarseconotrosseconviertenenherramientasgeneralesytiles.

LaHistoriadeLinux
Versin2.2.0porRagibHasan DepartamentodeCienciasdelaComputacin UniversidaddeIllinoisenUrbanaChampaign Traduccin:HugoJimnezPrez

ElInicio.
Era1991,yladespiadadaagonadelaguerrafraestaballegandogradualmenteasufn. Haba un aire de paz y tranquilidad que prevaleca en el horizonte. En el campo de la computacinungranfuturoparecaqueibaacaer,talcomoelhardwarepoderosoempujaba loslmitesdelascomputadorasmsalldeloquecualquieraesperaba. Perotodavafaltabaalgo. Ynoeraotrocosaqueotrosistemaoperativo,dondeungranvacoparecihaberaparecido. Por un lado, DOS tena todava el reinado supremo en ese vasto imperio de las computadoraspersonales.CompradoporBillGatesdeunhackerdeSeattlepor$50,000,el desnudo sistema operativo haba anidado en cada rincn del mundo en virtud de una estrategiacomercialadecuada.LosusuariosdePCsnotenanotraopcin.LasMacsde Appleeranmejores,peroconpreciosastronmicosquenadiepodapagar,permanecieron comounhorizontefueradelalcancedemillones. ElotrocampodedicadoalacomputacineraelmundodeUNIX(UnixWorld).PeroUNIXen seramuchomscaro.Enlabsquedadegrandinero,losvendedoresdeUNIXtazaronsus sistemaslosuficientementealtoscomoparaasegurarquelosusuariosdelospequeosPCs semantuvieranalmargen.ElcdigofuentedeUNIX,unavezllevadoalasuniversidadespor cortesa de los Laboratorios Bell, eran guardados cautelosamente y no publicados. Adicionalmente a la frustracin de los usuarios de PCs de todo el mundo, los grandes jugadoresenelmercadodesoftwarefallaronenproporcionarunasolucineficienteaeste problema. UnaposiblesolucinsepercibaenformadeMINIX.Estesistemafueescritocompletamente porAndrewS.Tanenbaum,unprofesoralemnnacidoenlosEstadosUnidosquequera ensearasusalumnosltrabajointernodeunsistemaoperativoreal.Estefuediseadopara ejecutarseenlosmicroprocesadoresIntel8086quehabaninundadoelmercado. Comounsistemaoperativo,MINIXnoeraespectacular,perotenalaventajadetenerel cdigo fuente disponible. Cualquiera que tuviera el libro 'Operating Systems: Design and Implementation'deTanenbaumpodatenerlas12,000lneasdecdigo,escritasenCyen lenguajeensamblador.Porprimeravez,unaspiranteaprogramadorounhackerpodaleerel cdigofuentedelsistemaoperativo,queporesetiempo,losvendedoresdesoftwarehaban guardado escrupulosamente. Un brillante autor, Tanenbaum, cautivo a las mentes ms brillantes de las ciencias de la computacin con la elaborada e inmaculadamente vvida discusindelartedecrearunsistemaoperativofuncional.EstudiantesdelasCienciasdela Computacin de todo el mundo estudiaron esmeradamente el libro, leyendo a travs del cdigopraentenderelsistemaqueseejecutabaensuscomputadoras. YunodeelloseraLinusTorvalds.

Unnuevobebeenelhorizonte
En 1991, Linus Benedict Torvalds era un estudiante de segundo ao de Ciencias de la ComputacinenlaUniversidaddeHelsinkiyunhackerautodidacta.Eljovenfinlandsde21 aos,pelirojoydehablarsuaveadorabapensarenlapotenciadelascomputadorasylos lmites a los cualesel sistema laspuede llevar.Pero todo lo que faltaba era un sistema operativoquepodieraalcanzarlasdemandasdelosprofesionales.MINIXerabueno,pero todava era un sistema operativo para estudiantes, diseado como una herramienta de enseanzaenlugardeunapotenteherramientaindustrial. Duranteesetiempo,losprogramadoresdetodoelmundoestabaninspiradosporelproyecto GNUdeRichardStallman,unmovimientodesoftwarequeproporcionabasoftwarelibreyde calidad.Aclamadocomounhroeenelreinodelcmputo,Stallmaninicisuexitosacarrera enelfamosoLaboratoriodeInteligenciaArtificialdelMIT,ydurantemediadosafinalesdelos setentas creeleditorEMACS.Aprincipiosdelosochentas,lascompaasdesoftware comercialsellevaronamuchosdelosmsbrillantesprogramadoresdeloslaboratoriosde Inteligencia Artificial, y negociaron severos y no reveladores acuerdos para proteger sus secretos.Pero Stallman tenauna visin diferente.Suideaera que adiferencia de otros productos, el software debera ser libre de las restricciones que iban en contra de los derechos de autor o de la modificacin con el fin de hacer mejores y ms eficientes programasdecomputadora.Consufamosomanifiestode1983quedeclarlosprincipiosdel proyecto GNU, inici un movimiento para crear y distribuir software que transmitiera su filosofa(Incidentalmente,elnombredeGNUesunacrnimorecursivoqueenuncia'GNUis NotUNIX').Peropararealizarestesueodecrearfinalmenteunsistemaoperativolibreel necesitabacrearprimerolasherramientas.Asqueiniciandoen1984,Stallmanempeza escribir el compilador GCC (GNU C Compiler), una asombrosa hazaa para un solo programador. Con su legendaria hechicera (wizardry: que proviene de un juego de mazmorras y calabozos popular en los 80s) tcnica el solo clasific grupos enteros de programadoresdelosvendedoresdesoftwarecomercialencrearGCC,consideradocomo unodelosmseficientesyrobustoscompiladoresjamscreado. En1991,ElproyectoGNUhabacreadomuchsimasherramientas.Elesperadocompilador deCdeGNUestabadisponibleporentonces,perotodavanotenaunsistemaoperativo. AunMINIXtenalicencia.(Mstarde,enabrildel2000,TanenbaumliberMINIXbajola licencia BSD.) El trabajo se dirigi hacia el kernel de GNU, llamado HURD, pero no se esperabaquefueraterminadosinopasadovariosaos. EsoeramuchoretrasoparaLinus. El25deagostode1991unhistricomensajefueenviadoalgrupodenoticiasdeMINIXpor Linus.
From:torvalds@klaava.Helsinki.FI(LinusBenedictTorvalds)Newsgroups:comp.os.minix Subject:Whatwouldyouliketoseemostinminix?Summary:smallpollformynew operatingsystemMessageID:<1991Aug25.205708.9541@klaava.Helsinki.FI>Date:25 Aug9120:57:08GMTOrganization:UniversityofHelsinki

HelloeverybodyoutthereusingminixI'mdoinga(free)operatingsystem(justahobby, won'tbebigandprofessionallikegnu)for386(486)ATclones.Thishasbeenbrewingsince april,andisstartingtogetready.I'dlikeanyfeedbackonthingspeoplelike/dislikeinminix, asmyOSresemblesitsomewhat(samephysicallayoutofthefilesystem(duetopractical reasons)amongotherthings).I'vecurrentlyportedbash(1.08)andgcc(1.40),andthingsseem towork.ThisimpliesthatI'llgetsomethingpracticalwithinafewmonths,andI'dliketo knowwhatfeaturesmostpeoplewouldwant.Anysuggestionsarewelcome,butIwon't promiseI'llimplementthem:)Linus(torvalds@kruuna.helsinki.fi)PS.Yesit'sfreeofany minixcode,andithasamultithreadedfs.ItisNOTprotable(uses386taskswitchingetc), anditprobablyneverwillsupportanythingotherthanATharddisks,asthat'sallIhave:(.

Comoesaparentedelmensaje,elmismoLinusnocreaquesucreacinfueraaserlo suficientementegrandecomoparacambiarelcmputoparasiempre.Laversin0.01de Linuxfueliberadaamediadosdeseptiembredelmismoaoyfuedistribuidaeninternet.El entusiasmoseacumulalrededordeestenuevo'chicodelpueblo',yelcdigofue descargado,probado,corregidoyreenviadoaLinus.Laversin0.02llegel5deoctubre juntoconlafamosadeclaracindeLinus:


From:torvalds@klaava.Helsinki.FI(LinusBenedictTorvalds)Newsgroups:comp.os.minix Subject:Freeminixlikekernelsourcesfor386ATMessageID: <1991Oct5.054106.4647@klaava.Helsinki.FI>Date:5Oct9105:41:06GMTOrganization: UniversityofHelsinkiDoyoupineforthenicedaysofminix1.1,whenmenweremenand wrotetheirowndevicedrivers?Areyouwithoutaniceprojectandjustdyingtocutyour teethonaOSyoucantrytomodifyforyourneeds?Areyoufindingitfrustratingwhen everythingworksonminix?Nomoreallnighterstogetaniftyprogramworking?Thenthis postmightbejustforyou:)AsImentionedamonth(?)ago,I'mworkingonafreeversion ofaminixlookalikeforAT386computers.Ithasfinallyreachedthestagewhereit'seven usable(thoughmaynotbedependingonwhatyouwant),andIamwillingtoputoutthe sourcesforwiderdistribution.Itisjustversion0.02(+1(verysmall)patchalready),butI've successfullyrunbash/gcc/gnumake/gnused/compressetcunderit.Sourcesforthispet projectofminecanbefoundatnic.funet.fi(128.214.6.100)inthedirectory/pub/OS/Linux. ThedirectoryalsocontainssomeREADMEfileandacoupleofbinariestoworkunder linux(bash,updateandgcc,whatmorecanyouaskfor:).Fullkernelsourceisprovided,as nominixcodehasbeenused.Librarysourcesareonlypartiallyfree,sothatcannotbe distributedcurrently.Thesystemisabletocompile"asis"andhasbeenknowntowork. Heh.Sourcestothebinaries(bashandgcc)canbefoundatthesameplacein/pub/gnu.

Laversin0.03deLinuxarribenpocassemanas.Paradiciembreyasetenalaversin 0.10.Linuxtodavaeraunpocomsqueunesqueleto.Tenasoportenicamenteparadiscos duros de AT, no tena login (cargaba directamente al BASH). La versin 0.11 era mucho mejor,con soporte para tecladosmultilenguajes, controladoresde diskettes,soporte para VGA,EGA,Hercules,etc.Losnmerosdeversinfuerondirectamentede0.12a0.95y0.96 yassucesivamente.Prontoelcdigosedistribuyalmundoenteromediantelossitiosdeftp enFinlandiayotraspartes.

ConfrontacinyDesarrollo
Pronto,LinustuvounaonfrontacinconnadiemsqueAndrewTanenbaum,elgranprofesor queescribieraMINIX.EnunmensajeaLinus,Tanenbaumcoment:
"Istillmaintainthepointthatdesigningamonolithickernelin1991isafundamentalerror.

Bethankfulyouarenotmystudent.Youwouldnotgetahighgradeforsuchadesign:)" (AndrewTanenbaumtoLinusTorvalds)

LinusadmitiposteriormentequeestoeralopeordesudesarrollodeLinux.Tanenbaumera verdaderamenteelfamosoprofesor,ynadaqueeldijeraeracuestionable.Peroestaba equivocadoconrespectoaLinux,paraLinuseraunchicotercoquenoadmitaderrotas. Tanenbaumtambinrecalcque:'Linuxeraobsoleto'. AhoratocabaelturnoalanuevageneracindeLinux.Respaldadoporlafuertecomunidad deLinux,LinusrespondiaTanenbaumloqueparecasermsconveniente:


Yourjobisbeingaprofessorandresearcher:That'sonehellofagoodexcuseforsomeof thebraindamagesofminix.(LinusTorvaldstoAndrewTanenbaum)

Yeltrabajocontinu.ProntomsdeuncientodepersonasseunialcampamentodeLinux. Despuseranmiles,ydespuserancientosdemiles.Estoyanoeraunjugueteparalos hackers.RespaldadoporunapltoradeprogramasprovenientesdelproyectoGNU,Linux estaba listo parael espectculo.Se le dio lalicencia de GNUGeneral PublicLicense,y entoncesseasegurqueelcdigofuenteseralibreparatodomundoparacopiar,estudiary modificar.Losestudiantesylosprogramadoresdecomputadorasloobtuvieron. Pronto,losvendedorescomercialestambinseintegraron.Linuxenserayeslibre.Loque hicieronlosvendedoresfuecompilardiversospaquetesdesoftwareyloreunieronenformato distribuible,enunaformamsadecuadaparecidaalosotrossistemasoperativosconlosque la gente estaba familiarizada. RedHat, Caldera y otras compaas obtuvieron buenas respuestas en el mundo entero. Mientras que stas eran aventuras comerciales, programadoresdecomputadorasdedicadoscrearonsupropiadistribucinrespaldadapor voluntarios,elafamadoDebian.Conlasnuevasinterfacesgrficasdeusuario(GUI,como TWM, XWindow System, KDE, GNOME) las distribuciones e Linux se volvieron muy populares. Mientrastanto,algunascosasasombrosassucedieronconLinux.AdemsdelasPC,Linux fuellevadoamuchasdiferentesplataformas.Linuxfuemodificadoparaejecutarseenlas Palm Pilot de 3Com. La tecnologa de clusters permiti que un gran nmero de computadorassecombinaranenunasolaentidaddecmputo,unacomputadoraenparalelo. Enabrilde1996,investigadoresdelLaboratorioNacionaldeLosAlamosutilizLinuxpara ejecutar68PCscomounasolacomputadoradeprocesoenparaleloparasimularondasde choqueatmicas.Peroadiferenciadeotrassupercomputadorasquecostabanunafortuna, esta en su lugar era muy barata. La supercomputadora 'casera' cost slo $150,000, incluyendoeltrabajo(laconexindelas68PCsmediantecables),casiunadcimapartede unacomputadoracomercialdelasmismascaractersticas.Alcanzunavelocidadpicode19 billones de clculos por segundo, convirtindola en la 315ava supercomputadora ms poderosadelmundo. Yademserarobustatambin.Tresmesesmstardenosehaba reiniciadounasolavez. LomejordeLinuxhoyendaeslacantidaddeseguidoresqueliderea.Cadavezqueuna piezadehardwareaparece,elkerneldeLinuxesmodificadoparaaprovecharalmximo dichapieza.Porejemplo,algunassemanasdespusdelapresentacindelmicroprocesador IntelXenon,elkerneldeLinuxfuemodificadoyestabalistoparausarlo.Tambinhasido adaptadoparausarseenprocesadoresAlpha,Mac,PowerPCyaunenpalmtops,unaproeza

quedifcilmentepuedeserigualadaporcualquierotrosistemaoperativo.Ycontinuasuviaje enelnuevomilenio,conelmismoentusiasmoqueseiniciunbuendade1991. MientrastantoLinussiguesiendounhombresencillo.AdiferenciadeBillGates,lnoes millonario. Termin sus estudios y se mud a los Estados Unidos e inici un trabajo en Transmeta Corporation. Despus de liderar una investigacin secreta y de desarrollar el proyecto,TransmetalanzelprocesadorCrusoe.Linusfueunmiembroactivodelequipo de investigacin. Recientemente despos a Tove, y es el orgulloso padre de una chica, PatriciaMirandaTorvalds.Peroelsiguesiendoelprogramadormsfamosoyfavoritodel mundoalafecha.Idolatradoporlacomunidadcomputacionaldelmundoentero,Linusespor muchoelmsgrandeprogramadorenesteplaneta.

Iniciodesesinyalgunoscomandosbsicos
login: Variablesdeambiente $ls $cd $cat $more $less $zless $w $touch $mkdir $od $dd Dndeobtenerinformacin.Laspginasdelmanual,Info,apropos.

RedireccionamientodeEntradaSalida
LaverdaderafilosofadeUNIX ><>><<| Algunosfiltrosparaverificar $grep $sort $uniq $cut $awk

Sistemasoperativosmiltiusuario,servidoresyestacionesdetrabajo.
Procesos,loscomandos ps

kill jobs fg bg pstree lsof nohup at nice

Generalidadesdelaconfiguracinyadministracinderedes.
TCP/IP Redes,sistemaDNS,parmetrosdered,Mscarasdered,subredesytodoeso Archivos /etc/init.d/network /etc/network/interfaces /etc/resolv.conf /etc/hosts ifconfig ifup ifdown route nmap

Tipsbsicosdeseguridadenredesyenservidores.
Particionesymontaje.Primeraregladeseguridad. /dev/hda1on/boottypeext3(ro,noexec,nosuid,nodev,noatime) /dev/hda3on/backuptypefuseblk (rw,noexec,nosuid,nodev,allow_other,blksize=4096) /dev/hda4on/wintypefuseblk (rw,noexec,nosuid,nodev,allow_other,blksize=4096) /dev/hda5on/typeext3(rw,errors=remountro) /dev/hda6on/roottypeext3(rw) /dev/hda7on/usrtypeext3(ro,nodev,noatime) /dev/hda9on/vartypeext3(rw,nosuid,nodev) /dev/hda11on/hometypeext3(rw,noexec,nosuid,nodev) /dev/hda10on/tmptypeext3(rw,noexec,nosuid,nodev,noatime) cerrarpuertosycolocariptableseippl.

Cuidarelsistemadearchivos Nombresraros touch./foo rmfoo Permisosdearchivos SUID4xxx SGID2xxx adBit1xxxparadirectorios Nuncasedebeejecutarunprogramapara'saberquehace',dehecho,unbuenadministradordebe verificartodosycadaunosdelosprogramasyarchivosquecomponenunapiezadesoftware.Poreso esimportantequeeladministradortambinseaunbuenprogramador.Estaesunadelasgrandes diferenciasentreWindowsyUNIX.TambinsedebeobservarqueenUNIX,unopuedecompilartodos ycadaunodelospaquetesqueexistenenGNU. ElsiguienteesunguindecomandosquepuederobarseunasesindeSHELLconpermisosSUID #!/bin/bash #GuindecomandosdeBASHpararobarseunBASHconSUIDderoot # BIN=/home/yo/bin mkdirp$BIN cd$BIN cp/bin/bash./bash #Ahoravieneeldao chownrootbash chmod4755bash ParaencontrartodoslosarchivosSUIDySGID #find/\(perm004000operm002000\)typefprint Ahorahagamosunguinparadesplegarsealaspersonasqueleshemos canceladolacuentadeusuario(peronosehaeliminado).Esteguinsecolocareneldirectorio /usr/bino/binconpermisosdeejecucinydespussemodificarlalneadelarchivodepasswords paraqueseejecuteenlugardelintrpretedecomandos. #!/bin/bash # # /bin/cat<<'XX' BienvenidosaltutorialdeUNIXLinuxdeSCMA08de laUAM,Cuajimalpa.Sideseantenercontactoconel profesor,porfavorasistanaltutorialde lunesamiercolesde3:30a5:00p.m. Decualquierforma,lesagradecemossuatencion

CoordinaciondeSCMA08 XX exit0 Ahoraserequierequeledenpermisosdeejecucin $chmod+xno_login $mvno_login/bin yporultimomodificarlalneadelusuarioenelarchivodecontrase~nasconelcomando $vipw quecontengaelregistrodelusuarioymodificarlo juan:x:1001:1001:,,,:/home/juan:/bin/bash por juan:x:1001:1001:,,,:/home/juan:/bin/no_login Softwarelibre...