You are on page 1of 38

Documentos Aula SUN UCM

CURSO AVANZADO LINUX


26 Mayo 2008
Autores: Sergio Velasco Alicia Martn Aula SUN UCM de Software Libre

CURSOAVANZADODELINUX

NDICE
1 2 3 4 5 6 Terminalymodogrfico............................................................................... Gestordearranque........................................................................................ Creacindeusuarios..................................................................................... Configuracindelared................................................................................. Editararchivosdetexto................................................................................. 5.1 6.1 6.2 7 8 9 10 11 12 13 14 15 EditorVim............................................................................. Instalacindesderepositorios............................................... Descargaycompilacin........................................................ Instalarprogramas......................................................................................... 3 7 8 8 11 11 13 14 14 15 17 18 19 21 21 22 23 25 27 28 30 30 31 31 33 34 34

Permisosypropietarios................................................................................. Comandosdelamquina.............................................................................. Copiararchivos............................................................................................. Escritorioremoto.Vnc.................................................................................. ConectarseaunamquinadeLinuxdesdeWindows................................... Servidordepaginasweb............................................................................... Scripts........................................................................................................... Demonios...................................................................................................... FirewalleIptables......................................................................................... 15.1 Firewallparanuestramquina............................................... 15.2 Firewallparaunaredlocalconsalidaainternet................... 15.3 OtroejemplodeFirewall....................................................... 15.4 Logueoenredsincontrasea................................................

16

Copiasdeseguridad...................................................................................... 16.1 Backupsdedirectoriosyficheros......................................... 16.2 Backupderecuperacin........................................................ 16.3 Recomendaciones..................................................................

17

Anexo:Comandosdeinters..........................................................................

CURSOAVANZADODELINUX

CURSOAVANZADOLINUX AULASUNUCM
EstecursoestaorientadoapersonasqueyahayantenidoalgncontactoconLinux,peroque deseenalcanzarunmayorconocimientosobresufuncionamiento.Setratadeuncursodeunnivel bsico,peroenprofundidad,dondetrataremoslaadministracindeusuariosydearchivos,ascomo algunoscomandosqueserndegraninters.

Terminalymodogrfico

Cuandoiniciamosunasesinenlasmquinas,lohacepordefectoenmodogrfico.Desde aqu,yasehavistoenuncursointroductoriocomoabrirunaterminal,peroexisteotromodode trabajarenterminalsinnecesidaddeaccederprimeroalentornogrfico. Existen7terminales,acadaunadelascualesaccederemosconlacombinacindeteclasAlt CtrlF1(F2,F3.....).SololaF7eslaterminalgrfica,elrestosernterminalesdetexto. exit. Sideseamossalirdeunasesinenterminaldetexto,solotendremosqueteclearelcomando

Shell El shell es el interprete de comandos. En DOS normalmente el shell es el command.com, en UNIX existen muchos shell usados habitualmente. Desde la sptima edicindeUNIXelshellporexcelenciaeselsh.FueescritoporStevenBourne,yesporeso queselosuelellamarBourneShell.EstdisponibleentodaslasversionesdeUNIXyeslo suficientementebsicocomoparaquefuncioneentodaslasplataforms. csh Unshellunpocomejorconrespectoalsheselcsh,quefueescritopor BillJoy,ydebesunombre,allenguajedeprogramacinC.Alhacerscriptsenesteshell puedeutilizarseunasintaxissimilaraladeC. ksh Otroshell,quecomoventajamanejaunhistorialdecomandos,eselksh (korn shell). Est basado en sh, con algunos agregados muy bsicos para hacerlo ms amigable. bash Uno de los shell ms avanzados, muy popular en la comunidad GNU/Linux.ElnombresignificaBourneAgainShell.TienelicenciaGNUysesueleincluir como shell predeterminadoenlasdistribuciones.Ofrecelasmismscapacidadesque csh, pero incluye funciones avanzadas, tanto para el usuario como para el programador. En particular,podremosaccederaunhistorialdeloscomandosejecutados, queseconserva inclusoalpasardeunasesinaotra,utilizandoloscursores.

CURSOAVANZADODELINUX

Hay muchas otras versiones de shell adems de estas. Pero el estilo generaldetodosesmuysimilar.
TERMINAL bash sh tcsh csh PROMPT usuario@sunny01:~$ $ sunny01:~$ %

Elpromptnosayudaasaberenquetipodeterminalestamos. Terminalbash: ~ pwd ls cd cd.. Tabulador clear cp w Indicaqueestamosenelhomedenuestrousuario Podemosverenquedirectorionosencontramos listalosarchivosenundirectorio. paraentrarenunacarpeta. parasalirdeundirectorio. Noscompletauncomando. Limpialaterminal. Copiaarchivosaunnuevoemplazamiento. Sirveparaverqueusuariosestanconectados.

Estilrecordarcomandoscomo:

Hayquetenerprecaucin,porqueLinuxdistingueentremaysculasyminsculas,asqueno serlomismoelusuariodenombreUsuarioqueeldenombreusuario. Otroscomandosquizmenosutilizadosperotambintilesson: mv Muysimilara cp,elcomando mv eselqueseutilizaparamover archivosdeunlugaraotro,oparacambiarleelnombreaunarchivo.Siejecutamos,mvviejonuevo, elarchivoviejohabrpasadoallamarsenuevo. Porotrolado,siejecutamosmvarchivo1archivo2directorio,losarchivosarchivo1yarchivo2se moverndentrodedirectorio. du Elcomandodu,DiskUsage,nosmuestraelespacioqueocupantodos losdirectoriosapartirdeldirectorioactual.Elnmerodelaprimeracolumnaeselespacioocupado poreldirectorioyestexpresadoenkb. dus nosmuestranicamenteeltotal. dua muestraloqueocupanlosarchivos,ademsdelosdirectorios. duh haceellistado,indicandolaunidad(humanreadable). duarchivonosdicecuntoocupaelarchivo. 4

CURSOAVANZADODELINUX

find El comando find permite encontrar archivos, utilizando diversas tcnicas.Enprincipio,siselepasacomoparmetronicamenteunadeterminadaruta,porejemplo find/home/user,elcomandobuscartodoslosarchivosydirectoriosqueseencuentrenapartirde esaruta.Utilizandoalgunosotrosparmetrosesposiblebuscarlosarchivospordiversoscriterios. find.name"hola.txt" encuentratodoslosarchivosllamadoshola.txtqueseencuentrena partirdeldirectorioactual.Lascomillasnosonobligatorias,perosonrecomendablessisequieren usaropcionesmscomplejas(porejemplo,utilizandometacaracteresdeshell,queseexplicanenla seccin4.1). findsize50kbuscalosarchivosqueocupan50kilobytesapartirdirectorioactual. findsize20c,buscarlosarchivosqueocupen20bytes. findsize5b,buscarlosarchivosqueocupen5bloquesde512bytescadauno. find /home/user empty busca todos los archivos que se encuentran vacos a partir del directorio/home/user.

cat Ejecutandocatarchivopodremosverelcontenidodearchivo.Estecomando puederecibirunaseriedearchivos,yelresultadoserquenosmostraraunarchivoacontinuacin delotro.Uncasoespecialseproducecuandoejecutamoscatsinningnnombredearchivo.Eneste caso,elcomandoesperaraquenosotrosledemosunaentrada,ylairreproduciendolneapor lnea.HastaquepresionemoslacombinacinCtrld,queindicaquelaentradahaterminado. 5

CURSOAVANZADODELINUX od ElcomandoodOctalDump,nospermiteverbyteabyteel contenidodeunarchivo.Laprimeracolumnaesladireccindecadalneaquevemos.Utilizando lasdistintasopciones,podemosvisualizarloenvariosformatos: odarchivonosmuestraelcontenidodelarchivoexpresadoennmerosoctales,generalmente tomadosdeadosbytes. odbarchivonosmuestraelcontenido,ennmerosoctales,byteabyte. odcarchivonosmuestraloscaracteresqueformanelarchivo,unoporuno. odcbarchivonosmuestraloscaracteres,ydebajodecadacarcterelnmerooctaldelbyte. odharchivonosmuestraelcontenido,ennmeroshexadecimales,tomadosdeadosbytes.

