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

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

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.

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

Para establecer la configuracin de nuestra redpodemos hacerlotanto en modo grfico


comodesdenuestraterminal.
Modogrfico:
EnelmenSistemaelegirAdministracinydentrodeeste,Herramientasdered.

CURSOAVANZADODELINUX

Modotexto:
Accedamosaldirectoriocd/etc/networkymodifiquemoselarchivointerfaces,atravsdeuneditor
detextoqueveremosacontinuacin.

CURSOAVANZADODELINUX
Siqueremossabercualessonlasdnspodemosverloenelarchivocd/etc/resolv.conf

Podemos ver tambin las tarjetas de red con las que contamos, a travs del comando
ipconfig.Aparecereth0eth1...tantascomotarjetastengamos,includaslasinalmbricas.Conlos
comandosifconfigeth0down/uppodremosdesactivaryactivarlatarjetaquedeseemos.
Comandoping:
Estecomandoenvapaquetesaotramquinayesperaaqueselosdevuelva.Podemosverassihay
algnfalloenlareddeunamquina.Parautilizarlopodemosutilizardiferentessintaxis:
pingsunny01.fis.ucm.es

(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

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.

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

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 mensaje correspondiente si se detect algn error.

21

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

13

Scripts

LosScriptssonarchivosconextensin.shqueseejecutanenterminal(bashosh)
Paraejecutarunscriptnohaymsqueteclearenlaterminal:
Sinoestuviramosenterminalbashteclearamosentonces:

./nombredelscript
sh./nombredelscript

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

22

CURSOAVANZADODELINUX

14

Demonios

Los daemons (odemonios)nosonmsqueunprocesoqueseejecutaensegundoplano.


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

Lasintaxishabitualparainiciar/parardemonioses:
/etc/init.d/<nombre_demonio>start
/etc/init.d/<nombre_demonio>stop

(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

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

16

-l usuario

CopiasdeSeguridad

Esmuyimportanteguardarunacopiadenuestrosarchivosperidicamenteparaevitar
prdidasdeinformacin.
Vamosavervariasformasdehacerlo:porunaparteharemosbackupsdeficherosydirectorios,esto
nospermitirpoderrestaurararchivosodirectoriosdemaneraindividualyporotraharemosuna
copianospermitirrecuperarnuestrosistemaencasodeurgencia.
Enamboscasos,eldirectoriodedestinopuedeserlocaloremoto.
16.1

Backups de direcorios y ficheros

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

31

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

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

32

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

(copia una particin en otra)


(copia de un disco duro en otro)

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

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

17-

Anexo: Comandos de interes

A continuacin mostramos una tabla con los comandos mas utilizados en Linux,con una
breve descripcin de su uso:
COMANDO

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

También podría gustarte