Está en la página 1de 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 Terminalymodogrfico............................................................................... 3
2 Gestordearranque........................................................................................ 7
3 Creacindeusuarios..................................................................................... 8
4 Configuracindelared................................................................................. 8
5 Editararchivosdetexto................................................................................. 11
5.1 EditorVim............................................................................. 11
6 Instalarprogramas......................................................................................... 13
6.1 Instalacindesderepositorios............................................... 14
6.2 Descargaycompilacin........................................................ 14
7 Permisosypropietarios................................................................................. 15
8 Comandosdelamquina.............................................................................. 17
9 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
16 Copiasdeseguridad...................................................................................... 31
16.1 Backupsdedirectoriosyficheros......................................... 31
16.2 Backupderecuperacin........................................................ 33
16.3 Recomendaciones.................................................................. 34
17 Anexo:Comandosdeinters.......................................................................... 34

2
CURSOAVANZADODELINUX

CURSOAVANZADOLINUX
AULASUNUCM
EstecursoestaorientadoapersonasqueyahayantenidoalgncontactoconLinux,peroque
deseenalcanzarunmayorconocimientosobresufuncionamiento.Setratadeuncursodeunnivel
bsico,peroenprofundidad,dondetrataremoslaadministracindeusuariosydearchivos,ascomo
algunoscomandosqueserndegraninters.
1 Terminalymodogrfico
Cuandoiniciamosunasesinenlasmquinas,lohacepordefectoenmodogrfico.Desde
aqu,yasehavistoenuncursointroductoriocomoabrirunaterminal,peroexisteotromodode
trabajarenterminalsinnecesidaddeaccederprimeroalentornogrfico.
Existen7terminales,acadaunadelascualesaccederemosconlacombinacindeteclasAlt
CtrlF1(F2,F3.....).SololaF7eslaterminalgrfica,elrestosernterminalesdetexto.
Sideseamossalirdeunasesinenterminaldetexto,solotendremosqueteclearelcomando
exit.
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.

3
CURSOAVANZADODELINUX

Hay muchas otras versiones de shell adems de estas. Pero el estilo


generaldetodosesmuysimilar.
TERMINAL 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.
w 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 Nosdirdondeestainstaladoprograma
dpkglfirefox Nosdicelaversindelprogramafirefoxquetenemosinstalada
dpkgsfirefox Nosmuestramuchosdetalles,comocuantoocupaelprogramaoque
librerasusa

6
CURSOAVANZADODELINUX

updatealternatives Permiteestablecerpordefectoqueversionesdeciertos
programasqueremosqueutilicenuestramquina.Slosepuedeutilizarcomorootocomousuario
sudable.

2 Gestordearranque:
CuandoinstalemosLinuxenunordenadorquetenayaotrosistemaoperativo,porejemplo
Windows,senosabrirungestordearranquequenospermitirelegirconcualdelosdossistems
queremosiniciarnuestrasesin.
LosdosgestoresdearranquemshabitualessonGrubyLillo
Laformadenuestrodiscoduropuedeserlasiguiente:

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

7
CURSOAVANZADODELINUX

3 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.

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

8
CURSOAVANZADODELINUX

Modotexto:
Accedamosaldirectoriocd/etc/networkymodifiquemoselarchivointerfaces,atravsdeuneditor
detextoqueveremosacontinuacin.

9
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.

5 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.
0 iniciodelnea.
b anteriorpalabra.
w prximapalabra.
l derecha.
h izquierda.
j abajo.
k arriba.
G findearchivo.
Alamayoradeestoscomandosselespuedeagregarunnumeroalprincipio.Elefectodeeste
nmerosereldemultiplicarelefectodelcomandoporelnmeroingresado.Porejemplo,10jse
mueve10lneashaciaabajo.
EnelcasodeG,elnmeroqueseleagregueantespuedeserelnmerodelneaalcualdeseamos
ir.Sideseamosiralaprimeralneadelarchivo,debemosescribir1G.

ManejodeTexto
Comoencualquiereditordetexto,podemoscortar,copiarypegar.
dd cortalalnea.
dw cortalaproximapalabra.

d$ cortahastaelfinaldelalnea.
p pegaloquesehayacortadoocopiado
u (undo)deshacelaultimaaccin.
yy copialalnea.
x cortaelcarcter.
Muchosdeestoscomandostambinaceptanunnmeroquelospreceda,detalmaneraquese
puedenseleccionarvarioscaracteres,palabrasolneasaunmismotiempo.

12
CURSOAVANZADODELINUX

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

6 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
Conelcomando aptcachesearchnombre encontramostodoslosprogramasque
tienenqueverconelnombreintroducido.
Actualizar: 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.