wc Elcomando wcarchivo,seutilizaparacontarlacantidaddelneas, palabrasyletrasquetieneunarchivo.

less Elcomandolesspermitepaginarlasalidadeotroscomandos,obien, elcontenidodealgnarchivo. lessarchivo veremoslaprimerapginadelarchivo.Siestearchivoeslosuficientemente largo,podremosmovernoshaciaabajoyhaciaarribautilizando PageUp, PageDown,Home, End, Enter, los cursores, la barra espaciadora, etc. Tambin podemos realizar bsquedas dentro del archivo, para ello utilizamos la barra invertida \, seguida del patrn que queremos buscar. Por ejemplo,sitecleamos\consola,nosmostrarlaprimeraocurrenciadelpatrnconsola.Paraverla siguienteocurrencia,utilizamosn,yparaverlaocurrenciaanteriorN.Parasalir,utilizamosq. dpkg Sirveparaobtenerdetalles deprogramas queleindiquemos,como puedesersuubicacin,sutamao,laversinquetenemosinstalada....veamosejemplosdeuso: dpkg Sbin/programa Nosdirdondeestainstaladoprograma dpkglfirefox dpkgsfirefox librerasusa Nosdicelaversindelprogramafirefoxquetenemosinstalada Nosmuestramuchosdetalles,comocuantoocupaelprogramaoque

CURSOAVANZADODELINUX

updatealternatives Permiteestablecerpordefectoqueversionesdeciertos programasqueremosqueutilicenuestramquina.Slosepuedeutilizarcomorootocomousuario sudable.

Gestordearranque:

CuandoinstalemosLinuxenunordenadorquetenayaotrosistemaoperativo,porejemplo Windows,senosabrirungestordearranquequenospermitirelegirconcualdelosdossistems queremosiniciarnuestrasesin. LosdosgestoresdearranquemshabitualessonGrubyLillo Laformadenuestrodiscoduropuedeserlasiguiente:

SireinstalamosWindowsennuestramquina,perderemoselgestordearranque.Eneste caso,pararecuperarlodebemosreiniciarLinuxconunLiveCDydesdelaterminalejecutar: aptgetinstallgrub setup Estegestordearranquesealbergaraencd/boot/grub

CURSOAVANZADODELINUX

Creacindeusuarios.

Podemoscrearusuariostantodeformagrficacomodesdeunaterminal.Estetrabajoslolo podrrealizarelrootounusuariosudable(yaseverqueesestoenelapartado6).Veamoslosdos modos: Formagrfica: EnelmenSistemaelegiremoslaopcinAdministracinydentrodeellaUsuariosygrupos.Aqu nosaparecernciertasopcionesacercadelanuevacuantacreada,comoporejemploqueterminal queremosqueutilicepordefecto. Modotexto: Utilizaremoselcomandoadduser. NOTA:existeotrocomandouseraddperoquenocreaelhomedelusuario Una vez tecleado adduserusuario nos pedirlacontraseadeste,asicomootrosdatos que podemosrellenarono,anuestraeleccin. Sepuedeigualmenteeliminarunusuarioconelcomandouserdelusuario,aunqueposteriormente habrqueborrarsuhome:rmr/home/usuario.

Configuracindelared

Para establecer la configuracin de nuestra redpodemos hacerlotanto en modo grfico comodesdenuestraterminal. Modogrfico: EnelmenSistemaelegirAdministracinydentrodeeste,Herramientasdered.

CURSOAVANZADODELINUX

Modotexto: Accedamosaldirectoriocd/etc/networkymodifiquemoselarchivointerfaces,atravsdeuneditor detextoqueveremosacontinuacin.

CURSOAVANZADODELINUX Siqueremossabercualessonlasdnspodemosverloenelarchivocd/etc/resolv.conf

Podemos ver tambin las tarjetas de red con las que contamos, a travs del comando ipconfig.Aparecereth0eth1...tantascomotarjetastengamos,includaslasinalmbricas.Conlos comandosifconfigeth0down/uppodremosdesactivaryactivarlatarjetaquedeseemos. Comandoping: Estecomandoenvapaquetesaotramquinayesperaaqueselosdevuelva.Podemosverassihay algnfalloenlareddeunamquina.Parautilizarlopodemosutilizardiferentessintaxis: pingsunny01.fis.ucm.es ping147.96.67.155 pingwww.assaf.org (nombredelamquina) (IPdelamquina) (Conunadireccinweb)

10

CURSOAVANZADODELINUX Comandohost: EstecomandonospermiteconoceraquienperteneceunaIPobiensaberqueIPcorrespondeaun nombreconocido.Porejemplo: hostsunny01.fis.ucm.es host147.96.22.139 nosdevuelvelaIPdeesamquina. nosdirquemquinaestaconectadaconesaIP.

Comandotraceroute Nosdicepordondepasanlospaquetesparallegardeunamquinaaotra.

Editararchivosdetexto

Seutilizanhabitualmentetreseditoresdetexto:gedit,emacsyvim(antesconocidocomovi). Unavezeneldirectorioenelqueseencuentreelarchivoaeditar,simplementetendremosque teclearelnombredeleditorautilizarseguidodelnombredelarchivo,porejemplo: cd/etc vimhosts Eso nos abrir una pantalla con el archivo, sobre la cual podremos ir realizando los cambios necesarios. 5.1 Editorvim: Vi(vim)esuneditordetextoparaconsola.EseleditordetextotradicionaldeUNIX,yen muchossistemseselnicodisponible,demaneraqueesimportantesaberusarlo,aunquesolosea bsicamente. Paracomenzaraeditarunarchivodeberemosescribir:vimarchivo,obienejecutarvi,yluego abrirelarchivoconelcomandoadecuado. Envimexistendosmodosdetrabajo:unmododeedicinyunmododecomandos.Aliniciarel programa,estamosenelmododecomandos.Paraingresaralmododeedicindebemosapretari,o bien,Insert.Paravolveralmododecomandos,utilizamoslateclaESC. Cuandoestemosenelmododeedicin,todoloqueingresemossertextodelarchivo.Cuando estemosenelmodocomandos,no.Avecesloqueescribamosnomostrarningunasalidainmediata enlapantalla.

11

CURSOAVANZADODELINUX Comandosbsicos :earchivo abreelarchivo. :q :q! :w :wq saledelprograma,solosiyasegrabaronloscambios. saledelprogramasingrabarloscambios. grabaelarchivo. grabaelarchivoyluegosaledelprograma. findelnea. iniciodelnea. anteriorpalabra. prximapalabra. derecha. izquierda. abajo. arriba. findearchivo.

:warchivo grabaelarchivoconesenombre(eq.GuardarComo)

TeclasdeMovimientos $ 0 b w l h k G j

Alamayoradeestoscomandosselespuedeagregarunnumeroalprincipio.Elefectodeeste nmerosereldemultiplicarelefectodelcomandoporelnmeroingresado.Porejemplo,10jse mueve10lneashaciaabajo. EnelcasodeG,elnmeroqueseleagregueantespuedeserelnmerodelneaalcualdeseamos ir.Sideseamosiralaprimeralneadelarchivo,debemosescribir1G. ManejodeTexto Comoencualquiereditordetexto,podemoscortar,copiarypegar. dd dw d$ p u yy x cortalalnea. cortalaproximapalabra. cortahastaelfinaldelalnea. pegaloquesehayacortadoocopiado (undo)deshacelaultimaaccin. copialalnea. cortaelcarcter.

Muchosdeestoscomandostambinaceptanunnmeroquelospreceda,detalmaneraquese puedenseleccionarvarioscaracteres,palabrasolneasaunmismotiempo. 12

CURSOAVANZADODELINUX Otros CTRLg o a muestralalneaactualyeltotaldelneas. agregaunalneadebajodelaactual,yentraenmodo insercin. secolocaenelcarctersiguientealactual,yenmodo insercion.

