Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Linux Avanzado PDF
Linux Avanzado PDF
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
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
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
16
CURSOAVANZADODELINUX
8 Comandosdelamquina
LoscomandosqueseejecutanenlamquinasedenominanBinariosyselocalizanenlos
siguientesdirectorios:
cd/opt/sge/bin
usr/local/bin
17
CURSOAVANZADODELINUX
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
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.
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.
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
dd if=origen of=destino
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: la opcin noerror hace que se contine con la copia aunque se produzcan errores de lectura
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:
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.
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