Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cursoava
Cursoava
CURSO AVANZADO
LINUX
26 Mayo 2008
Autores:
Sergio Velasco
Alicia Martn
Aula SUN UCM de Software Libre
CURSOAVANZADODELINUX
NDICE
1
Terminalymodogrfico...............................................................................
Gestordearranque........................................................................................
Creacindeusuarios.....................................................................................
Configuracindelared.................................................................................
Editararchivosdetexto.................................................................................
11
5.1
6
EditorVim.............................................................................
11
Instalarprogramas.........................................................................................
13
6.1
Instalacindesderepositorios...............................................
14
6.2
Descargaycompilacin........................................................
14
Permisosypropietarios.................................................................................
15
Comandosdelamquina..............................................................................
17
Copiararchivos.............................................................................................
18
10
Escritorioremoto.Vnc..................................................................................
19
11
ConectarseaunamquinadeLinuxdesdeWindows...................................
21
12
Servidordepaginasweb...............................................................................
21
13
Scripts...........................................................................................................
22
14
Demonios......................................................................................................
23
15
FirewalleIptables.........................................................................................
25
15.1 Firewallparanuestramquina...............................................
27
15.2 Firewallparaunaredlocalconsalidaainternet...................
28
15.3 OtroejemplodeFirewall.......................................................
30
15.4 Logueoenredsincontrasea................................................
30
Copiasdeseguridad......................................................................................
31
16.1 Backupsdedirectoriosyficheros.........................................
31
16.2 Backupderecuperacin........................................................
33
16.3 Recomendaciones..................................................................
34
Anexo:Comandosdeinters..........................................................................
34
16
17
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
PROMPT
bash
usuario@sunny01:~$
sh
tcsh
sunny01:~$
csh
Elpromptnosayudaasaberenquetipodeterminalestamos.
Terminalbash:
~
Indicaqueestamosenelhomedenuestrousuario
pwd
Podemosverenquedirectorionosencontramos
Estilrecordarcomandoscomo:
ls
listalosarchivosenundirectorio.
cd
paraentrarenunacarpeta.
cd..
parasalirdeundirectorio.
Tabulador
Noscompletauncomando.
clear
Limpialaterminal.
cp
Copiaarchivosaunnuevoemplazamiento.
Sirveparaverqueusuariosestanconectados.
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
dpkglfirefox
dpkgsfirefox
librerasusa
Nosdirdondeestainstaladoprograma
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
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
(nombredelamquina)
ping147.96.67.155
(IPdelamquina)
pingwww.assaf.org
(Conunadireccinweb)
10
CURSOAVANZADODELINUX
Comandohost:
EstecomandonospermiteconoceraquienperteneceunaIPobiensaberqueIPcorrespondeaun
nombreconocido.Porejemplo:
hostsunny01.fis.ucm.es
nosdevuelvelaIPdeesamquina.
host147.96.22.139
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
saledelprograma,solosiyasegrabaronloscambios.
:q!
saledelprogramasingrabarloscambios.
:w
grabaelarchivo.
:warchivo grabaelarchivoconesenombre(eq.GuardarComo)
:wq
grabaelarchivoyluegosaledelprograma.
TeclasdeMovimientos
$
findelnea.
iniciodelnea.
anteriorpalabra.
prximapalabra.
derecha.
izquierda.
abajo.
arriba.
findearchivo.
Alamayoradeestoscomandosselespuedeagregarunnumeroalprincipio.Elefectodeeste
nmerosereldemultiplicarelefectodelcomandoporelnmeroingresado.Porejemplo,10jse
mueve10lneashaciaabajo.
EnelcasodeG,elnmeroqueseleagregueantespuedeserelnmerodelneaalcualdeseamos
ir.Sideseamosiralaprimeralneadelarchivo,debemosescribir1G.
ManejodeTexto
Comoencualquiereditordetexto,podemoscortar,copiarypegar.
dd
cortalalnea.
dw
cortalaproximapalabra.
d$
cortahastaelfinaldelalnea.
pegaloquesehayacortadoocopiado
(undo)deshacelaultimaaccin.
yy
copialalnea.
cortaelcarcter.
Muchosdeestoscomandostambinaceptanunnmeroquelospreceda,detalmaneraquese
puedenseleccionarvarioscaracteres,palabrasolneasaunmismotiempo.
12
CURSOAVANZADODELINUX
Otros
CTRLg
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
realizaunainstalacinbsica
aptitude
realizaunaactualizacinmscompleta.
aptgetinstallprograma
Instalaprograma
aptgetremoveprograma
Desinstalaprograma
aptgetupdate
Buscaactualizacionesenlosrepositorios
aptgetupgrade
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
tieneencuentalascaractersticasdenuestramquina
make
compila(enocasionestambininstala)
makeinstall
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
Primerconjuntodetrescaracteres rwx:indicacualessonlospermisosdelpropietario
Segundoconjuntodecaracteres
Ultimoconjuntodecaracteres
grupo(i.e.otros)
rxr:nosindicalospermisosdelgrupo
rx:lospermisosdelosquenosonusuarioprincipalo
Ahoraveamosquesignificancadaunadelasletras:
r:lectura
w:escritura
x:ejecucin(salencomoazulados)
Sideseamoscambiarlospermisosdeunarchivoutilizaremoselcomandochmod,conlasiguiente
estructura:
chmodXYZnombrearchivo
dondeXserunnumeroqueespecifiquelospermisosqueledaremosalpropietario,Yespecificara
lospermisosqueledamosalgrupoyZespecificaralospermisosqueledamosalrestodeusuarios
sobreelarchivo.Esosnmerospuedenser:
0
noledoypermisos
permisosdeejecucin(x)
permisosdeejecucinyescritura(PERONOLEER!)(rx)
permisodelectura(r)
permisosdelecturayejecucin(rx)
permisodelecturayescritura(rw)
permisodelectura,ejecucinyescritura(rwx)
Losmscomunesson1,5,7.
Otraformademodificarlospermisossebasaenlasiguienteestructura:
chmodoxnombrearchivo
Elprimercarcter,enestecasounao,indicadequienqueremoscambiarlospermisos:
u
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
eselclientedeterminalserver
Laaplicacinx11vncsirveparaponerlamquinaenmodoservidor.
x11vncstorepasswd
Siqueremosponerunacontrasea
x11vncviewonly
Parapoderutilizarelratndesdefuera
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
funcionacomoelprotocolossh
winscp
hemosconectado.
permiteverlosescritoriostantodenuestroequipocomodelequipoalquenos
paquetequefuncionaenWindowsysirveparacorreraplicacionesdeLinux
wine
paqueteparaLinuxquepermitecorrerprogramasdeWindows.
12
ServidordepginasWeb
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
Lasintaxishabitualparainiciar/parardemonioses:
/etc/init.d/<nombre_demonio>start
/etc/init.d/<nombre_demonio>stop
(para
iniciar
(paradetenerlo)
Serconvenienteconocerlosrunlevels:
/etc/inittab
0
halt
etc/rc0
multisistema
etc/rc3
entornogrfico
etc/rc5
reboot
etc/rc6
23
el
demonio)
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
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
16
-l usuario
CopiasdeSeguridad
Esmuyimportanteguardarunacopiadenuestrosarchivosperidicamenteparaevitar
prdidasdeinformacin.
Vamosavervariasformasdehacerlo:porunaparteharemosbackupsdeficherosydirectorios,esto
nospermitirpoderrestaurararchivosodirectoriosdemaneraindividualyporotraharemosuna
copianospermitirrecuperarnuestrosistemaencasodeurgencia.
Enamboscasos,eldirectoriodedestinopuedeserlocaloremoto.
16.1
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
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-
A continuacin mostramos una tabla con los comandos mas utilizados en Linux,con una
breve descripcin de su uso:
COMANDO
DESCRIPCIN
apropospalabra
Vercomandosrelacionadosconpalabra
whichcomando
Verlarutacompletadecomando
timecomando
Medircuantotardacomando
timecat
Iniciarcronmetro.Ctrldparadetenerlo.
niceinfo
Lanzarcomandoinfoconprioridadbaja
renice19p$$
Darleprioridadbajaalshell(guin).Usarparatareas
nointeractivas
dirnavegacin
cd
Volveraldirectorioanterior
cd
Iraldirectoriopersonal(home)
(cddir&&comando)
Iradir,ejecutarcomandoyvolveraldirectorioinicial
pushd.
Guardareldirectorioactualenlapilaparaluego,poder
hacerpopdyvolveralmismo
bsquedasdearchivo
aliasl='lslcolor=auto'
Listadodedirectoriorpido
lslrt
Listararchivosporfecha.Vertambinnewest
ls/usr/bin|prT9W$COLUMNS
Imprimir9columnasenanchodelaterminal
findname'*.[ch]'|xargsgrepE'expre'
Buscar'expre'enestedirectorioysubdirectorios.
findtypefprint0|xargsr0grepF'ejemplo'
Buscar'ejemplo'entodoslosarchivosregulareseneste
directorioysubdirectorios
findmaxdepth1typef|xargsgrepF'ejemplo'
34
CURSOAVANZADODELINUX
Buscar'ejemplo'entodoslosarchivos
regularesdeestedirectorio
findmaxdepth1typed|whilereaddir;doecho
$dir;echocmd2;done
Procesarcadaelementoconmuchoscomandos(conun
buclewhile)
findtypef!perm444
Hallararchivossinpermisogeneraldelectura(utilpara
sedesweb)
findtyped!perm111
Hallardirectoriossinpermisogeneraldeacceso(util
parasedesweb)
locater'file[^/]*\.txt'
Buscarnombresenindiceencache.Estereesiguala
glob*file*.txt
lookreferencia
Bsquedarpida(ordenada)deprefijoendiccionario
grepcolorreferencia/usr/share/dict/palabras
Resaltarocurrenciasdeexpresinregularen
diccionario
archivos
gpgcfile
Encriptararchivo
gpgfile.gpg
Desencriptararchivo
tarcdir/|bzip2>dir.tar.bz2
Creararchivocompactodedir/
bzip2dcdir.tar.bz2|tarx
Extraerarchivocompacto(usargzipenvezdebzip2
paraarchivostar.gz)
tarcdir/|gzip|gpgc|sshuser@remoto'dd
of=dir.tar.gz.gpg'
Crearcompactadoencriptadodedir/enequiporemoto
finddir/name'*.txt'|tarcfilesfrom=|bzip2>
dir_txt.tar.bz2
Crearcompactadodesubconjuntodedir/y
subdirectorios
finddir/name'*.txt'|xargscpatarget
directory=dir_txt/parents
Copiarsubconjuntodedir/ysubdirectorios
(tarc/dire/de/copiame)|(cd/este/dir/&&tarx
p)
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'
Copiar(conpermisos)directoriocopiame/adirectorio
remoto/este/dir/
ddbs=1Mif=/dev/hda|gzip|sshuser@remoto'dd
of=hda.gz'
Respaldodediscoduroenequiporemoto
rsync(Usarlaopcindryrunparaprobarlo)
rsyncPrsync://rsync.servidor.com/ruta/a/archivo
archivo
Obtenersolodiffs.Repetirmuchasvecesparadescargas
conflictivas
rsyncbwlimit=1000desdearchivoalarchivo
Copialocalcontazalmite.P
rsyncazesshdelete~/public_html/remoto.com:'~/
public_html'
Espejodesedeweb(usandocompresinyencriptado)
rsyncauzesshremote:/dir/.&&rsyncauzessh.
remote:/dir/
Sincronizandodirectorioactualconunoremoto
35
CURSOAVANZADODELINUX
wget(herramientadedescargasmultiuso)
(cdcmdline&&wgetndpHEKk
http://www.pixelbeat.org/cmdline.html)
Guardarendirectorioactualunaversinnavegablede
unapginaweb
wgetchttp://www.ejemplo.com/largo.archivo
Retomardescargadeunarchivoparcialmente
descargado
wgetrndnpl1A'*.jpg'http://www.ejemplo.com/
Descargarunaseriedearchivoseneldirectorioactual
wgetftp://remoto/archivo[19].iso/
FTPpermiteglobalizacionesdirectas
wgetqOhttp://www.pixelbeat.org/timeline.html|
grep'ahref'|headP
Procesandodirectamentelasalida
echo'wgeturl'|at01:00
Descargarlaurla1AMaldirectorioenqueest
wgetlimitrate=20kurl
Hacerdescargasdebajaprioridad(enestecaso,no
excederlos20KB/s)
wgetnvspiderforcehtmlibookmarks.html
Revisandolosenlacesdeunapgina
wgetmirrorhttp://www.ejemplo.com/
Actualizareficientementeunacopialocaldeunapgina
web(tilsiusamoscron)
redes
ethtoolinterface
Listarestadodeinterfase
iplinkshow
Listarinterfases
iplinksetdeveth0namewan
Renombrareth0awan
ipaddradd1.2.3.4/24brd+deveth0
Agregaripymscara(255.255.255.0)
iplinksetdevinterfaceup
Subir(obajar)lainterfase
iprouteadddefaultvia1.2.3.254
Establecer1.2.3.254comovalorporomisinparala
puertadeenlace.
tcqdiscadddevloroothandle1:0netemdelay20msec Agregarle20msdeesperaaldispositivoderetorno
(parahacerpruebas)
tcqdiscdeldevloroot
Quitarlaesperaagregadaantes.
hostpixelbeat.org
Obtenerladireccinipparaeldominiooalrevs
hostnamei
Obtenerladirecciniplocal(equivalealanfitrin
`hostname`)
netstattupl
Listarlosserviciosdeinternetdeunsistema
netstattup
Listarlasconexionesactivasde/haciaunsistema
windows(notasambaeselpaquetequepermitetodosestoscomandosderedesdewindows)
smbtree
Hallarequiposwindows.Vertambinfindsmb
nmblookupA1.2.3.4
Hallarelnombre(netbios)dewindowsasociadoconla
direccinip
smbclientLwindows_box
Listararchivoscompartidosenequiposwindowso
servidorsamba
mounttsmbfsofmask=666,guest
//windows_box/share/mnt/share
Montarundirectoriocompartido
36
CURSOAVANZADODELINUX
calendario
cal3
Mostrarcalendario
cal91752
Mostrarcalendarioparamesyaodeterminado
datedfri
Quedacaeesteviernes.Vertambinday
datedate='25Dec'+%A
EnquedacaelaNavidad,esteao?
datedate'19700101UTC1234567890seconds'
Convertirtotaldesegundosdesdelapocaaunafecha
TZ=':America/Los_Angeles'date
QuehoraesenlaCostaOestedeEEUU(usartzselect
parahallarTZ)
echo"mails'tomareltren'P@draigBrady.com<
/dev/null"|at17:45
Recordatorioporemail
echo"DISPLAY=$DISPLAYxmessagecooker"|at
"NOW+30minutes"
Recordatorioemergente
locales
printf"%'d\n"1234
Imprimirnumeroagrupadopormilesdeacuerdoasu
locale
BLOCK_SIZE=\'1lsl
pedirquelsagrupepormilesdeacuerdoasulocale
echo"Yovivoen`localeterritory`"
Extraerinformacindelabasededatosdellocale
LANG=en_IE.utf8localeint_prefix
Buscarinformacindelocaleparadeterminadopas.
locale|cutd=f1|xargslocalekc|less
Listarcamposenbasededatosdellocale
informacindelsistema
hdparmi/dev/hda
Verinformesobreparticinhda
hdparmtT/dev/hda
Hacerunapruebadevelocidaddelecturaenparticin
hda
badblockss/dev/hda
Hallarbloquesilegiblesenparticinhda
mount|columnt
Verparticionesmontadasenelsistema(yalinearla
salida)
cat/proc/partitions
Vertodaslasparticionesregistradasenelsistema
grepMemTotal/proc/meminfo
VereltotaldeRAMqueregistraelsistema
grep"modelname"/proc/cpuinfo
VerinformedeCPU(s)
lspcitv
VerinformedePCI
lsusbtv
VerinformedeUSB
37
CURSOAVANZADODELINUX
EstosapuntessonelresultadodelasclasesimpartidasenelaulaSUN,rogamosanuestros
alumnosqueaportentodoelmaterialextraqueseaposibleconelfindemejorarlasy
ampliarlas.
38