Instalarprogramas

Sloelsuperusuariorootpuedeinstalartodotipodeprogramas.Unusuarionormalsolo podrinstalarprogramasensuhome. Sedenominausuariosudableaaquelquepuedehacerlomismoqueelrootperoatravsdel comandosudo. NOTA: Ubuntunotraepordefectounusuarioroot,sinoqueelprimerusuarioquesecreaserun usuarioconderechosdesudo. Privilegios: Losprivilegiosdelosusuariosseencuentranreflejadosenenarchivo/etc/sudoers. Podemosmodificarestearchivoconuneditordelosvistosanteriormente,porejemplo: sudovim/etc/sudoers Estearchivotieneunalneacomolasiguiente: #userprivilegespecification root ALL=(ALL)ALL usuarioALL=(ALL)ALL

13

CURSOAVANZADODELINUX Estosignificaquetantoelrootcomoelusuariodenombreusuario,tienenprivilegios paratodosloscomandos. 6.1 Instalacindesderepositorios:

Unrepositorioofreceprogramasyactualizaciones.Sepuedendescargarprogramasdesdeun repositoriotantoenmodogrficocomodesdelaterminal: Modogrfico: Instalar enelmenAplicaciones,elijamosAadiryquitar Actualizar en el men Sistema, elegir Administracin, luego Orgenes del softwareyporultimoGestordeactualizaciones. Modoterminal : Instalar: aptget aptitude realizaunainstalacinbsica realizaunaactualizacinmscompleta. Instalaprograma Desinstalaprograma

aptgetinstallprograma aptgetremoveprograma

Conelcomando aptcachesearchnombre encontramostodoslosprogramasque tienenqueverconelnombreintroducido. Actualizar: aptgetupdate aptgetupgrade Buscaactualizacionesenlosrepositorios Instalaactualizacionesbajadasdeinternet

aptgetdistupgrade Actualizamosnuestradistribucin 6.2 Descargaycompilacindeprogramas:

Paraquesolounusuariopuedautilizarunprogramalodescargaremosensuhome,mientras quesideseamosquetodoslosusuariospuedanutilizarlologuardaremoseneldirectorio/opt. Losprogramaspropiosdeladistribucinqueestnenlosrepositoriosseguardarandentrodel directorio/usr. Al descargarnos un programa podemos encontrar archivos comprimidos en diferentes formatos: gzip .tar .gzip.tar Comopodemosverenlaimagensiguienteestosarchivossuelenaparecerencolorrojo.

14

CURSOAVANZADODELINUX

Paradescomprimirunarchivodesdelaterminalutilizaremoselcomando tarxvzfnombredelarchivo.tar.gz Tambin podemos encontrar archivos sources, que vienen escritos en lenguaje C y hay que traducirlosalenguajeLinux.Paraellousamoslacompilacin: ./configure make makeinstall tieneencuentalascaractersticasdenuestramquina compila(enocasionestambininstala) Instala

DescargadearchivosopaginasdesdeInternet: ParadescargarunarchivoqueestecolgadoenInternetutilizaremoselcomandowget,conla siguientesintaxis: wgethttp://direcciondelaweb Siutilizamoswgetrnosdescargaremostodalapaginaseleccionada.

Permisosypropietarios

Comoyasevienelcursodeintroduccin,alejecutarelcomandolsl,nosaparecentodos losarchivoscontenidoseneldirectorio,precedidosporunaseriedecaracteresquenosindicanlos tiposdepermisosquetienecadaarchivo.Veamosunejemplo:

15

CURSOAVANZADODELINUX Fijmonosenlacarpetadenombre blimps3.8 quetienepermisosdrwxrxrx. Vayamoscarcterporcarcterviendosusignificado: siesdirectorionosapareced siesarchivonosaparece(comoporejemploencurso_mantenedores.pdf) siesunenlace(linkoicono,accesodirecto)aparecel Segundoconjuntodecaracteres Ultimoconjuntodecaracteres grupo(i.e.otros) r:lectura w:escritura x:ejecucin(salencomoazulados) Sideseamoscambiarlospermisosdeunarchivoutilizaremoselcomandochmod,conlasiguiente estructura: chmodXYZnombrearchivo dondeXserunnumeroqueespecifiquelospermisosqueledaremosalpropietario,Yespecificara lospermisosqueledamosalgrupoyZespecificaralospermisosqueledamosalrestodeusuarios sobreelarchivo.Esosnmerospuedenser: 0 1 3 4 5 6 7 noledoypermisos permisosdeejecucin(x) permisosdeejecucinyescritura(PERONOLEER!)(rx) permisodelectura(r) permisosdelecturayejecucin(rx) permisodelecturayescritura(rw) permisodelectura,ejecucinyescritura(rwx) rxr:nosindicalospermisosdelgrupo rx:lospermisosdelosquenosonusuarioprincipalo Primerconjuntodetrescaracteres rwx:indicacualessonlospermisosdelpropietario

Ahoraveamosquesignificancadaunadelasletras:

Losmscomunesson1,5,7. Otraformademodificarlospermisossebasaenlasiguienteestructura: chmodoxnombrearchivo Elprimercarcter,enestecasounao,indicadequienqueremoscambiarlospermisos: u g o usuario grupo otros

16

CURSOAVANZADODELINUX El segundo carcter indica si queremos dar ms permisos (en ese caso pondremos+)osiqueremosquitarpermisos(pondremos,comoenelejemplo,un) Elultimocarcterindicaaquepremisosnosreferimos,x:ejecucin,w:escritura,r:lectura. Cambiarpropietario: Elcomandoautilizarserchownconlasiguientesintaxis: chownnuevopropietarionombrearchivo Porejemplosiescribimosenlaterminal chownpepeArchivo estaremosdiciendoqueelnuevopropietariodelarchivodenombreArchivo,serpepe. Podemoscambiaralavezgrupoypropietario,siguiendolasintaxissiguiente: chownnuevopropietario:nuevogruponombrearchivo Tambin podemos cambiar solamente el grupo propietario del archivo con el comando chgrpylasiguientesintaxis: chgrpnuevogruponombrearchivo

Comandosdelamquina

LoscomandosqueseejecutanenlamquinasedenominanBinariosyselocalizanenlos siguientesdirectorios: cd/opt/sge/bin usr/local/bin

17

CURSOAVANZADODELINUX Con el comando locate programa podemos encontrar donde esta ubicado el programaquequeremosejecutar.

SiqueremosejecutarporejemploelprogramaOpenOfficepodemoshacerlodedosmodos: tecleandoenlaconsoladirectamenteooffice tecleandoenconsolalaubicacindelejecutable/usr/bin/ooffice. Cadausuarioensuhomepuedeeditarelarchivo.bashrcparaquealgnprogramapuedaser ejecutadosimplementetecleandosunombreenlugardetenerquetecleartodalaruta.Hayquetener encuentaqueelarchivobashrcesunarchivoocultoyqueparaabrirloyeditarlotendremosque ponerenlaterminal: vim.bashrc (hemosaadido.paraqueabraelarchivooculto) Veamosunejemplo: Aadamosennuestrobashrclasiguientelnea: exportGADDIR=/opt/grads/data Deestaformaseejecutaraelprogramamscmodamente,ynohasidonecesariomsqueeditar unasolavezelbashrc NOTA:Paraqueseaefectivoelcambiotendremosquecerrarlaterminalyabrirunanueva.Si queremosqueelcambioafecteatodoslosusuarios,lalnealatendremosqueaadiralarchivo bash.bashrcquesesitaeneldirectorioetc.

Copiararchivos

Comoyavimosalcomienzodelcurso,existeuncomandoquenossirveparacopiararchivos deunaubicacinaotra.Esecomandoeselcp. Lasintaxisautilizarconestecomandoeslasiguiente: cpdirectorio1directorio2 Deestaformael directorio1 sehabrcopiadoenunanuevaubicacindadapor directorio2.Por ejemplo: cp/etc/vim/vimrc/home/npebm/.vimrc 18