7 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 rxr:nosindicalospermisosdelgrupo
Ultimoconjuntodecaracteres rx:lospermisosdelosquenosonusuarioprincipalo
grupo(i.e.otros)
Ahoraveamosquesignificancadaunadelasletras:
r:lectura
w:escritura
x:ejecucin(salencomoazulados)
Sideseamoscambiarlospermisosdeunarchivoutilizaremoselcomandochmod,conlasiguiente
estructura:
chmodXYZnombrearchivo
dondeXserunnumeroqueespecifiquelospermisosqueledaremosalpropietario,Yespecificara
lospermisosqueledamosalgrupoyZespecificaralospermisosqueledamosalrestodeusuarios
sobreelarchivo.Esosnmerospuedenser:
0 noledoypermisos
1 permisosdeejecucin(x)
3 permisosdeejecucinyescritura(PERONOLEER!)(rx)
4 permisodelectura(r)
5 permisosdelecturayejecucin(rx)
6 permisodelecturayescritura(rw)
7 permisodelectura,ejecucinyescritura(rwx)
Losmscomunesson1,5,7.
Otraformademodificarlospermisossebasaenlasiguienteestructura:
chmodoxnombrearchivo
Elprimercarcter,enestecasounao,indicadequienqueremoscambiarlospermisos:
u usuario
g grupo
o 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

8 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.

9 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 permiteverlosescritoriostantodenuestroequipocomodelequipoalquenos
hemosconectado.
Existelaaplicacin xming queusasimultneamentelosprotocolos sshxyxdmcp,yque
permiteusarlosprogramasdeWindowsdesdeLinux
Ademstenemosanuestradisposicin:
cygwin paquetequefuncionaenWindowsysirveparacorreraplicacionesdeLinux
wine 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 men-
saje 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: ./nombredelscript
Sinoestuviramosenterminalbashteclearamosentonces: 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 (para iniciar el demonio)
/etc/init.d/<nombre_demonio>stop (paradetenerlo)
Serconvenienteconocerlosrunlevels:
/etc/inittab
0 halt etc/rc0
3 multisistema etc/rc3
5 entornogrfico etc/rc5
6 reboot etc/rc6

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 espa-
cio.
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 (copia una particin en otra)


dd if=/hdx of=/hdy (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 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 Procesarcadaelementoconmuchoscomandos(conun
$dir;echocmd2;done 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 Crearcompactadoencriptadodedir/enequiporemoto
of=dir.tar.gz.gpg'
finddir/name'*.txt'|tarcfilesfrom=|bzip2> Crearcompactadodesubconjuntodedir/y
dir_txt.tar.bz2 subdirectorios
finddir/name'*.txt'|xargscpatarget Copiarsubconjuntodedir/ysubdirectorios
directory=dir_txt/parents
(tarc/dire/de/copiame)|(cd/este/dir/&&tarx Copiar(conpermisos)directoriocopiame/adirectorio/
p) este/dir/
(cd/dire/de/copiame&&tarc.)|(cd/este/dir/&& Copiar(conpermisos)contenidodeldirectorio
tarxp) copiame/adirectorio/este/dir/
(tarc/dire/de/copiame)|sshCuser@remoto'cd Copiar(conpermisos)directoriocopiame/adirectorio
/este/dir/&&tarxp' remoto/este/dir/
ddbs=1Mif=/dev/hda|gzip|sshuser@remoto'dd Respaldodediscoduroenequiporemoto
of=hda.gz'
rsync(Usarlaopcindryrunparaprobarlo)
rsyncPrsync://rsync.servidor.com/ruta/a/archivo Obtenersolodiffs.Repetirmuchasvecesparadescargas
archivo conflictivas
rsyncbwlimit=1000desdearchivoalarchivo Copialocalcontazalmite.P
rsyncazesshdelete~/public_html/remoto.com:'~/ Espejodesedeweb(usandocompresinyencriptado)
public_html'
rsyncauzesshremote:/dir/.&&rsyncauzessh. Sincronizandodirectorioactualconunoremoto
remote:/dir/

35
CURSOAVANZADODELINUX

wget(herramientadedescargasmultiuso)
(cdcmdline&&wgetndpHEKk Guardarendirectorioactualunaversinnavegablede
http://www.pixelbeat.org/cmdline.html) 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| Procesandodirectamentelasalida
grep'ahref'|headP
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 Montarundirectoriocompartido
//windows_box/share/mnt/share

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< Recordatorioporemail
/dev/null"|at17:45
echo"DISPLAY=$DISPLAYxmessagecooker"|at Recordatorioemergente
"NOW+30minutes"
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

También podría gustarte