CURSOAVANZADODELINUX Aselarchivovimrcquesesituabadentrode/etc/vimlohabremoscopiadoalhomedel usuarionpebmconelnombre.vimrc Siloquequeremoscopiaresunacarpetacompletaynosolounarchivoutilizaremoselcomando cpr Comandoscp: Este comandoes anlogoal cp peroseutilizaparacopiararchivosdesdeunordenador remoto,esdecir,siporejemplohemosinstaladounprogramaexternoalaslibrerasenunodelos ordenadoresdelaulayqueremostrasladarloalresto.Lasintaxisparautilizarestecomandoesla siguiente: scparchivoorigenusuarioremoto@mquinaremota:destino Porejemplo,siennuestrohometenemoselarchivoStarOffice.odtyqueremostrasladrselo aotrousuariodenombreusuarioquesesitaenlamquinasunny02,haramos: scp/home/npebm/StarOffice.odtusuario@sunny02.fis.ucm.es:/home/usuario Deestemodohabremostrasladadoelarchivoqueelusuario npebm teniaensuhome,al homedelusuariodenombreusuario,queestabaenlamquinasunny02 Aligualqueconelcomandocp,siloquequeremoscopiardeformaremotasoncarpetasen lugardearchivosutilizaremoselcomandoscpr.Hayquetenercuidadoalutilizarestecomando porquesiponemosporejemplo: scpr/home/npebm/StarOffice.odtusuario@sunny02.fis.ucm.es:/home/usuario/ secrearaunacarpetavacaentreelusuarioyelarchivo

10

Escritorioremoto.Vnc(VisualNetworkComputing)

Enelcasodetenervariosordenadoresconectadosenredennuestracasauoficinapuede resultarmuyinteresantepodercontrolaryaccederaalgunosdeellos sintenerqueestarsentados fsicamentedelante. Estoesposiblegraciasalescritorioremoto.Elordenadoralquequeremosaccederhacede servidor. El ordenador desde el que accedemos es el cliente de escritorio remoto. Tanto para establecerelservidorcomoelclientedeescritorioremotonecesitamos configurarelsistemapara permitiryrealizarconexiones. Vayamosporpartes.Primeroelservidor,stepuedetenerinstaladocualquiersistemaoperativoque permitaaceptarconexionesremotas. En Ubuntu es tan fcil como permitir que los usuarios remotos vean mi escritorio desde Sistema>>Preferencias>>EscritorioRemoto Unavezquetenemoselservidorconfiguradopasamosaverelclientedeescritorioremotoque necesitaremosenelequipodesdeelquequeremosconectarnos. Si tenemos instalado Ubuntu u otra ditribucin de GNU/Linux podemos emplear el cliente de TerminalServer,queencontraremosenelmenAplicaciones>>Internet>>ClientedeTerminal Server 19

CURSOAVANZADODELINUX Configuramos la pantalla que nos aparecer con los datos adecuados para nuestroservidordeescritorioremotoyhacemosclicenConectar.Sitodohaidobienapareceruna ventanaconelescritoriodelotroordenador,porlaquepodremosmovernosyinteractuarcomosi estuvisemossentadosdelante. ElprogramaquemsseutilizaparaestatareasedenominaVNC,siglasde VirtualNetwork Computing,yloquehaceespermitiraunordenadorremotousarsupropiapantalla,tecladoyratn comosifueranlospropios.Vamosaverdetenidamente,pasoapaso,elprocesodepuestaenmarcha deesteprograma. Alinstalarelprograma,cuandonosofrezcaseleccionarloscomponentesainstalar,debemos diferenciarentresilohacemosenelclienteoenelservidor,enelcasodelservidor,instalamoslas dosopciones,puesvaahacertantolasvecesdeservidorcomoclientedesmismoodeotramqui na.Paraelordenadorcliente,encambio,tanslonecesitamosinstalarlaopcinVNCViewer,pues vamosausarloparavisualizarelescritoriodeotroordenador. Unavezqueyatenemosinstaladaslasdosversiones,elservidoryelvisorde datos,procedemosaprepararelservicio.Enelordenadorquehacelasvecesdeservidor,debemos arrancarelprogramaRunVNCServer.Nadamsarrancar,senospresentarunaventanaenla queharemosunaconfiguracinrpidadelaspropiedadesdelservidor.Losparmetrosyopciones quevienenpordefectosuelenserperfectamentevlidas,ytansloestsobligadoaintroducirla contraseadeaccesoalservidor,puessinellanotedejararrancar.Unavezintroducida,yapuedes pincharenOK,conloquesecerrarlaventana,yteapareceruniconoenlazonainferiorderecha delapantalla. Ahoradebespasaralordenadorqueharlasfuncionesdecliente.Aqudebesarrancarel programaRunVNCViewer.Laventanaquesetepresentaenprimerlugartesolicitaelnombrede lamquinadondetequieresconectar.Estadenominacinlapuedesentregartantocomonombrede red,comodirectamentecomodireccinTCP/IP.Acontinuacintepreguntarlacontraseaydebe rsindicarlaqueantesescribiste. Ahorasetepresentarunanuevaventanaquetendrensuinteriorelcontenidodelescrito riodelordenadorremoto,quepodrsmanejardesdetuordenador,contupropiotecladoyratn.De hecho,todaslasaccionesquerealicesenremoto,semostrarntantoenlaventanalocalcomoenla pantallaremota. Vncesunprogramadesoftwarelibrebasadoenunaestructuraclienteservidorelcualnos permitetomarelcontroldeunordenadorservidorremotamenteatravsdeunordenadorcliente.Lo podemosencontrardentrodelmenAplicaciones,seleccionandoInternetyposteriormenteVisorde escritorios remoto. Slo podemos ver mquinas en modo servidor que tengan instaladas las siguientesaplicaciones: vncjava x11vnc x11vncstorepasswd x11vncviewonly eselclientedeterminalserver Siqueremosponerunacontrasea Parapoderutilizarelratndesdefuera Laaplicacinx11vncsirveparaponerlamquinaenmodoservidor.

20

CURSOAVANZADODELINUX

11

ConectarseaunamquinaconLinuxdesdeWindows.

Si deseamos desde nuestro ordenador en casa con Windows, conectarnos remotamente a otra mquinaquetengaLinux,podemosutilizarlassiguientesaplicaciones: putty.exe nonecesitainstalacin.Nosproporcionaunaterminaldelamquinaalaque noshayamosconectado

winssh winscp hemosconectado.

funcionacomoelprotocolossh permiteverlosescritoriostantodenuestroequipocomodelequipoalquenos

Existelaaplicacin xming queusasimultneamentelosprotocolos sshxyxdmcp,yque permiteusarlosprogramasdeWindowsdesdeLinux Ademstenemosanuestradisposicin: cygwin wine paquetequefuncionaenWindowsysirveparacorreraplicacionesdeLinux paqueteparaLinuxquepermitecorrerprogramasdeWindows.

12

ServidordepginasWeb

Un servidor Web no es ms que un programa que ejecuta de forma continua en un ordenador (tambin se utiliza el trmino para referirse al ordenador que lo ejecuta), mantenindose a la espera de peticiones por parte de un cliente (un navegador de Internet) y que contesta a estas peticiones de forma adecuada, sirviendo una pgina Web que ser mostrada en el navegador o mostrando el mensaje correspondiente si se detect algn error.

21

CURSOAVANZADODELINUX Instalar un servidor Web en nuestro PC nos permitir, entre otras cosas, poder montar nuestra propia pgina Web sin necesidad de contratar hosting, probar nuestros desarrollos en local, acceder a los ficheros de nuestro ordenador desde un PC remoto (aunque para esto existen otras alternativas, como utilizar un servidor FTP) o utilizar alguno de los programas basados en Web. Uno de los servidores Web ms populares del mercado, y el ms utilizado actualmente, es Apache, de cdigo abierto y gratuito, disponible para Windows y GNU/Linux, entre otros.

13

Scripts

LosScriptssonarchivosconextensin.shqueseejecutanenterminal(bashosh) Paraejecutarunscriptnohaymsqueteclearenlaterminal: Sinoestuviramosenterminalbashteclearamosentonces: ./nombredelscript sh./nombredelscript

Todoslosscriptsdebenempezarconunconjuntodecaracteresconocidocomoshabangy quees: #!/bin/bash Alahoradeescribirunscriptpodemoscrearvariablesqueposteriormentepodremosllamar dentrodelmismoscript.Porejemplo: ConA=7 estaramosdefiniendolavariableAconelvalor7 Con$A estaramosllamandoalavariableAcuyovaloryahabasidodefinido. Obviamente podemos hacer que A fuera un vector o cualquier otro conjunto de caracteres u operacionesmscomplejo,perostoseveenotrocurso,dedicadosimplementealacreacinde scripts. Elcomandoreadescapazdeleerloqueelusuariointroduceporelteclado: readn nosdevuelveelnmerodecaracteres readp nosdevuelveunafrase readd sirveparadelimitar Podemostambindetectarerroresennuestroscriptsiloiniciamosconlasiguientesintaxis: #!/bin/bashx|v Alhaberaadidoxsenosmostraraninstruccionesantesdeejecutarelscriptyalaadirvnos pondrlasvariablesquehemosdefinido,seguidasdesuvalor. Loscomandosmsutilizadosenlacreacindescriptsson: if equivaleaunsi.Lasintaxisesifcondicin.Esnecesariocerrarloconunfi else elif equivaleaunelse+if.Noesnecesariocerrarlo case se utiliza cuando queremos reflejar varios casos de operacin en nuestro script.Esnecesariocerrarloconunesac. while equivale a un mientras que,y sirve para indicarle al script,por ejemplo, cuandodebedejardeejecutarse,ocuandocambiareltipodeejecucin do;done

22

CURSOAVANZADODELINUX

14

Demonios

Los daemons (odemonios)nosonmsqueunprocesoqueseejecutaensegundoplano. Estos demonios ejecutan diferentes funciones y proporcionan ciertos servicios, pero sin la interaccindelusuario;sonprocesosdelosqueno"notamos"suejecucin. Los demonios pueden ser iniciados al arrancar el sistema, al entrar en un nivel de ejecucin determinado, o simplemente cuando nosotros los iniciemos. Veremos de qu modo podemos controlarnosotrosmismoslosdemoniosycmopodemoshacerqueseinicienautomticamente. Controldedemonios Losprogramasqueejecutamoscomodemoniospuedenestarubicadosencualquierpartedel disco,perotienenunpuntoencomn:todosutilizanunscriptparaseriniciados/parados,yestos scriptsseencuentraneneldirectorio:/etc/init.d/

Lasintaxishabitualparainiciar/parardemonioses: /etc/init.d/<nombre_demonio>start /etc/init.d/<nombre_demonio>stop /etc/inittab 0 3 5 6 halt multisistema entornogrfico reboot etc/rc0 etc/rc3 etc/rc5 etc/rc6 (para iniciar (paradetenerlo) el demonio)

Serconvenienteconocerlosrunlevels:

23

CURSOAVANZADODELINUX Scriptspropios Apartedelosdemoniosdelsistemaylosdemoniosdedeterminadasaplicaciones,nosotros tambin podemos crear nuestros scripts para iniciar/parar/reiniciar los programas que nosotros queramos poner como demonios. nicamente hemos de crear un script que siga la siguiente sintaxis:
#!/bin/sh case "$1" in start) # cdigo para iniciar el demonio/programa ;; stop) # cdigo para parar el demonio/programa ;; restart) # cdigo para reiniciar el demonio/programa ;; esac

Estonosdicequecuandoejecutemos elscriptylepasemoselparmetro start,nosiniciarel demonio, cuandolepasemos elparmetro stop lodetendr,ycuandolepasemos elparmetro restart loreiniciar.Normalmenteslo root tienepermisosparainiciar/pararlosservicios,pero tododependedelospermisosqueselehayanpuestoalscript. Podemoscrearunusuarioquetengaprivilegiosparalacreacindescriptsydemodoqueno lesearequeridalacontrasea.Paraellotendremosqueaadirunalneaenelarchivosudorescomo yavimosquesehaciaenelapartado6deestecurso,cuandohablamosdeprivilegiosparainstalar programas.Recordemoselaspectodeesearchivo:

24

CURSOAVANZADODELINUX Tenemosdosopciones: Aadirunanuevalneaen #Userprivilegespecification script ALL=NOPASSWD:/etc/init.d/script Aadirunalneaen #Cmndaliasspecification IPW:/etc/init.d/script1,/etc/init.d/script2 scriptALL:NONPASSWD:PW

15

FirewalleIPtables

Unfirewallesundispositivoquefiltraeltrficoentreredes,comomnimodos.Elfirewall puedeserundispositivofsicoounsoftwaresobreunsistemaoperativo.Engeneraldebemosverlo comounacajacondosomsinterfacesderedenlaqueseestablecenunareglasdefiltradoconlas quesedecidesiunaconexindeterminadapuedeestablecerseono. Esaseraladefinicingenrica,hoyendiaunfirewallesunhardwareespecficoconunsistema operativo o unaIOSquefiltraeltrficoTCP/UDP/ICMP/../IPydecidesiunpaquetepasa, se modifica,seconvierteosedescarta.Paraqueunfirewallentreredesfuncionecomotaldebetener almenosdostarjetasdered.Estaseralatipologaclsicadeunfirewall:

Los firewalls se pueden usar en cualquier red. Es habitual tenerlos como proteccin de internetenlasempresas,aunqueahtambinsuelentenerunadoblefuncin:controlarlosaccesos externoshaciadentroytambinlosinternoshaciaelexterior;estoltimosehaceconelfirewallo frecuentementeconunproxy(quetambinutilizanreglas,aunquedemsaltonivel). Seaeltipodefirewallquesea,generalmentenotendrmasqueunconjuntodereglasenlas queseexaminaelorigenydestinodelospaquetesdelprotocolotcp/ip.Encuantoaprotocoloses probablequeseancapacesdefiltrarmuchostiposdeellos,nosololostcp,tambinlosudp,los icmp,losgreyotrosprotocolosvinculadosavpns.Estepodraser(enpseudolenguaje)unel conjuntodereglasdeunfirewallcomoeldelgrfico: PoliticapordefectoACEPTAR.

25

CURSOAVANZADODELINUX TodoloquevengadelaredlocalalfirewallACEPTAR Todoloquevengadelaipdemicasaalpuertotcp22ACEPTAR Todoloquevengadelaipdecasadeljefealpuertotcp1723ACEPTAR Todoloquevengadehora.rediris.esalpuertoudo123ACEPTAR TodoloquevengadelaredlocalyvayaalexteriorENMASCARAR Todoloquevengadelexterioralpuertotcp1al1024DENEGAR Todoloquevengadelexterioralpuertotcp3389DENEGAR Todoloquevengadelexterioralpuertoudp1al1024DENEGAR Endefinitivaloquesehacees: HabilitaelaccesoapuertosdeadministracinadeterminadasIPsprivilegiadas Enmascaraeltrficodelaredlocalhaciaelexterior(NAT,unapeticindeunpcdelaLANsale alexteriorconlaip pblica),parapodersalirainternet Deniegaelaccesodesdeelexteriorapuertosdeadministracinyatodoloqueesteentre1y 1024. IPtables es un sistema de firewall vinculado al kernel de Linux que se ha extendido enormementeapartirdelkernel2.4deestesistemaoperativo.Aligualqueelanteriorsistema ipchains,unfirewalldeiptablesnoescomounservidorqueloiniciamosodetenemosoquese pueda caer por un error de programacin(esto es una pequea mentira, ha tenido alguna vulnerabilidad que permite DoS, pero nunca tendr tanto peligro como las aplicaciones que escuchanendeterminadopuertoTCP):iptablesestaintegradoconelkernel,espartedelsistema operativo.Unfirewalldeiptablesnoessinounsimplescriptdeshellenelquesevanejecutandolas reglasdefirewall. Comoseveenelsiguientegrfico,bsicamentesemirasielpaqueteestadestinadoalapropia mquinaosivaaotra.Paralospaquetes(odatagramas,segnelprotocolo)quevanalapropia mquinaseaplicanlasreglasINPUTyOUTPUT,yparafiltrarpaquetesquevanaotrasredeso maquinasseaplicansimplementereglasFORWARD.INPUT,OUTPUTyFORWARDsonlostres tiposdereglasdefiltrado.PeroantesdeaplicaresasreglasesposibleaplicarreglasdeNAT:stas seusanparahacerredireccionesdepuertosocambiosenlasIPsdeorigenydestino.

26

CURSOAVANZADODELINUX

15.1 Firewallparanuestramquina VamosaveracontinuacinunejemplodecomocrearconIptablesunfirewallparanuestra maquina.Lounicoquetendriamosquehacerseriaunscriptdeshellenelquesevayanaplicando reglas.LosscriptsdeIPtablespuedenteneresteaspecto: #!/bin/sh ##SCRIPTdeIPTABLESejemplodelmanualdeiptables ##Ejemplodescriptparaprotegerlapropiamquina echonAplicandoReglasdeFirewall... ##FLUSHdereglas iptablesF iptablesX iptablesZ iptablestnatF ##Establecemospoliticapordefecto iptablesPINPUTACCEPT iptablesPOUTPUTACCEPT iptablesPFORWARDACCEPT iptablestnatPPREROUTINGACCEPT iptablestnatPPOSTROUTINGACCEPT ##Empezamosafiltrar #Ellocalhostsedeja(porejemploconexioneslocalesamysql) /sbin/iptablesAINPUTilojACCEPT #AnuestraIPledejamostodo iptablesAINPUTs195.65.34.234jACCEPT #AuncolegaledejamosentraralmysqlparaquemantengalaBBDD iptablesAINPUTs231.45.134.23ptcpdport3306jACCEPT

27

CURSOAVANZADODELINUX #AundiseadorledejamosusarelFTP iptablesAINPUTs80.37.45.194ptcpdport20:21jACCEPT #Elpuerto80dewwwdebeestarabierto,esunservidorweb. iptablesAINPUTptcpdport80jACCEPT #Yelresto,locerramos iptablesAINPUTptcpdport20:21jDROP iptablesAINPUTptcpdport3306jDROP iptablesAINPUTptcpdport22jDROP iptablesAINPUTptcpdport10000jDROP echo"OK.Verifiquequeloqueseaplicacon:iptablesLn" #Findelscript Elscriptessimple,conunaspocasreglasconlasquecerramospuertosalpblicoalosque notienenporqueteneracceso,salvoel80.PerosinosdamoscuentanosefiltraelUDPnielICMP. Esmuyprobablequeelsistematengaalgnpuertoudpabierto,yademspeligrosocomoelSNMP. Paraevitarproblemas,alfinaldelscriptpodemosaadirlaordendecerrarelrangodepuertosdel1 al1024,quesonlosreservadostantoparatcpcomoudp. ... ...
#Elpuerto80dewwwdebeestarabierto,esunservidorweb. iptablesAINPUTptcpdport80jACCEPT #Cerramosrangodelospuertosprivilegiados.Cuidadoconestetipode #barreras,anteshayqueabriralosquesitienenacceso. iptablesAINPUTptcpdport1:1024 iptablesAINPUTpudpdport1:1024 #Cerramosotrospuertosqueestanabiertos iptablesAINPUTptcpdport3306jDROP iptablesAINPUTptcpdport10000jDROP iptablesAINPUTpudpdport10000jDROP echo"OK.Verifiquequeloqueseaplicacon:iptablesLn" #Findelscript

28

CURSOAVANZADODELINUX 15.2 Firewallparaunaredlocalconsalidaainternet Ahoravamosaverunaconfiguracindefirewalliptablesparaeltpicocasoderedlocalque necesitasalidaainternet.

Qu es lo que hace falta? Obviamente, una regla que haga NAT hacia fuera (enmascaramientoeniptables),conloqueseharadosvecesNATenelfirewallyenelrouter.Entre elrouteryelfirewalllonormalesquehayaunaredprivada(192.168.1.1y192.168.1.2porejemplo), aunquedependiendodelasnecesidadespuedequelosdostenganIPpblica.Elroutersesupone quehaceunNATcompletohaciadentro(quizsalvopuerto23),oseaquedesdeelexteriornose llegaalroutersinoquedeformatransparentese"choca"contraelfirewall.Lonormalenestetipo defirewallsesponerlapolticapordefectodeFORWARDendenegar(DROP). Veamoscomoseraestefirewall:
!/bin/sh ##SCRIPTdeIPTABLESejemplodelmanualdeiptables ##Ejemplodescriptparafirewallentreredlocaleinternet echonAplicandoReglasdeFirewall... ##FLUSHdereglas iptablesF iptablesX iptablesZ iptablestnatF ##Establecemospoliticapordefecto iptablesPINPUTACCEPT iptablesPOUTPUTACCEPT iptablesPFORWARDACCEPT iptablestnatPPREROUTINGACCEPT iptablestnatPPOSTROUTINGACCEPT ##Empezamosafiltrar ##Nota:eth0eselinterfazconectadoalrouteryeth1alaLAN #Ellocalhostsedeja(porejemploconexioneslocalesamysql) /sbin/iptablesAINPUTilojACCEPT #Alfirewalltenemosaccesodesdelaredlocal iptablesAINPUTs192.168.10.0/24ieth1jACCEPT #Ahorahacemosenmascaramientodelaredlocal #yactivamoselBITDEFORWARDING(imprescindible!!!!!)

29

CURSOAVANZADODELINUX
iptablestnatAPOSTROUTINGs192.168.10.0/24oeth0jMASQUERADE #Conestopermitimoshacerforwarddepaquetesenelfirewall,osea #queotrasmquinaspuedansaliratravesdelfirewall. echo1>/proc/sys/net/ipv4/ip_forward ##Yahoracerramoslosaccesosindeseadosdelexterior: #Nota:0.0.0.0/0significa:cualquierred #Cerramoselrangodepuertobienconocido iptablesAINPUTs0.0.0.0/0ptcpdport1:1024jDROP iptablesAINPUTs0.0.0.0/0pudpdport1:1024jDROP #Cerramosunpuertodegestin:webmin iptablesAINPUTs0.0.0.0/0ptcpdport10000jDROP echo"OK.Verifiquequeloqueseaplicacon:iptablesLn"

15.3 UnejemplomsdeFirewall Otraformadecrearunfirewallesmediantelosarchivos/etc/host.denyy/etc/host.allow Enelprimeroespecificaremoslospuertosylasmquinasquenodejaremosacceso,enelsegundoa lasquesselodejaremos. Ejemplohost.deny ALL:ALLEsteeselmodopnico,cerramostodaslasconexionesentrantes SSH:ALLCerraremostodaslasconexionesentrantesporelpuertossh. ALL:ipCerraremoslaentradaalaipespecificadaatodaslasconexiones. Sicombinamoslasordenesdehost.allowconhost.denypodemoscrearunfirewallamedida. 15.4 Logueoenredsincontrasea Muchasvecesdebemosejecutarrdenesremotas,mediantescriptsodemoniosyparaello necesitamosunaformadeloguearnosporsshsintenerquedarelpassword. Porcuestionesdeseguridad,paraestascosascrearemosunusuario,puedehacersecomorootpero esmsinseguro. Esnecesarioeliminarcualquierfingerprintquepuedallegaratenerregistradolamquina clientequeapuntealamquinaservidorutilizandorootuotrousuariodistintoalquevaagenerarel tnelautomticamente.Paraesto,enelclienteejecutamos:
/root/.ssh #vim known_hosts

buscamoslaentradaqueapuntaalservidorylaeliminamos.Obieneliminamostodoel archivo.

30

CURSOAVANZADODELINUX AhoranecesitamoscrearelpardeclavesRSApblica/privadaparaelcliente. ConstefinutilizamoselcomandosshkeygendelpaqueteSSH. Parastecasoenparticularhedejadopordefectoelnombredearchivodelasclavesagenerar (id_rsaeid_rsa.pub)ynoheutilizamosunafraseohashalguno:


ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in id_rsa. Your public key has been saved in id_rsa.pub. The key fingerprint is: a6:63:a7:3e:7d:17:42:83:b2:85:79:ef:44:e8:89:67

Ahoradentrodelacarpeta/root/.sshtendremoslosdosarchivosquecontienenelparde claves.id_rsaeid_rsa.pub Paraqueelservidornorequieraautenticacindelequipoclienteesnecesarioincluirlaclave pblicadelcliente(elcontenidodelarchivo/root/.ssh/id_rsa.pubqueacabamosdecrear)dentrodel archivodeclavesautorizadasparaelusuariodelservidorconelquequeremosentrar(quese encuentra/home/usuario/.ssh/authorized_keys). Apartirdestemomentoelclienteescapazdeiniciarunasesinseguraenelservidor logeandosecomounusuariosinnecesidaddeingresarcontraseaalguna. Comoyahemosvistoelcomandoconelcuallograrestoes:


ssh servidor -l usuario

16

CopiasdeSeguridad

Esmuyimportanteguardarunacopiadenuestrosarchivosperidicamenteparaevitar prdidasdeinformacin. Vamosavervariasformasdehacerlo:porunaparteharemosbackupsdeficherosydirectorios,esto nospermitirpoderrestaurararchivosodirectoriosdemaneraindividualyporotraharemosuna copianospermitirrecuperarnuestrosistemaencasodeurgencia. Enamboscasos,eldirectoriodedestinopuedeserlocaloremoto. 16.1 Backups de direcorios y ficheros

Setratadehacerunbackupdetodoslosarchivosdenuestrousuario.Adems, mantendremosunhistricodebackups,haremosunacopiadiaria(lunes,martes,mircoles,etc.), cadalunesmachacaremoslacopiadellunesanterioryascontodoslosdas. Elprocedimientoessencillo,elegiremoslosdirectoriosyficherosdelosquequeremoshacerel backup,yloscopiaremos. cp -rp /home /media/sdb/backup/domingo Estotalmentefuncional,perolaverdadesquenoeseficiente,elproblemaestenquecada lunesnosharunacopiacompletadetodoslosarchivosquetenemoseneldirectorio,cuandoloque seriadeseableesqueslocopiaralosmodificadosoloscreadosdesdelltimobackup.

31

CURSOAVANZADODELINUX Nohayproblema,tenemosotrainstruccinquenosofreceestafuncin. rsync -altgvbp /home/banyut /media/sdb5/backup/domingo Puedeserinteresantehacerloenformatocomprimido,paraellogeneraremosun.tar He creado la carpeta /backups en el raz que es donde se guardar el script y los archivos tar.gz a transmitir. El script lo llamo backup.sh y debe tener permisos de ejecucin ( chmod 744 ). A continuacin se detalla el cdigo de backup.sht :
#!/bin/bash ########################################################### # Script de backup automatico # ########################################################### # ---------------- Asignacion de variables ----------------# Esta variable es igual al nombre del dia actual # (se utilizara mas adelante para darle nombre al archivo) DIA=`date +%A` #Directorios a backupear DIRECTORIOS= "/usr/local/bin /usr/local/sbin /etc" #------------------- Realizacion del backup --------------cd /backup logger "** Realizando Backup correspondiente al dia $DIA **" if [ -f $DIA.tar.gz ];then rm $DIA.tar.gz fi tar -czf $DIA.tar.gz $DIRECTORIOS &> /dev/null logger "** Realizando transferencia **" scp $DIA.tar.gz ipdestino logger "** Transferencia del backup finalizada **"

La variable $DIA graba el nombre en ingls del da actual. Con esto se logra que cada backup dure una semana ya que el script pisa un archivo con el mismo nombre (en realidad lo borra primero y regenera despus). La variable $DIRECTORIOS contiene la ruta de los directorios a backupear separadas por un espacio. Las variables $DEST y $PUERTO indican parmetros para realizar la transferencia. Por ltimo se genera una tarea en CRON para ejecutar el script una vez por da:
# backup automatico 30 20 * * * root /bin/sh /backup/backup.sh

32

CURSOAVANZADODELINUX 16.2- Backup de recuperacin En este tipo de backups, lo que buscamos es realizar una copia tal cual de nuestro disco. Utilizaremos el comando dd El comando dd (duplicate disk) es un comando bastante til para transferir datos desde un dispositivo/archivo hacia un dispositivo/archivo/etc. La sintaxis bsica del comando es la siguiente: dd if=origen of=destino donde if significa "input file", es decir, lo que quers copiar y of significa "output file", o sea, el archivo destino (donde se van a copiar los datos); origen y destino pueden ser dispositivos (lectora de CD, diskettera, etc.), archivos, etc. Copiando Diskettes: Primero insertamos el diskette origen y escribimos lo siguiente en una consola: dd if=/dev/fd0 of=~/diskette.img despus insertamos el diskette destino (en blanco) y escribimos lo siguiente: dd if=~/diskette.img of=/dev/fd0 nos queda eliminar la "imagen" que creamos y listo... rm -f ~/diskette.img NOTA: El ~ significa "tu directorio home", es similar a escribir $HOME Manejo de errores durante la copia: Es posible que durante la copia o duplicacin de un diskette se encuentren errores en la superficie del mismo. Para evitar que este error nos impida copiar los datos "buenos" del disco podemos hacer lo siguiente: dd conv=noerror if=/dev/fd0 of=~/imagen_disco_con_errores.img NOTA: la opcin noerror hace que se contine con la copia aunque se produzcan errores de lectura Haciendo imgenes ISO de un CD: La forma mas fcil y efectiva de crear nuestras "imagenes" de CD es la siguiente: dd if=/dev/cdrom of=micd.iso El comando dd tambin sirve para copiar particiones o discos completos unos sobre otros. Bsicamente podemos decir que mediante dd podemos "clonar" particiones o nuestro disco rgido completo. Para hacer esto hac lo siguiente: dd if=/hdxa of=/hdyb dd if=/hdx of=/hdy (copia una particin en otra) (copia de un disco duro en otro)

donde: x: disco rgido origen,y: disco rgido destino, a: particin origen, b: particin destino. NOTA: Es necesario que sepas como se definen los discos y particiones en Linux. 33

CURSOAVANZADODELINUX 16.3- Recomendaciones * Tener mucho cuidado con lo que haces porque los datos de la particin o disco destino sern destruidos por completo. * Tener en cuenta tambin que la particin o disco destino debe ser igual en tamao (o en todo caso mayor) que la particin o disco origen. * Es conveniente hacer una copia de seguridad de los datos importantes y tener a mano un disco de arranque de linux por si acaso. Por ltimo: Tener presente que el tamao de la imagen resultante va ser exactamente el mismo que el del dispositivo original. Es decir: dd te guarda tambin el espacio no utilizado. Se puede redirigir la salida con una tubera (pipe) y comprimirlo con gzip, bzip, pero an as vas a necesitar bastante espacio libre para poder guardar las imgenes que generes.

17-

Anexo: Comandos de interes

A continuacin mostramos una tabla con los comandos mas utilizados en Linux,con una breve descripcin de su uso:
COMANDO apropospalabra whichcomando timecomando timecat niceinfo renice19p$$ DESCRIPCIN Vercomandosrelacionadosconpalabra Verlarutacompletadecomando Medircuantotardacomando Iniciarcronmetro.Ctrldparadetenerlo. Lanzarcomandoinfoconprioridadbaja Darleprioridadbajaalshell(guin).Usarparatareas nointeractivas dirnavegacin cd cd (cddir&&comando) pushd. Volveraldirectorioanterior Iraldirectoriopersonal(home) Iradir,ejecutarcomandoyvolveraldirectorioinicial Guardareldirectorioactualenlapilaparaluego,poder hacerpopdyvolveralmismo bsquedasdearchivo aliasl='lslcolor=auto' lslrt ls/usr/bin|prT9W$COLUMNS findname'*.[ch]'|xargsgrepE'expre' findtypefprint0|xargsr0grepF'ejemplo' Listadodedirectoriorpido Listararchivosporfecha.Vertambinnewest Imprimir9columnasenanchodelaterminal Buscar'expre'enestedirectorioysubdirectorios. Buscar'ejemplo'entodoslosarchivosregulareseneste directorioysubdirectorios

findmaxdepth1typef|xargsgrepF'ejemplo'

34

CURSOAVANZADODELINUX
Buscar'ejemplo'entodoslosarchivos regularesdeestedirectorio findmaxdepth1typed|whilereaddir;doecho $dir;echocmd2;done findtypef!perm444 findtyped!perm111 locater'file[^/]*\.txt' lookreferencia grepcolorreferencia/usr/share/dict/palabras Procesarcadaelementoconmuchoscomandos(conun buclewhile) Hallararchivossinpermisogeneraldelectura(utilpara sedesweb) Hallardirectoriossinpermisogeneraldeacceso(util parasedesweb) Buscarnombresenindiceencache.Estereesiguala glob*file*.txt Bsquedarpida(ordenada)deprefijoendiccionario Resaltarocurrenciasdeexpresinregularen diccionario archivos gpgcfile gpgfile.gpg tarcdir/|bzip2>dir.tar.bz2 bzip2dcdir.tar.bz2|tarx tarcdir/|gzip|gpgc|sshuser@remoto'dd of=dir.tar.gz.gpg' finddir/name'*.txt'|tarcfilesfrom=|bzip2> dir_txt.tar.bz2 finddir/name'*.txt'|xargscpatarget directory=dir_txt/parents (tarc/dire/de/copiame)|(cd/este/dir/&&tarx p) Encriptararchivo Desencriptararchivo Creararchivocompactodedir/ Extraerarchivocompacto(usargzipenvezdebzip2 paraarchivostar.gz) Crearcompactadoencriptadodedir/enequiporemoto Crearcompactadodesubconjuntodedir/y subdirectorios Copiarsubconjuntodedir/ysubdirectorios Copiar(conpermisos)directoriocopiame/adirectorio/ este/dir/

(cd/dire/de/copiame&&tarc.)|(cd/este/dir/&& Copiar(conpermisos)contenidodeldirectorio copiame/adirectorio/este/dir/ tarxp) (tarc/dire/de/copiame)|sshCuser@remoto'cd /este/dir/&&tarxp' ddbs=1Mif=/dev/hda|gzip|sshuser@remoto'dd of=hda.gz' rsyncPrsync://rsync.servidor.com/ruta/a/archivo archivo rsyncbwlimit=1000desdearchivoalarchivo rsyncazesshdelete~/public_html/remoto.com:'~/ public_html' rsyncauzesshremote:/dir/.&&rsyncauzessh. remote:/dir/ Copiar(conpermisos)directoriocopiame/adirectorio remoto/este/dir/ Respaldodediscoduroenequiporemoto

rsync(Usarlaopcindryrunparaprobarlo) Obtenersolodiffs.Repetirmuchasvecesparadescargas conflictivas Copialocalcontazalmite.P Espejodesedeweb(usandocompresinyencriptado) Sincronizandodirectorioactualconunoremoto

35

CURSOAVANZADODELINUX
wget(herramientadedescargasmultiuso) (cdcmdline&&wgetndpHEKk http://www.pixelbeat.org/cmdline.html) wgetchttp://www.ejemplo.com/largo.archivo wgetrndnpl1A'*.jpg'http://www.ejemplo.com/ wgetftp://remoto/archivo[19].iso/ wgetqOhttp://www.pixelbeat.org/timeline.html| grep'ahref'|headP echo'wgeturl'|at01:00 wgetlimitrate=20kurl wgetnvspiderforcehtmlibookmarks.html wgetmirrorhttp://www.ejemplo.com/ Guardarendirectorioactualunaversinnavegablede unapginaweb Retomardescargadeunarchivoparcialmente descargado Descargarunaseriedearchivoseneldirectorioactual FTPpermiteglobalizacionesdirectas Procesandodirectamentelasalida Descargarlaurla1AMaldirectorioenqueest Hacerdescargasdebajaprioridad(enestecaso,no excederlos20KB/s) Revisandolosenlacesdeunapgina Actualizareficientementeunacopialocaldeunapgina web(tilsiusamoscron) redes ethtoolinterface iplinkshow iplinksetdeveth0namewan ipaddradd1.2.3.4/24brd+deveth0 iplinksetdevinterfaceup iprouteadddefaultvia1.2.3.254 Listarestadodeinterfase Listarinterfases Renombrareth0awan Agregaripymscara(255.255.255.0) Subir(obajar)lainterfase Establecer1.2.3.254comovalorporomisinparala puertadeenlace.

tcqdiscadddevloroothandle1:0netemdelay20msec Agregarle20msdeesperaaldispositivoderetorno (parahacerpruebas) tcqdiscdeldevloroot hostpixelbeat.org hostnamei netstattupl netstattup smbtree nmblookupA1.2.3.4 smbclientLwindows_box mounttsmbfsofmask=666,guest //windows_box/share/mnt/share Quitarlaesperaagregadaantes. Obtenerladireccinipparaeldominiooalrevs Obtenerladirecciniplocal(equivalealanfitrin `hostname`) Listarlosserviciosdeinternetdeunsistema Listarlasconexionesactivasde/haciaunsistema Hallarequiposwindows.Vertambinfindsmb Hallarelnombre(netbios)dewindowsasociadoconla direccinip Listararchivoscompartidosenequiposwindowso servidorsamba Montarundirectoriocompartido

windows(notasambaeselpaquetequepermitetodosestoscomandosderedesdewindows)

36

CURSOAVANZADODELINUX
calendario cal3 cal91752 datedfri datedate='25Dec'+%A datedate'19700101UTC1234567890seconds' TZ=':America/Los_Angeles'date echo"mails'tomareltren'P@draigBrady.com< /dev/null"|at17:45 echo"DISPLAY=$DISPLAYxmessagecooker"|at "NOW+30minutes" printf"%'d\n"1234 BLOCK_SIZE=\'1lsl echo"Yovivoen`localeterritory`" LANG=en_IE.utf8localeint_prefix locale|cutd=f1|xargslocalekc|less hdparmi/dev/hda hdparmtT/dev/hda badblockss/dev/hda mount|columnt cat/proc/partitions grepMemTotal/proc/meminfo grep"modelname"/proc/cpuinfo lspcitv lsusbtv Mostrarcalendario Mostrarcalendarioparamesyaodeterminado Quedacaeesteviernes.Vertambinday EnquedacaelaNavidad,esteao? Convertirtotaldesegundosdesdelapocaaunafecha QuehoraesenlaCostaOestedeEEUU(usartzselect parahallarTZ) Recordatorioporemail Recordatorioemergente locales Imprimirnumeroagrupadopormilesdeacuerdoasu locale pedirquelsagrupepormilesdeacuerdoasulocale Extraerinformacindelabasededatosdellocale Buscarinformacindelocaleparadeterminadopas. Listarcamposenbasededatosdellocale informacindelsistema Verinformesobreparticinhda Hacerunapruebadevelocidaddelecturaenparticin hda Hallarbloquesilegiblesenparticinhda Verparticionesmontadasenelsistema(yalinearla salida) Vertodaslasparticionesregistradasenelsistema VereltotaldeRAMqueregistraelsistema VerinformedeCPU(s) VerinformedePCI VerinformedeUSB

37

CURSOAVANZADODELINUX

EstosapuntessonelresultadodelasclasesimpartidasenelaulaSUN,rogamosanuestros alumnosqueaportentodoelmaterialextraqueseaposibleconelfindemejorarlasy ampliarlas.

38