Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

G Gnulinux

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 29

GNU/Linux

ltima modificacin 2009/02a


2008-2009 Gimi (http://guimi.net)
Esta obra est bajo una licencia "Reconocimiento-Compartir bajo la misma licencia 3.0 Espaa" de Creative Commons.
Para ver una copia de esta licencia, visite http://guimi.net/index.php?pag_id=licencia/cc-by-sa-30-es_human.html.
Reconocimiento tautolgico: Todas las marcas pertenecen a sus respectivos propietarios.
Fuentes principales: "Unix Toolbox" de Colin Barschel (http://cb.vu/unixtoolbox.xhtml), Wikipedia
(http://www.wikipedia.org) y Debian (http://www.debian.org).
Algunas partes son directamente copia o traduccin de las fuentes.
GNU/Linux
Contenido
INTRPRETES DE COMANDOS......................................................................................................................................3
INTRODUCCIN..........................................................................................................................................................3
USO BSICO DEL INTRPRETE...............................................................................................................................4
COMANDOS BSICOS................................................................................................................................................6
COMANDOS AVANZADOS........................................................................................................................................8
NIVELES DE EJECUCIN (RUNLEVELS)...................................................................................................................13
SISTEMA DE FICHEROS................................................................................................................................................14
JERARQUA DE DIRECTORIOS (EXTRACTO DE MAN HIER)...........................................................................14
MONTAJE DE SISTEMAS DE FICHEROS...............................................................................................................14
RED....................................................................................................................................................................................16
GESTIN.....................................................................................................................................................................16
RESOLUCIN DE NOMBRES...................................................................................................................................17
SSH.....................................................................................................................................................................................18
CONFIGURACIN.....................................................................................................................................................18
CONFIGURACIN DE PuTTY..................................................................................................................................18
USO...............................................................................................................................................................................18
GESTIN DE TNELES............................................................................................................................................19
VPN SOBRE SSH........................................................................................................................................................19
DISK QUOTA....................................................................................................................................................................21
RAID 1...............................................................................................................................................................................22
FICHEROS DE CONFIGURACIN................................................................................................................................24
ENTORNOS GRFICOS..................................................................................................................................................28
GNU/Linux http://guimi.net 2 / 29
INTRPRETES DE COMANDOS
INTRODUCCIN
El primer intrprete de comandos de UNIX fue sh (shell) o "Thompson Shell", ms tarde sustituido por una versin de
Bourne del mismo nombre y conocida como "Bourne Shell". Aunque pretenda ser un intrprete de comandos
interactivo, gan popularidad como un lenguaje de scripting.
En los 70s Bill Joy trabajaba para la versin de UNIX de Berkeley y desarroll csh
1
, la primera alternativa al Bourne
Shell, pero con la sintaxis del lenguaje C -y por tanto incompatible con sh- y mucho ms avanzado. Incorporaba
historia de comandos, gestin de trabajos, autocompletado de nombres...
Su potencia fue una de las claves para la amplia aceptacin de los UNIX BSD.
Una versin ms moderna de csh, llamada tcsh (Tenex csh), es el intrprete por omisin de los UNIX derivados de
BSD, incluido Mac OS X (hasta la versin 10.4 en que se usa bash).
Como respuesta a csh David Korn desarroll a principio de los 80 para AT&T el Korn Shell, llamado ksh, como un
intrprete compatible con sh pero incluyendo muchos elementos de csh, como un historial de rdenes editables de
forma compatible con vi o con emacs. Una de las bazas que jug en contra de su aceptacin fue el echo de que se
distribuyese de manera comercial como software cerrado, haciendo que los scripts en ksh no tuvieran garantizada su
portabilidad. ste es el intrprete por omisin de los UNIX comerciales evolucionados desde el de AT&T y el estndar
POSIX.
En 1987 Brian Fox cre el "Bourne-again shell
2
" o bash, como software libre compatible con sh, aadiendo las
mejores caractersticas de ksh y csh. De hecho cuando se invoca a sh en un sistema GNU/Linux, en realidad se est
ejecutando bash en modo de compatibilidad total. Al ser libre adems de ser el intrprete predefinido de GNU/Linux y
estar disponible para otros sistemas ha evolucionado a gran velocidad hasta convertirse en el intrprete ms popular.
En todo caso cuando se quiere garantizar la portabilidad total de un script se sigue utilizando sh.
Para que un script utilice un intrprete u otro, se indica en la primera lnea del mismo. Ejemplos:
#!/bin/bash
#!/bin/csh -f
#!/bin/per1
Se puede utilizar el intrprete deseado como cualquier otro comando, por ejemplo:
'sh
bash scrip
. scrip
El indicador (prompt) de los intrpretes de comandos se cierra habitualmente con '#' para root y para los usuarios se usa
principalmente '$' (bash, ash, sh) y '%' (csh, tcsh, zsh).
Se puede invocar un "subshell" dentro de un comando usando comando o $(comando) . La segunda opcin es
preferible pero solo est disponible en los bash modernos. Por ejemplo:
sudo apiude insa11 1inux-headers-$(uname -r)
1 Adems de dirigir Unix BSD, desarroll vi y NFS. Tambin es co-fundador de Sun Microsystems.
2 Juego de palabras entre "Otra vez bourne shell" y "Shell renacido (born-again)".
GNU/Linux http://guimi.net 3 / 29
USO BSICO DEL INTRPRETE
Algunas combinaciones de teclas de uso comn en los intrpretes (parte pueden modificarse con stty):
Ctrl-C: Enva la seal de interrupcin al proceso en ejecucin.
Ctrl-D: Indica el final de un flujo de datos.
Ctrl-Z: Pasa el proceso activo a "background".
Alt+F1...F12: Cambio de consola a tty1...tty12
Algunas combinaciones de teclas interesantes en bash.
Ctrl-r Bsqueda de comandos en el histrico
Ctrl-l Limpia la terminal (equivalente a clear)
Ctrl-k Corta caracteres desde el cursor hasta el final
Ctrl-u Corta caracteres desde el cursor hasta el inicio
Ctrl-w Borra la palabra que est antes del cursor
Ctrl-y Pega el texto que fue cortado, a partir de la posicin del cursor
Tab Completa comandos o rutas, segn existan
Tab-Tab Muestra opciones que cumplen con el inicio de un patrn
Completando comandos:
$ 1s /bin/m[ab|[ab|
m'dir m'fifo m'nod more moun mv
$ 1s /bin/mor[ab|
$ 1s /bin/more
Hist!i"o de "o#$ndos
Las flechas de cursor sirven para moverse por el histrico de comandos.
El comando history muestra un historial enumerado de los ltimos comandos.
$ hisory
1 cd /home/
2 cd /mn/cdrom/
3 1s
4 hisory
Para hacer uso de alguno de los comandos se utiliza el signo de admiracin (!) seguido del nmero del comando.
$ !3
E%e"u"in de &$!ios "o#$ndos
Para ejecutar ms de un comando en la lnea de entrada, basta con separar las rdenes con punto y coma (;). Tambin se
puede hacer condicionalmente con "&&", lo que har que solo se ejecute el siguiente comando si el anterior ha
terminado correctamente. Ejemplos:
$ c1ear, 1ogou
$ sudo apiude updae && sudo apiude upgrade
Redi!e""in de s$'id$s ( ent!$d$s) Tu*e!+$s
Se puede utilice el operador '>' para redireccionar la salida estndar de un comando a un archivo sobreescribiendo su
contenido, o '>>' para que lo aada al final del mismo. Si se indica '2>' o '2>>' redirigimos la salida de errores. Tambin
podemos redirigir la salida de errores a la salida estndar (2>&1) y viceversa (>&2).
Tambin puede redirigirse la entrada con '<'.
Por ltimo pueden generarse tuberas con '|'. Esto redirige la salida de un proceso a la entrada del siguiente.
moun | cu -d ' ' -f1,3,5-6 | co1umn - # Muesra ES monados | se 'embe11ece' 1a sa1ida
GNU/Linux http://guimi.net 4 / 29
B$",-!ound/.o!e-!ound
Un proceso puede pasarse al fondo (background) o traer a primer plano (foreground) con Ctrl-Z, bg y fg.
# _obs -1 # Lis processes in bac'ground
[1| - 36232 Running ping cb.vu > ping.1og
[2| + 36233 Suspended (y oupu) op
# fg %2 # Bring process 2 bac' in foreground
Se puede utilizar nohup para mantener un proceso en ejecucin aunque se cierre el shell.
# nohup ping -i 60 > ping.1og &
P!io!id$d de 'os /!o"esos
Los comandos nice / renice indican lo amable que es un proceso. Cuanto ms amable es, menos prioridad tiene [-20
- 20]. Solo root puede adjudicar valores de nice negativos (muy prioritarios).
# nice -n 5 op # Wea'er prioriy (/usr/bin/nice)
# renice -5 586 # Sronger prioriy for running process 586
Ent!e"o#i''$do
Cuando se usan comillas dobles el intrprete sustituye las variables por su contenido, con comillas simples no. Adems
unas comillas permiten el uso de las otras como caracteres normales.
$ echo "La variab1e pah es $RATH"
La variab1e pah es /usr/1oca1/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/home/guimi/bin
$ echo 'La variab1e pah es $RATH'
La variab1e pah es $RATH
$ echo 'La variab1e pah es "$RATH"'
La variab1e pah es "$RATH"
$ echo "La variab1e pah es '$RATH'"
La variab1e pah es '/usr/1oca1/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/home/guimi/bin'
S+#*o'os de' indi"$do! 0prompt1
$ echo "'$RS1' -- '$RS2'"
'@\[\|\h\[\|:${newRW}\$ ' -- '> '
Inte!$""in "on '$ te!#in$' / P$!2#et!os de '$ te!#in$' 0e"3o4 !e$d4 "'e$!4 !eset4 stt(4 !e$d1
c1ear # Limpia 1a ermina1
rese # Reesab1ece 1os parameros basicos de 1a ermina1
sy -a # Consu1a odos 1os parameros de 1a ermina1 en modo 1egib1e por humanos
se | grep $USER # 1isa 1as variab1es de enorno
seenv varname va1ue # Se env. variab1e varname o va1ue (csh/csh)
expor varname="va1ue" # se env. variab1e varname o va1ue (sh/'sh/bash)
echo -n "C1ave:" # Mosramos e1 mensa_e "C1ave:" sin rea1izar un sa1o de 1inea
o1dmodes=sy -g # Tomamos noa de1 esado de sy
sy -echo # E1iminamos e1 echo 1oca1 (por e_emp1o para pedir una c1ave)
read c1ave # Leemos c1ave de 1a enrada esandar
sy $o1dmodes # Vo1vemos a siuar sy como esaba
exi # Cierra 1a sesion (igua1 que Cr1+d)
GNU/Linux http://guimi.net 5 / 29
COMANDOS BSICOS
M$nu$' 0#$n4 53$tis4 $/!o/os4 in6o1
man man # Muesra e1 manua1 de1 comando man
whais whais # Muesra 1a descripcion de1 comando en e1 manua1
apropos pdf # Muesra 1os comandos que en su descripcion en e1 manua1 aparece "pdf"
info info # Sisema de informacion de GNU
List$dos 0's1
1s -a1Eq # Opciones: odos, 1isa 1arga, con indicacion de ipo, indicando carac. no graficos
1s -Rsh # Opciones: recursivamene, ordenados por amao, am. 1egib1e por humanos
1s -1id direcorio # Opciones: muesra inodos, 1isa direcorios no sus conenidos
1s -r # Opciones: ordena por marca de iempo, inviere e1 orden (mas reciene a1 fina1)
Di!e"to!ios 0"d4 #,di!4 !#di!1
cd direcorio # Cambia a1 direcorio indicado (si no se indica cambia a1 direcorio $HOME)
m'dir -p direcorio/subdirecorio # Crea e1 direcorio indicado y sus anecesores
rmdir -p direcorio/subdirecorio # Borra e1 direcorio indicado y sus anecesores
.i"3e!os 0tou"34 !#4 #&4 "/4 6i'e4 'n1
ouch fich1 # Modifica 1a fecha de acceso a1 fichero y 1o crea si no exise
mv [-i|-f| dir1 dir2 # Mueve de forma ineraciva o forzosa
cp -Rp [-i|-f| d1 d2 # Copia recursiv. y maneniendo permisos de forma inerac. o forzosa
rm -rf direcorio # Borrar recursivamene y sin pedir confirmacion
fi1e fich1 # Indica e1 ipo de fichero de fich1
1n [-s| fich1 fich2 # Crea un en1ace [simbo1ico| de fich1 11amado fich2
(no se permien en1aces duros de direcorios)
Contenido de 6i"3e!os 0"$t4 3e$d4 t$i'4 #o!e4 'ess1
ca [-n| fich* # Vue1ca e1 conenido de fich* [indicando e1 nmero de 1inea|
head [-n 25| fich1 # Vue1ca 1as primeras 10 [25| 1ineas de fich1
ai1 [-n 25| [-f| 1og # Vue1ca 1as u1imas 10 [25| 1ineas de 1og [y aade segn se crean|
.i't!os 0so!t4 uni74 "ut4 t!4 5"4 "o'u#n1
sor [-f| [-r| fich1 # Ordena [ignorando may/min| [inverido| fich1
uniq [-c| [-d| fich1 # E1imina 1as 1ineas repeidas consecuivas de fich1
[inc1uyendo 1a cuena| [muesra so1o 1ineas con a1guna repeicion|
uniq [-u| [-i| fich1 # [muesra so1o 1as 1ineas sin repeiciones| [ignora may/min|
cu -c1-2 fich1 # Muesra 1os dos primeros caraceres de cada 1inea de fich1
r [-d 'x'| [-s ' '| '|' ',' # raduce de 1a enrada esandar '|' por ','
[e1imina 'x'| [e1imina repeiciones de ' '|
wc [-1|-w|-c| fich1 # Cuena [so1o 1ineas|pa1abras|caraceres|
co1umn - # Muesra 1a enrada de forma abu1ada
ca fich* | sor | uniq | wc -1 # Vue1ca fich*, ordena e1 vo1cado, e1imina 1as 1ineas repeidas
y 1o muesra paginado
wc -1 fich1 | cu -d ' ' -f1 # Cuena 1ineas fich1 | Muesra campo 1 (usa ' ' como separador)
.e"3$s ( tie#/os 0d$te4 "$'4 ti#e1
ca1 9 1752 # Muesra e1 ca1endario de sepiembre de 1752
dae +%C%y/%m/%d-%X # Muesra 1a fecha en formao Ccyy/mm/dd/-HH:MM
dae 123123592008 # Esab1ece 1a fecha y hora 2008/12/31 23:59
ime programa # Muesra e1 consumo de iempo de 1a e_ecucion de programa
npdae -u hora.uv.es # Esab1ece 1a hora de1 sisema
Pe!#isos ( /!o/ied$d 0"3#od4 "3o5n4 "3-!/4 u#$s,4 's$tt!4 "3$tt!1
La mscara reside en /etc/profile, modificable con umask. Usualmente es 022, por lo que otorga permisos de 755.
chmod 640 fich1 # Resringe fich1 a -rw-r-----
chmod u=rw,g=r,o= fich1 # Igua1 que 1o anerior
chmod -R a-x /home/* # Recursivamene quia x en 1as res ernas
chmod u+s fich1 # Esab1ece e1 SeUI para e1 usuario
chown usuario fich1 # Modifica e1 usuario propieario de fich1
chgrp grupo fich1 # Modifica e1 grupo propieario de fich1
chown usuario:grupo fich1 # Modifica e1 usuario y grupo propiearios de fich1
chmod 751 $(find ./ -ype d -prin) # Esab1ece 1os permisos 751 para 1os subdirecorios
umas' 022 # Esab1ece 1a mascara de creacion a 022
GNU/Linux http://guimi.net 6 / 29
Gestin de usu$!ios 0-!ou//use! $dd/de'4 /$ss5d4 "3$-e1
# groupadd admin # Crea e1 grupo "admin"
# useradd / adduser -c "Guimi" -g admin -m guimi # Crea e1 usuario "guimi"
# userde1 / de1user guimi # Borra e1 usuario "guimi"
# passwd [usuario| # Cambia 1a c1ave [de "usuario" -so1o roo-|
# chage -I # Cambia -ineracivamene- daos de expiracion de c1ave
Los datos de usuario se encuentran en /etc/passwd, las claves cifradas se encuentran en /etc/shadown y los datos de
grupos en /etc/group.
Para evitar temporalmente el acceso de usuarios basta crear el archivo /etc/nologin, cuyo contenido se mostrar a
quin intente acceder.
B8s7ued$ de 6i"3e!os 06ind4 'o"$te4 u/d$ted*1
find / -perm -u+s -prin # Busca odos 1os programas con e1 bi SUI
find . -ype d -exec chmod a+x \{\} \, # Esab1ece permisos a+x para odos 1os subdirecorios
find . -iname guimi -xdev # Lisa ficheros "*guimi*" [ignorando may/min| sin cambiar de fs
find /home/user/ -cmin 10 -prin # Eicheros creados hace menos de 10 minuos
find . -size +10M -size -50M -prin # Eicheros con amao enre 10 MB y 50 MB
1ocae guimi # Lisa ficheros con "guimi" en e1 nombre de su base de daos
updaedb # genera 1a base de daos de 1ocae
In6o!#$"in 0un$#e4 53i"34 /5d4 id4 53o4 '$st4 u/ti#e4 3ostn$#e4 d#es-1
uname -a # Muesra informacion sobre e1 'erne1
uname -r # Muesra 1a version de1 'erne1
which comando # Indica 1a rua de1 primer e_ecuab1e "comando" en 1a rua $RATH
pwd # Indica 1a rua de1 direcorio en que nos enconramos
id [usuario| # Muesra informacion de UI y GIs de "usuario" o de quien e_ecua e1 comando
who [usuario| # Muesra informacion sobre 1as conexiones de usuarios (o so1o de "usuario")
1as [usuario| # Muesra informacion sobre 1as 1imas conexiones de usuarios
1as reboo # Muesra informacion sobre 1os 1imos reboo
upime # Muesra e1 iempo que 11eva encendido e1 equipo y su carga
hosname # Muesra e1 nombre de1 equipo
hosname -i # Muesra 1a direccion IR de1 equipo
dmesg # Muesra y conro1a e1 buffer de1 'erne1
1sb_re1ease -a # Muesra oda 1a informacion LSB de 1a pub1icacion de 1a disro
ca /ec/debian_version # Muesra 1a version de ebian
ca /ec/XXXX-re1ease # Version de SuSE, 1sb (Ubunu), redha, genoo, mandra'e, sun...
Di6e!en"i$ de 6i"3e!os / P$!"3es 0di664 /$t"31
diff {-u|-c} fich1 fich1.mod > fich1.pach # Creas un parche de1 ipo usua1 o mas esandar
pach -b fich1 < fich1.pach # Ap1ica un parche guardando copia de fich1
.i't!os $&$n9$dos 0-!e/4 e-!e/4 6-!e/4 x$!-s4 -$5,4 sed1
grep [-A 2| [-B 3| guimi fich1 # Muesra 1ineas con "guimi" en fich1 [+2 1in. desp.| [+3 1in. anes|
[-i| [-R| [-v| # [ignorando may/min| [recursivamene| [1in. SIN "guimi"|
[-e "regexp"| [-E "exended-regexp"|
egrep equivale a grep -E, fgrep equivale a grep -F y rgrep equivale a grep -R.
pgrep equivale a mostrar los pid resultantes de "ps aux | grep".
GNU/Linux http://guimi.net 7 / 29
COMANDOS A:AN;ADOS
In6o!#$"in so*!e Hardware
# dmesg # eeced hardware and boo messages
# 1sdev # informaion abou insa11ed hardware
# dd if=/dev/mem bs=1' s'ip=768 coun=256 2>/dev/nu11 | srings -n 8 # Read BIOS
# ca /proc/cpuinfo # CRU mode1
# ca /proc/meminfo # Hardware memory
# grep MemToa1 /proc/meminfo # isp1ay he physica1 memory
# wach -n1 'ca /proc/inerrups' # Wach changeab1e inerrups coninuous1y
# free -m # Used and free memory (-m for MB)
# ca /proc/devices # Configured devices
# 1spci -v # Show RCI devices
# 1susb -v # Show USB devices
# 1sha1 # Show a 1is of a11 devices wih heir properies
# dmidecode # Show MI/SMBIOS: hw info from he BIOS
In6o!#$"in so*!e dis/ositi&os de $'#$"en$#iento
# hdparm -I /dev/sda # informaion abou he IE/ATA dis' (Linux)
# fdis' /dev/ad2 # isp1ay and manipu1ae he pariion ab1e
# smarc1 -a /dev/ad2 # isp1ay he dis' SMART info
# df # disp1ay free dis' space and mouned devices
# ca /proc/pariions # Show a11 regisered pariions (Linux)
# du -sh * # irecory sizes as 1ising
# du -csh # Toa1 direcory size of he curren direcory
# du -'s * | sor -n -r # Sor everyhing by size in 'i1obyes
# 1s -1Sr # Show fi1es, bigges 1as
Est$d+sti"$s4 #ens$%es ( "$!-$ de' siste#$
# op # disp1ay and updae he op cpu processes
# vmsa [2| # disp1ay virua1 memory saisics (2s inerva1s)
# ai1 -n 500 /var/1og/messages # Las 500 'erne1/sys1og messages
# ai1 /var/1og/warn # Sysem warnings messages see sys1og.conf
L+#ites
De un shell o script
# u1imi -a # Muesra 1os 1imies de1 usuario
# u1imi -n 1024 # Modifica e1 1imie de archivos abieros
De usuarios y procesos en /etc/security/limits.conf.
* hard nproc 1000
Del sistema en /etc/sysctl.conf y mediante sysctl.
# sysc1 -a # View a11 sysem 1imis
# sysc1 fs.fi1e-max # View max open fi1es 1imi
# sysc1 fs.fi1e-max=102400 # Change max open fi1es 1imi
Mdu'os de' n8"'eo
# 1smod # Lis a11 modu1es 1oaded in he 'erne1
# modprobe isdn # To 1oad a modu1e (here isdn)
Co#/i'$"in de' n8"'eo
# cd /usr/src/1inux
# ma'e mrproper # C1ean everyhing, inc1uding config fi1es
# ma'e o1dconfig # Reuse he o1d .config if exisen
# ma'e menuconfig # or xconfig (Q) or gconfig (GTK)
# ma'e # Creae a compressed 'erne1 image
# ma'e modu1es # Compi1e he modu1es
# ma'e modu1es_insa11 # Insa11 he modu1es
# ma'e insa11 # Insa11 he 'erne1
# reboo
GNU/Linux http://guimi.net 8 / 29
List$do de /!o"esos ( PIDs
Cada proceso tiene un identificador nico (PID). Se pueden listar con ps:
# ps aux # Exensive 1is of a11 running process
# ps aux | grep cron # However more ypica1 usage is wih a pipe
# pgrep -1 sshd # Eind he RIs of processes by (par of) name
# echo $$ # The RI of your she11
# fuser -va 22/cp # Lis processes using por 22 (Linux)
# fuser -va /home # Lis processes accessing he /home parion
# srace df # Trace sysem ca11s and signa1s
# hisory | ai1 -50 # isp1ay he 1as 50 used commands
to/
El comando top muestra informacin de los procesos en ejecucin y su consumo de recursos. Durante su ejecucin se
puede pulsar h para obtener ayuda o, entre otras opciones:
u [user name] To display only the processes belonging to the user. Use + or blank to see all users
k [pid] Kill the process with pid.
1 To display all processors statistics (Linux only)
R Toggle normal/reverse sort.
,i''
Permite enviar seales (no solo KILL) a un proceso.
# 'i11 -s TERM 4712 # same as 'i11 -15 4712
# 'i11a11 -1 hpd # Ki11 HUR processes by exac name
# p'i11 -9 hp # Ki11 TERM processes by (par of) name
# p'i11 -TERM -u www # Ki11 TERM processes owned by www
# fuser -' -TERM -m /home # Ki11 every process accessing /home (o umoun)
Las seales ms importantes son:
1 HUP (hang up)
2 INT (interrupt)
3 QUIT (quit)
9 KILL (non-catchable, non-ignorable kill)
15 TERM (software termination signal)
!s(n"
rsync puede casi reemplazar completamente a cp y scp. Adems permite recuperar eficientemente una transmisin
interrumpida. Tradicionalmente para funcionar en red utiliza un servidor de rsyn, pero hoy en da su uso principal es
sobre SSH -ms lento, pero ms seguro-. Algunos ejemplos:
Copiar los directorios y su contenido completo:
# rsync -a /home/co1in/ /bac'up/co1in/
# rsync -aR --de1ee-during /home/user/ /bac'up/ # Usa pahs re1aivos y borra durane no anes
Lo mismo pero en red y comprimiendo:
# rsync -axSRzv /home/user/ user@server:/bac'up/user/
Usando el puerto 20022 para la conexin SSH:
# rsync -az -e 'ssh -p 20022' /home/co1in/ user@server:/bac'up/co1in/
Ejemplos usando el demonio rsync ("::"). Copia y restauracin:
# rsync -axSRz /home/ ruser@hosname::rmodu1e/bac'up/
# rsync -axSRz ruser@hosname::rmodu1e/bac'up/ /home/ # To copy bac'
Algunas opciones interesantes:
-a, --archive archive mode; same as -rlptgoD (no -H)
-r, --recursive recurse into directories
-R, --relative use relative path names
-H, --hard-links preserve hard links
-S, --sparse handle sparse files efficiently
-x, --one-file-system don't cross file system boundaries
--exclude=PATTERN exclude files matching PATTERN
--delete-during receiver deletes during xfer, not before
--delete-after receiver deletes after transfer, not before
GNU/Linux http://guimi.net 9 / 29
sudo
Autorizamos algunos usuarios a realizar tareas administrativas
# vi /ec/sudoers
# EEAULTS
# env_rese : reseea 1as variab1es de enorno anes de e_ecuar
# insu1s : cuando e equivocas de conrasea
#+ e "insu1a" ironicamene
# imesamp_imeou=5 : una vez pones 1a conrasea correcamene,
#+ no e 1a vue1ve a pedir en 5 minuos (0 : pedir siempre)
# 1ecure=once : so1o e avisa sobre 1a responsabi1idad una vez por sesion
# passwd_ries=2 : permie 2 inenos para 1a conrasea
# roopw : pide 1a c1ave de roo en vez de 1a de1 usuario
efau1s env_rese, insu1s, imesamp_imeou=5, 1ecure=once, passwd_ries=2
# User a1ias specificaion
User_A1ias AMINS=guimi
# Cmnd a1ias specificaion
Cmnd_A1ias ART = /usr/bin/ap-ge, /usr/bin/dp'g, /usr/bin/apiude
Cmnd_A1ias ARAGAO = /sbin/shudown, /sbin/ha1, /sbin/reboo
Cmnd_A1ias RE = /usr/bin/'isme, /sbin/iw1is, /sbin/ifuop, /sbin/ifdown, /sbin/wpa_c1i
Cmnd_A1ias RRORIOS = /roo/bin/SCRIRT1
# User privi1ege specificaion
roo ALL=(ALL) ALL
# Si e1 usuario admin esa en e1 grupo 'sudo' no 1e pedira c1ave
admin ALL=(ALL) ALL
# Indicamos expresamene que no so1icie c1ave para esos comandos
AMINS ALL= NORASSW: ART
AMINS ALL= NORASSW: ARAGAO
AMINS ALL= NORASSW: RE
AMINS ALL= NORASSW: RRORIOS
# sudo /ec/ini.d/dhcpd resar # Run he rc scrip as roo
# sudo -u sysadmin whoami # Run cmd as an oher user
s"!een
Tiene dos funcionalidades principales:
Permitir mltiples sesiones de terminal en una sola terminal (o conexin).
Desacoplar los programas en ejecucin de la terminal real para que sigan en funcionamiento en background
aunque se cierre la terminal, que podr reconectarse ms tarde.
# screen
Dentro de la sesin ejecutamos un programa, por ejemplo top, y lo desacoplamos con Ctrl-a Ctrl-d.
Desde otra sesin de terminal (o la misma) reacoplamos el proceso con screen -r o screen -R -.
Comandos (dentro de screen). Todos empiezan por Ctrl-a:
Ctrl-a ? help and summary of functions
Ctrl-a c create an new window (terminal)
Ctrl-a Ctrl-n and Ctrl-a Ctrl-p to switch to the next or previous window
Ctrl-a Ctrl-N switch to windows N [0-9]
Ctrl-a " to get a navigable list of running windows
Ctrl-a a to clear a missed Ctrl-a
Ctrl-a Ctrl-d to disconnect and leave the session running in the background
Ctrl-a x lock the screen terminal with a password
GNU/Linux http://guimi.net 10 / 29
dd
El programa dd (disk dump) permite copiar particiones y discos y realizar pequeos trucos al respecto.
# dd if=<source> of=<arge> bs=<bye size> coun=x conv=<conversion>
El tamao de bloque (bs) predefinido es 512 (un bloque). Se puede usar tamaos mayores pero consume ms memoria.
# dd if=/dev/hda of=/dev/hdc bs=16065b # Copy dis' o dis' (same size)
# dd if=/dev/sda7 of=/home/roo.img bs=4096 conv=norunc,noerror # Bac'up /
# dd if=/home/roo.img of=/dev/sda7 bs=4096 conv=norunc,noerror # Resore /
# dd bs=1M if=/dev/sda | gzip -c > sda.gz # Zip he bac'up
# gunzip -dc sda.gz | dd of=/dev/sda bs=1M # Resore he zip
# dd bs=1M if=/dev/sda | gzip | ssh eedcoba@fry 'dd of=sda.gz' # a1so remoe
# dd if=/dev/sda1 of=/dev/sdb1 s'ip=1 see'=1 bs=4' conv=noerror # S'ip MBR
# This is necessary if he desinaion (sdb1) is sma11er.
# dd if=/dev/hda of=/dev/hda # Refresh he magneic sae
# The above is usefu1 o refresh a dis'. I is perfec1y safe, bu mus be unmouned.
Trucos
# dd if=/dev/zero of=/dev/hdc # e1ee fu11 dis'
# dd if=/dev/urandom of=/dev/hdc # e1ee fu11 dis' beer
ime dd if=/dev/hda1 of=/dev/nu11 bs=1024' coun=1000 # rendimieno de 1ecura
ime dd if=/dev/zero bs=1024' coun=1000 of=/home/1Gb.fi1e # rendimieno de escriura
# dd if=/dev/mem bs=1' s'ip=768 coun=256 2>/dev/nu11 | srings -n 8 # Read BIOS
El registro MBR est en el primer bloque (512 B), estando los primeros 63 libres. Los primeros 446 son el "boot loader"
o cargador de arranque y el resto son la tabla de particiones.
# dd if=/dev/sda of=sda.mbr.ba' bs=512 coun=1 # Bac'up he fu11 MBR
# dd if=/dev/zero of=/dev/sda bs=512 coun=1 # e1ee MBR and parion ab1e
# dd if= sda.mbr.ba' of=/dev/sda bs=512 coun=1 # Resore he fu11 MBR
# dd if= sda.mbr.ba' of=/dev/sda bs=446 coun=1 # Resore on1y he boo 1oader
# dd if=sda.mbr.ba' of=/dev/sda bs=1 coun=64 s'ip=446 see'=446 # Resore pariion ab1e
t$!
Los archivos creados con tar suelen llevar la extensin tar (no comprimido), tgz (comprimido con gzip) o tbz
(comprimido con bzip2). A la hora de crear el archivo NO hay que utilizar rutas absolutas, ya que la restauracin
sobreescribira en esas mismas rutas absolutas.
# ar -cf home.ar home/ # archive he who1e /home direcory (c for creae)
# ar -czf home.gz home/ # same wih zip compression
# ar -cv_f home.bz home/ # same wih bzip2 compression and verbosse1y
# ar -zf home.gz # 1oo' inside he archive wihou exracing (1is)
# ar -xf home.ar # exrac he archive here (x for exrac)
# ar -xvzf home.gz # same wih zip compression and verbosse1y
# ar -x_f home.gz # same wih bzip2 compression
# ar -x_f home.gz home/co1in/fi1e.x # Resore a sing1e fi1e
# ar c dir/ | gzip | ssh user@remoe 'dd of=dir.gz' # arch dir/ and sore remoe1y.
'/!
# 1pr unixoo1box.ps # Rrin on defau1 priner
# expor RRINTER=hp4600 # Change he defau1 priner
# 1pr -Rhp4500 #2 unixoo1box.ps # Use priner hp4500 and prin 2 copies
# 1pr -o up1ex=up1exNoTumb1e ... # Rrin dup1ex a1ong he 1ong side
# 1pr -o RageSize=A4,up1ex=up1exNoTumb1e ...
# 1pq # Chec' he queue on defau1 priner
# 1pq -1 -Rhp4500 # Queue on priner hp4500 wih verbose
# 1prm - # Remove a11 users _obs on defau1 priner
# 1prm -Rhp4500 3186 # Remove _ob 3186. Eind _ob nbr wih 1pq
# 1pc saus # Lis a11 avai1ab1e priners
# 1pc saus hp4500 # Chec' if priner is on1ine and queue 1engh
GNU/Linux http://guimi.net 11 / 29
List inst$''ed /$",$-es
# rpm -qa # Lis insa11ed pac'ages (RH, SuSE, RRM based)
# dp'g -1 # ebian, Ubunu
Add/!e#o&e so6t5$!e
Front ends: yast2/yast for SuSE, redhat-config-packages for Red Hat.
# rpm -i p'gname.rpm # insa11 he pac'age (RH, SuSE, RRM based)
# rpm -e p'gname # Remove pac'age
Debian
# ap-ge updae # Eirs updae he pac'age 1iss
# ap-ge insa11 emacs # Insa11 he pac'age emacs
# dp'g --remove emacs # Remove he pac'age emacs
# dp'g -S fi1e # find wha pac'age a fi1e be1ongs o
# apiude updae && apiude upgrade && apiude dis-upgrade
Gentoo uses emerge as the heart of its "Portage" package management system.
# emerge --sync # Eirs sync he 1oca1 porage ree
# emerge -u pac'agename # Insa11 or upgrade a pac'age
# emerge -C pac'agename # Remove he pac'age
# revdep-rebui1d # Repair dependencies
GNU/Linux http://guimi.net 12 / 29
NI:ELES DE E<ECUCIN 0RUNLEVELS1
Una vez arrancado el sistema, el ncleo inicia el proceso init (PID 0), que a su vez inicia rc, quien inicia los scripts
correspondientes al nivel de ejecucin (residentes en /etc/init.d y enlazados desde /etc/rcx.d).
El nivel de ejecucin por omisin se define en /etc/inittab. Se puede cambiar el nivel de ejecucin con init x.
A continuacin se muestran los diferentes niveles de ejecucin y su aplicacin en las principales distribuciones. La
opcin remarcada en negrilla indica el nivel de ejecucin por omisin.
Ni&e' Gen=!i"o RedH$t 0.edo!$)))1 S'$",5$!e De*i$n 0U*untu)))1
> Apagar equipo (Halt) Apagar equipo (Halt) Apagar equipo (Halt) Apagar equipo (Halt)
? 0S1 Modo de usuario nico
(Single-User Mode)
Modo de usuario nico
(Single-User Mode)
Modo de usuario nico
(Single-User Mode)
Modo de usuario nico
(Single-User Mode)
@ Modo multi-usuario sin
red
Personalizable (no se usa) Personalizable
(configurado como n. 3)
Modo #u'tiAusu$!io
"o#/'eto
B Modo multi-usuario con
red
Modo multi-usuario con
red
Modo #u'tiAusu$!io "on
!ed
Modo multi-usuario
completo
C Personalizable (no se usa) Personalizable (no se usa) Modo multi-usuario
completo
Personalizable (no se usa)
D Modo multi-usuario
completo (con red y
entorno grfico)
Modo #u'tiAusu$!io
"o#/'eto
Personalizable
(configurado como n. 3)
Modo multi-usuario
completo
E Reiniciar equipo (Reboot) Reiniciar equipo (Reboot) Reiniciar equipo (Reboot) Reiniciar equipo (Reboot)
Para configurar los scripts de inicio se puede usar chkconfig en sistemas basados en RedHat o update-rc.d en
sistemas basados en Debian.
# ch'config --1is # Lis a11 ini scrips
# ch'config --1is sshd # Repor he saus of sshd
# ch'config sshd --1eve1 35 on # Configure sshd for 1eve1s 3 and 5
# ch'config sshd off # isab1e sshd for a11 run1eve1s
# updae-rc.d sshd defau1s # Acivae sshd wih he defau1 run1eve1s
# updae-rc.d sshd sar 20 2 3 4 5 . sop 20 0 1 6 . # Wih exp1ici argumens
# updae-rc.d -f sshd remove # isab1e sshd for a11 run1eve1s
# shudown -h now (or # poweroff) # Shudown and ha1 he sysem
GNU/Linux http://guimi.net 13 / 29
SISTEMA DE .ICHEROS
<ERARFUGA DE DIRECTORIOS 0EHTRACTO DE MAN HIER1
/ Este es el directorio raz. Aqu comienza todo el rbol de directorios.
/bin Ejecutables que son necesarios en el modo monousuario y para el arranque o reparacin del sistema.
/boot Ficheros estticos para el cargador de arranque (boot loader).
/dev Ficheros especiales o de dispositivo, que se refieren a dispositivos fsicos. Ver mknod(1).
/dev/fd... Dispositivos FDD
/dev/hd... Dispositivos ATAPI
/dev/null Dispositivo de salida nulo
/dev/random Dispositivo de entrada que provee aleatoriedad, cuando es posible
/dev/sd... Dispositivos SCSI o emulados SCSI
/dev/tty... Dispositivos de consola
/dev/urandom Dispositivo de entrada que provee pseudo-aleatoriedad, continuamente
/dev/usb... Dispositivos USB
/dev/zero Dispositivo de entrada que provee ceros
/etc Ficheros de configuracin locales a la mquina, directamente o en subdirectorios especficos.
/etc/skel Estructura que se deben copiar al directorio de un nuevo usuario al crearlo.
/home Directorio donde reside la estructura de directorios "home" de los usuarios (no root).
/lib Bibliotecas compartidas necesarias para arrancar el sistema y ejecutar las rdenes del sistema.
/media Estructura de directorios para el montaje automtico de dispositivos.
/mnt Es un punto de montaje para los sistemas de ficheros montados temporalmente.
/proc Pseudosistema de ficheros con informacin sobre los procesos en ejecucin y el ncleo. Ver proc(5).
/sbin Como /bin, pero para comandos de uso exclusivo por el superusuario.
/tmp Contiene ficheros temporales de aplicacin que pueden ser borrados sin previo aviso.
/usr nicamente debe contener datos compartidos de slo lectura.
/usr/include Ficheros cabecera para el compilador C.
/usr/lib Bibliotecas objeto. Algunos programas pueden tener subdirectorios especficos.
/usr/local Contiene los programas que son locales a la instalacin.
/usr/local/bin Contiene los binarios de los programas locales de la instalacin.
/usr/man Contiene las pginas del manual, en sus subdirectorios.
/usr/sbin Contiene binarios de los programas de administracin que no son esenciales.
/usr/src Ficheros fuente para diferentes partes del sistema.
/usr/src/linux Contiene las fuentes del ncleo del sistema operativo propiamente dicho.
/var Contiene ficheros cambian de tamao habitualmente, como los ficheros de colas y de registro (log).
/var/lock Contiene los ficheros de bloqueo.
/var/log Contiene los ficheros de registro (logs).
/var/spool Colas de ficheros para diversos programas.
MONTA<E DE SISTEMAS DE .ICHEROS
Los puntos de montaje se definen en /etc/fstab:
/dev/cdrom /media/cdrom auo noauo,user,ro,procuid,nosuid,nodev,exec 0 0
moun | cu -d ' ' -f1,3,5-6 | co1umn - # Muesra ES monados | se 'embe11ece' 1a sa1ida
umoun /home/ # esmona /home
moun - auo /dev/cdrom /media/cdrom # Mona un cdrom
moun /dev/hdc - iso9660 -r /cdrom # Mona un cdrom ATARI
moun /dev/sdc - iso9660 -r /cdrom # Mona un cdrom SCSI
moun /dev/sda1 /media/windowsC -o uf8 # Mona una paricion Windows
moun -o remoun,ro / # Remona 1a raiz en modo so1o 1ecura
smbmoun //winserv/guimi moun/guimi -o username=guimi,wor'group=GUIMINET
moun - cifs //winserv/guimi moun/guimi -o username=guimi,wor'group=GUIMINET
moun - iso9660 -o 1oop fi1e.iso /mn # Mona una imagen de C
GNU/Linux http://guimi.net 14 / 29
En"ont!$! 6i"3e!os $*ie!tos
Por ejemplo para cerrar procesos y poder desmontar
fuser -m /media/USBrive # Lisa 1os procesos con ficheros abieros en /media/USBrive
1sof -p 3324 # Lisa ficheros abieros por e1 proceso 3324
1sof /media/USBrive # Lisa procesos con ficheros abieros en /home
1sof /var/1og/Xorg.0.1og # Lisa procesos con /var/1og/Xorg.0.1og abiero
Rendi#iento de dis"os
ime dd if=/dev/hda1 of=/dev/nu11 bs=1024' coun=1000
ime dd if=/dev/zero bs=1024' coun=1000 of=/home/1Gb.fi1e
hdparm -T /dev/hda
GNU/Linux http://guimi.net 15 / 29
RED
GESTIN
Inte!6$"es
# ip 1in' show # isp1ay a11 inerfaces on Linux (simi1ar o ifconfig)
# ip 1in' se eh0 up # Bring device up (or down). Same as "ifconfig eh0 up"
# ip addr show # isp1ay a11 IR addresses on Linux (simi1ar o ifconfig)
# ip neigh show # Simi1ar o arp -a
# ifconfig eh0
# arp -a # Chec' he rouer (or hos) ARR enry (a11 OS)
# ping guimi.ne
# raceroue guimi.ne
# nesa -s # Sysem-wide saisics for each newor' prooco1
# arping 192.168.16.254 # Ring on eherne 1ayer
# ifconfig eh0 192.168.50.254 nemas' 255.255.255.0 # Eirs IR
# ifconfig eh0:0 192.168.51.254 nemas' 255.255.255.0 # Second IR
# ip addr add 192.168.50.254/24 dev eh0 # Equiva1en ip commands
# ip addr add 192.168.51.254/24 dev eh0 1abe1 eh0:1
# ifconfig eh0 down
# ifconfig eh0 hw eher 00:01:02:03:04:05 # Linux
En"$#in$#iento
# roue -n # Linux or use "ip roue"
# nesa -rn # Linux, BS and UNIX
# roue add -ne 192.168.20.0 nemas' 255.255.255.0 gw 192.168.16.254
# ip roue add 192.168.20.0/24 via 192.168.16.254 # same as above wih ip roue
# roue add -ne 192.168.20.0 nemas' 255.255.255.0 dev eh0
# roue add defau1 gw 192.168.51.254
# ip roue add defau1 via 192.168.51.254 dev eh0 # same as above wih ip roue
# roue de1ee -ne 192.168.20.0 nemas' 255.255.255.0
Pue!tos en uso
# nesa -an | grep LISTEN
# 1sof -i # Linux 1is a11 Inerne connecions
# soc'1is # Linux disp1ay 1is of open soc'es
# nesa -anp --udp --cp | grep LISTEN # Linux
# nesa -up # Lis acive connecions o/from sysem (Linux)
# nesa -up1 # Lis 1isening pors from sysem (Linux)
Co!t$6ue-os ( P$s$!e'$s
# ipab1es -L -n -v # Eor saus
# echo 1 > /proc/sys/ne/ipv4/ip_forward # IR forward 0=off, 1=on
# echo 1 > /proc/sys/ne/ipv4/icmp_echo_ignore_broadcass
# ipab1es -L - na # Chec' NAT saus
DHCP
Como cliente de DHCP algunas distribuciones, como SuSE, utilizan dhcpcd:
# dhcpcd -n eh0 # Trigger a renew (does no a1ways wor')
# dhcpcd -' eh0 # re1ease and shudown
La informacin recibida se guarda en: /var/lib/dhcpcd/dhcpcd-eth!.info.
Otras distribuciones, como Debian, utilizan dhclient:
# dhc1ien eh0 # Use /ec/dhc1ien.conf
La informacin recibida se guarda en: /var/lib/dhcp"/dhclient.eth!.leases.
GNU/Linux http://guimi.net 16 / 29
RESOLUCIN DE NOMBRES
/et"/3osts
El fichero hosts permite resolver direcciones de forma local. Tiene preferencia sobre el servicio DNS, aunque es
configurable en /etc/nsswitch.conf y /etc/host.conf.
78.31.70.238 s1eepyow1.ne s1eepyow1
DNS
La configuracin DNS reside en /etc/resolv.conf y es vlida para todas las interfaces.
nameserver 78.31.70.238
search s1eepyow1.ne inern.1ab
domain s1eepyow1.ne
# hosname -d # Same as dnsdomainname
# hos - MX guimi.ne # Ge he mai1 MX enry
# hos - NS -T guimi.ne # Ge he NS record over a TCR connecion
# hos -a guimi.ne # Ge everyhing
# dig guimi.ne
# dig -x 78.31.70.238
# hos 78.31.70.238
# ns1oo'up 78.31.70.238
GNU/Linux http://guimi.net 17 / 29
SSH
CON.IGURACIN
ssh (y sus familiares scp, sftp) permiten realizar conexiones seguras entre equipos, autenticando las conexiones
mediante pares de usuario-contrasea, kerberos o pares de claves pblica-privada.
Para mayor seguridad cambiamos el puerto del servidor ssh, reducimos el tiempo de login y no permitimos conexiones
de root:
# vi /ec/ssh/sshd_config
Ror xxxx
LoginGraceTime 45
RermiRooLogin no
Solo permitimos acceder por ssh a los usuarios indicados en el fichero /etc/loginusers:
# vi /ec/pam.d/ssh
#auh required pam_env.so # [1|
auh required pam_1isfi1e.so sense=a11ow onerr=fai1 iem=user fi1e=/ec/1oginusers
Como usuario generamos las claves dsa y asignamos una passphrase
$ ssh-'eygen - dsa
Para cambiar (o des/asignar) una passphrase (se recomienda cambiarla regularmente):
$ ssh-'eygen -p -f .ssh/id_dsa
Autorizamos la clave publica:
$ ca .ssh/id_dsa.pub > .ssh/auhorized_'eys
La clave privada (id_dsa) se tiene que copiar en los clientes de ssh a travs de algn medio seguro.
A partir de este momento es posible conectar desde otra maquina utilizando login y contrasea como siempre:
$ ssh usuario@maquina -p xxxx
o usando el fichero de clave privada y conociendo la passphrase:
$ ssh usuario@maquina -p xxxx -i id_dsa_copiada

Para permitir solo el uso de certificados reconfiguramos sshd desautorizando las autenticaciones por contrasea:
# vi /ec/ssh/sshd_config
RasswordAuhenicaion no
Reiniciamos el servicio:
# /ec/ini.d/ssh resar
CON.IGURACIN DE PuTTI
Para usar la clave privada en PuTTY (Windows):
1. Copiamos la clave al equipo
2. Usamos PuTTYGen para importar la clave y guardarla como .ppk
Conversions->Import key
Introducir la passphrase
Pulsar "Save private key" y guardarla con extensin .ppk
3. Al hacer la conexin, en el men SSH->Auth seleccionamos nuestro fichero .ppk
4. Si al conectar muestra el error "Key is of wrong type (PuTTY SSH2 private key)", seleccionar en PuTTY
Connections->SSH el protocolo "2".
USO
La primera vez que se realiza una conexin a un servidor ssh, el cliente nos avisa de que no puede autenticar al servidor
y nos muestra la firma de su clave pblica ("fingerprint"). Una vez aceptada la conexin, si cambia la clave del
servidor, el cliente no nos dejar conectar (deberemos borrar manualmente la clave guardada).
Para evitar un ataque tipo "man-in-the-middle" el administrador del servidor puede obtener y enviar la firma de su
clave:
# ssh-'eygen -1 -f /ec/ssh/ssh_hos_dsa_'ey.pub # Eor SA 'ey (defau1)
GNU/Linux http://guimi.net 18 / 29
Tambin se puede usar de manera similar los comandos scp y sftp (interactivo).
scp fi1e.x hos-wo:/mp
scp _oe@hos-wo:/www/*.hm1 /www/mp
scp -r _oe@hos-wo:/www /www/mp
GESTIN DE TJNELES
La gestin de tneles de ssh permite redireccionar un puerto local o remoto sobre la conexin de tnel de SSH,
asegurando la comunicacin. Es posible redirigir ms de un puerto. De forma predefinida SSH redirige la comunicacin
con el servidor X.
ssh -X user@gae # To force X forwarding
Por ejemplo, supongamos que desde la mquina clie1 queremos utilizar un programa que accede a una BB.DD y que el
servidor serv1 sirve de forma insegura la BB.DD. en el puerto 3306 (MySQL) y dispone de un servidor SSH.
Desde el cliente clie1 redirigimos el puerto remoto 3306 al puerto local 13306. As en la mquina cliente configuramos
al programa para que conecte a la BB.DD. del puerto local 13306 (localhost:13306). De este forma, de manera
totalmente transparente para la aplicacin, todas las comunicaciones entre clie1 y serv1 quedarn protegidas por el tnel
SSH. La sintaxis es:
ssh -L 1oca1por:deshos_name:despor usuario@deshos
Hay que tener en cuenta que quien resuelve "desthost_name" es "desthost" por lo que son serviran:
c1ie1$ ssh -L 13306:serv1:3306 usuario@serv1
c1ie1$ ssh -L 13306:1oca1hos:3306 usuario@serv1 # Quien resue1ve "1oca1hos" es serv1
En este ejemplo tunelamos una conexin http (puerto 80) y CVS (puerto 2401):
ssh -L 2401:1oca1hos:2401 -L 8080:1oca1hos:80 user@gae
Tambien se puede hacer lo contrario "Reverse-Forwarding" para enviar un puerto local a una mquina remota:
ssh -R despor:deshos_name:1oca1por user@deshos
Que "desthost_name" lo calcule "desthost" nos permite redirigir puertos a otras mquinas, configurando una conexin
tipo VPN de acceso remoto, en la que el cliente conecta con la red tras la pasarela (servidor SSH):
Por ejemplo, se puede redirigir a una mquina "smbserver" destrs de una pasarela (gatea!) los puertos de remote
desktop (139) y de comparticin smb (3389):
ssh -L 139:smbserver:139 -L 3388:smbserver:3389 user@gae
Solo las comunicaciones entre el cliente y la pasarela irn por tunel SSH, no las conexiones entre la pasarela y
smbserver.
:PN SOBRE SSH
Desde la versin 4.3 OpenSSH permite utilizar la interfaz virtual de red tun/tap para cifrar un tnel, de manera similar a
como hacen otras soluciones VPN sobre TLS. TAP simula un dispositivo Ethernet y opera en el nivel 2, mientras que
TUN (TU"nel) simula una capa de red de nivel 3. TAP se usa para crear el puente de red y TUN para encaminar.
Algunas ventajas de usar SSH son que no hace falta usar ningn otro software, que el tnel utiliza la autenticacin de
SSH, permitiendo por ejemplo usar claves pblicas y privadas y que permite enviar cualquier protocolo de nivel 3 y 4,
como ICMP o TCP/UDP.
A cambio el encapsulamiento se realiza sobre TCP, obtenindose peor rendimiento que con los tneles IPSec, adems
de depender de conexiones TCP.
Hace falta las siguientes opciones en ssd_config:
RermiRooLogin yes # Rara deerminadas configuraciones puede ser necesario o no
RermiTunne1 yes
GNU/Linux http://guimi.net 19 / 29
T8ne' ent!e e7ui/os 0P@P1
No es estrictamente una VPN. Vamos a conectar dos equipos hclient y hserver. La conexin se inicia desde hclient
hacia hserver y la realiza root.
El tnel termina en las direcciones 10.0.1.1 (hserver) y 10.0.1.2 (hclient) y creamos un dispositivo tun5. El
procedimiento es muy sencillo:
1. Conectamos por SSH usando la opcin de tnel (-w)
2. Configuramos las IPs del tnel.
Conectamos desde el cliente y ejecutamos comandos en el servidor para configurarlo:
c1i># ssh -w5:5 roo@hserver
srv># ifconfig un5 10.0.1.1 nemas' 255.255.255.252 # Execued on he server she11
Configuramos el cliente:
c1i># ifconfig un5 10.0.1.2 nemas' 255.255.255.252
Ahora los dos equipos estn conectados y pueden comunicarse de manera transparente con cualquier protocolo de capa
3 o 4 utilizando las direcciones IP del tnel.
T8ne' ent!e !edes
Para hacer un tnel entre dos redes, por ejemplo netA (192.168.51.0/24) y netB (192.168.16.0/24), utilizaremos dos
pasarelas SSH. El procedimiento es similar al anterior, pero hemos de aadir encaminamiento. Adems debe activarse
NAT en la interfaz privada de las pasarelas VPN SSH solo si no son las pasarelas predefinidas de las redes.
192.168.51.0/24 (netA) | gateA <-> gateB | 192.168.16.0/24 (netB)
1. Conectamos por SSH usando la opcin de tnel (-w)
2. Configuramos las IPs del tnel.
3. Aadimos encaminamiento para las dos redes.
4. Si es necesario, activamos NAT en la interfaz privada de la pasarela.
Empezamos la comunicacin desde la red netA. Conectamos desde gateA y ejecutamos comandos en gateB:
gaeA># ssh -w5:5 roo@gaeB
gaeB># ifconfig un5 10.0.1.1 nemas' 255.255.255.252 # Execued on he gaeB she11
gaeB># roue add -ne 192.168.51.0 nemas' 255.255.255.0 dev un5
gaeB># echo 1 > /proc/sys/ne/ipv4/ip_forward # On1y needed if no defau1 gw
gaeB># ipab1es - na -A ROSTROUTING -o eh0 -_ MASQUERAE
Configuramos gateA:
gaeA># ifconfig un5 10.0.1.2 nemas' 255.255.255.252
gaeA># roue add -ne 192.168.16.0 nemas' 255.255.255.0 dev un5
gaeA># echo 1 > /proc/sys/ne/ipv4/ip_forward
gaeA># ipab1es - na -A ROSTROUTING -o eh0 -_ MASQUERAE
Las dos redes estn ahora conectadas de manera transparente a travs del tnel VPN SSH. Si las pasarelas VPN SSH no
son las pasarelas de las redes, los clientes no sabrn a qu direccin enviar las respuestas, por eso activamos NAT.
GNU/Linux http://guimi.net 20 / 29
DISK FUOTA
The quota tools package usually needs to be installed, it contains the command line tools. Activate the user quota in the
fstab and remount the partition. If the partition is busy, either all locked files must be closed, or the system must be
rebooted. Add usrquota to the fstab mount options, for example:
/dev/sda2 /home reiserfs rw,ac1,user_xar,usrquoa 1 1
# moun -o remoun /home
Initialize the quota.user file with quotacheck.
# quoachec' -vum /home
# chmod 644 /home/aquoa.user # To 1e he users chec' heir own quoa
Activate the quota either with the provided script (e.g. /etc/init.d/quotad on SuSE) or with quotaon:
quoaon -vu /home
Check that the quota is active with:
quoa -v
Assi-n 7uot$ 'i#its
The quotas are not limited per default (set to 0). The limits are set with edquota for single users. A quota can be also
duplicated to many users. The file structure is different between the quota implementations, but the principle is the
same: the values of blocks and inodes can be limited.
Only change the values of soft and hard. If not specified, the blocks are 1k. The grace period is set with edquota -t. For
example:
# edquoa -u co1in
Linux
is' quoas for user co1in (uid 1007):
Ei1esysem b1oc's sof hard inodes sof hard
/dev/sda8 108 1000 2000 1 0 0
Users can check their quota by simply typing quota (the file quota.user must be readable). Root
can check all quotas.
# quoa -u co1in # Chec' quoa for a user
# repquoa /home # Eu11 repor for he pariion for a11 users
# sequoa
GNU/Linux http://guimi.net 21 / 29
RAID ?
Supongamos que tenemos en /de&/sd$ nuestro sistema bsico instalado y queremos utilizar /de&/sd* como disco espejo.
Instalamos las herramientas de RAID:
# apiude insa11 mdadm
Desmontamos todas las particiones excepto "/" y swap. Utilizamos fdisk para cambiar los tipos de las particiones a "fd"
(raid autodetect). No 3$( 7ue "$#*i$! '$ /$!ti"in s5$/.
Veremos un error al escribir la nueva tabla por estar el sistema en uso, pero no pasa nada. Verificamos:
# fdis' -1 /dev/sda
is' /dev/sda: 160.0 GB, 160041885696 byes
255 heads, 63 secors/rac', 19457 cy1inders
Unis = cy1inders of 16065 * 512 = 8225280 byes
evice Boo Sar End B1oc's Id Sysem
/dev/sda1 * 1 3647 29294496 fd Linux raid auodeec
/dev/sda2 3648 7294 29294527+ fd Linux raid auodeec
[...|
Usamos sfdisk para copiar la tabla de particiones en /dev/sdb:
# sfdis' -d /dev/sda | sfdis' /dev/sdb
Creamos los volmenes RAID indicando que se componen de dos dispositivos. El primero est perdido (no queremos
an que utilice las particiones donde hemos instalado) y el segundo est en /dev/sdb:
# mdadm --creae /dev/md0 --1eve1 1 --raid-devices=2 missing /dev/sdb1
# mdadm --creae /dev/md1 --1eve1 1 --raid-devices=2 missing /dev/sdb2
Creamos sistemas de fichero en los volmenes RAID:
# m'fs.ex3 /dev/md0
# m'fs.ex3 /dev/md1
Montamos el volumen que contendr el sistema y copiamos la raiz:
# moun /dev/md0 /mn
# cp -dpRx / /mn
Montamos y copiamos el resto de volmenes:
# moun /dev/md1 /mn/home
# cp -dpRx /home /mn/home
Editamos /etc/fstab:
/dev/md0 / ex3 defau1s,errors=remoun-ro 0 1
/dev/md1 /home ex3 nodev,nosuid,noexec,usrquoa,grpquoa 0 2
/dev/sda3 none swap sw,pri=1 0 0
/dev/sdb3 none swap sw,pri=1 0 0
Como se ve hemos preparado md1 para utilizar cuotas y se han configurado por seguridad para que en esos sistemas de
ficheros no se utilicen dispositivos (nodev), ficheros con setuid (nosuid) ni ficheros ejecutables (noexec).
Editamos /boot/grub/menu.lst. Opcionalmente podemos activar framebuffer:
(...)
i1e ebian GNU/Linux, 'erne1 2.6.18-3-686
roo (hd0,0)
'erne1 /boo/vm1inuz-2.6.18-3-686 roo=/dev/md0 md=0,/dev/sda1,/dev/sdb1 ro vga=791
inird /boo/inird.img-2.6.18-3-686
savedefau1
i1e ebian GNU/Linux, 'erne1 2.6.18-3-686 (RAI recovery disc-A)
roo (hd0,0)
'erne1 /boo/vm1inuz-2.6.18-3-686 roo=/dev/md0 md=0,/dev/sda1 ro sing1e
inird /boo/inird.img-2.6.18-3-686
savedefau1
i1e ebian GNU/Linux, 'erne1 2.6.18-3-686 (RAI recovery disc-B)
roo (hd1,0)
'erne1 /boo/vm1inuz-2.6.18-3-686 roo=/dev/md0 md=0,/dev/sdb1 ro sing1e
inird /boo/inird.img-2.6.18-3-686
GNU/Linux http://guimi.net 22 / 29
savedefau1
(...)
Copiamos los ficheros editados al disco espejo:
# cp -dp /ec/fsab /mn/ec/fsab
# cp -dp /boo/grub/menu.1s /mn/boo/grub
Instalamos grub en el segundo disco, para que podamos arrancar si falla el primero:
# grub-insa11 /dev/sda
# grub
grub> device (hd0) /dev/sdb
grub> roo (hd0,0)
grub> seup (hd0)
grub> qui
Y por fin reiniciamos el sistema para utilizar ya los volmenes RAID y verificar que todo va bien. El sistema debera
rearrancar correctamente. Algunas verificaciones que podemos hacer:
# moun
# df
# mdadm -Q /dev/md0
# mdadm -Q /dev/md1
# ca /proc/mdsa
Aadimos las particiones de /dev/sda (que no estamos usando) a los volmenes RAID:
# mdadm --add /dev/md0 /dev/sda1
# mdadm --add /dev/md1 /dev/sda2
Cada vez que aadimos una particin a un volumen RAID debe sincronizarla. Si se intenta aadir una particin antes de
que termine de sincronizar la anterior el sistema nos dar un aviso y encolar la tarea.
No !eini"i$! 3$st$ 7ue '$s /$!ti"iones est=n sin"!oni9$d$s)
Podemos verlo en /proc/mdstat. Cuando indica [UU] es que est correcto.
# ca /proc/mdsa
Rersona1iies : [1inear| [mu1ipah| [raid0| [raid1| [raid6| [raid5| [raid4| [raid10|
md0 : acive raid1 sda1[0| sdb1[1|
29294400 b1oc's [2/2| [UU|
md1 : acive raid1 sda2[0| sdb2[1|
29294400 b1oc's [2/2| [UU|
unused devices: <none>
Si se desea quitar una particin de un volumen:
# mdadm --fai1 /dev/md2 /dev/sda4
# mdadm --remove /dev/md2 /dev/sda4
No se pueden quitar todas las particiones de un volumen. Si lo que se desea es eliminar el volumen:
# mdadm --sop /dev/md2
Nada de esto afecta al estado de las particiones en s mismas.
GNU/Linux http://guimi.net 23 / 29
.ICHEROS DE CON.IGURACIN
$ ca /ec/ap/sources.1is
deb hp://fp.fr.debian.org/debian/ ech main conrib non-free
deb-src hp://fp.fr.debian.org/debian/ ech main conrib
deb hp://securiy.debian.org/ ech/updaes main conrib
deb-src hp://securiy.debian.org/ ech/updaes main conrib
deb hp://www.debian-mu1imedia.org/ ech main
deb-src hp://www.debian-mu1imedia.org/ ech main
$ ca /ec/bash.bashrc
# Sysem-wide .bashrc fi1e for ineracive bash(1) she11s.
[...|
# If no running ineracive1y, don' do anyhing
[ -z "$RS1" | && reurn
# se a fancy promp (non-co1or, overwrie he one in /ec/profi1e)
RS1='${debian_chroo:+($debian_chroo)}\u@\h:\w\$ '
[...|
if [ -d ~/bin |, hen
expor RATH=$RATH:~/bin
fi
$ ca /ec/cronab
# /ec/cronab: sysem-wide cronab
[...|
SHELL=/bin/sh
RATH=/usr/1oca1/sbin:/usr/1oca1/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * roo cd / && run-pars --repor /ec/cron.hour1y
25 6 * * * roo es -x /usr/sbin/anacron || ( cd / && run-pars --repor /ec/cron.dai1y )
47 6 * * 7 roo es -x /usr/sbin/anacron || ( cd / && run-pars --repor /ec/cron.wee'1y )
52 6 1 * * roo es -x /usr/sbin/anacron || ( cd / && run-pars --repor
/ec/cron.monh1y )
$ ca /ec/dhcpd.conf
opion domain-name "Mi_ominio",
opion domain-name-servers Servidor.Mi_ominio,
opion subne-mas' 255.255.255.224,
defau1-1ease-ime 600,
max-1ease-ime 7200,
subne 280.280.280.0 nemas' 255.255.255.0 {
range 280.280.280.100 280.280.280.250,
opion subne-mas' 255.255.255.0,
opion broadcas-address 280.280.280.255,
opion rouers 280.280.280.1,
opion domain-name-servers 280.280.280.333,
}
$ ca /ec/expors
# /ec/expors: he access conro1 1is for fi1esysems which may be expored
# o NES c1iens. See expors(5).
GNU/Linux http://guimi.net 24 / 29
$ ca /ec/fsab
# /ec/fsab: saic fi1e sysem informaion.
#
# <fi1e sysem> <moun poin> <ype> <opions> <dump> <pass>
proc /proc proc defau1s 0 0
/dev/sda2 / ex3 defau1s,errors=remoun-ro 0 1
/dev/sda5 /media/ATOS auo defau1s,errors=remoun-ro 0 0
/dev/sda6 /home ex3 defau1s 0 2
/dev/sda7 none swap sw 0 0
/dev/hda /media/cdrom0 udf,iso9660 user,noauo 0 0
/dev/fd0 /media/f1oppy0 auo rw,user,noauo 0 0
/dev/sda1 /media/windowsC nfs user,noauo,ro,dmas'=000,fmas'=111,n1s=uf8,gid=100 0 0
$ ca /ec/group
roo:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:guimi
y:x:5:
dis':x:6:guimi
[...|
$ ca /ec/hoss
127.0.0.1 1oca1hos
158.42.xxx.x xxxxxxxxx.upv.es
$ ca /ec/hosname
xxxxxxxx.upv.es
$ ca /ec/hoss.a11ow
# /ec/hoss.a11ow: 1is of hoss ha are a11owed o access he sysem.
[...|
ALL: .foobar.edu EXCERT ermina1server.foobar.edu
$ ca /ec/hoss.deny
# /ec/hoss.deny: 1is of hoss ha are _no_ a11owed o access he sysem.
[...|
ALL: RARANOI
# ouch /ec/hoss.equiv /ec/ssh/shoss.equiv && chmod 000 /ec/hoss.equiv /ec/ssh/shoss.equiv
$ ca /ec/iniab
# /ec/iniab: ini(8) configuraion.
[...|
# The defau1 run1eve1.
id:3:inidefau1:
# Boo-ime sysem configuraion/iniia1izaion scrip.
# This is run firs excep when booing in emergency (-b) mode.
si::sysini:/ec/ini.d/rcS
# Wha o do in sing1e-user mode.
~~:S:wai:/sbin/su1ogin
[...|
10:0:wai:/ec/ini.d/rc 0
11:1:wai:/ec/ini.d/rc 1
12:2:wai:/ec/ini.d/rc 2
[...|
# Wha o do when CTRL-ALT-EL is pressed.
ca:12345:cr1a1de1:/sbin/shudown -1 -a -r now
[...|
1:2345:respawn:/sbin/gey 38400 y1
2:23:respawn:/sbin/gey 38400 y2
3:23:respawn:/sbin/gey 38400 y3
[...|
GNU/Linux http://guimi.net 25 / 29
$ ca /ec/modu1es
# /ec/modu1es: 'erne1 modu1es o 1oad a boo ime.
1oop
$ ca /ec/newor'/inerfaces
# This fi1e describes he newor' inerfaces avai1ab1e on your sysem
# and how o acivae hem. Eor more informaion, see inerfaces(5).
# Si se usa #etwork$anager esas configuraciones pueden no funcionar correcamene.
# The 1oopbac' newor' inerface
auo 1o
iface 1o ine 1oopbac'
# The primary newor' inerface
auo eh0
#iface eh0 ine dhcp
iface eh0 ine saic
address 158.42.xxxxx
newor' 158.42.xxxxx
nemas' 255.255.255.0
broadcas 158.42.xxx.255
gaeway 158.42.xxxxxxx
$ ca /ec/nsswich.conf
# /ec/nsswich.conf
passwd: fi1es 1dap
group: fi1es 1dap
$ ca /ec/passwd
roo:x:0:0:roo:/roo:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
[...|
guimi:x:1000:1000:guimi,,,:/home/guimi:/bin/bash
$ ca /ec/profi1e
# /ec/profi1e: sysem-wide .profi1e fi1e for he Bourne she11 (sh(1))
# and Bourne compaib1e she11s (bash(1), 'sh(1), ash(1), ...).
$ ca /ec/rc.1oca1
#!/bin/sh -e
# This scrip is execued a he end of each mu1iuser run1eve1.
$ ca /ec/reso1v.conf
# generated by #etwork$anager% do not edit&
domain upv.es
nameserver 158.42.xxxxxxx
nameserver 158.42.xxxxxxx
$ ca /ec/services
# Newor' services, Inerne sy1e
# Updaed from hp://www.iana.org/assignmens/por-numbers and oher
# sources 1i'e hp://www.freebsd.org/cgi/cvsweb.cgi/src/ec/services.
cpmux 1/cp # TCR por service mu1ip1exer
echo 7/cp
echo 7/udp
discard 9/cp sin' nu11
discard 9/udp sin' nu11
[...|
# ca /ec/shadow
roo:xxxxxxxxxxxxxxxxxxxxx3s26LwGhabI30:13777:0:99999:7:::
daemon:*:13650:0:99999:7:::
[...|
guimi:xxxxxxxxxxxxxxxxxxxxxxxxxxh1vOBgX0:13838:0:99999:7:::
GNU/Linux http://guimi.net 26 / 29
# ca /ec/sudoers
# /ec/sudoers
# This fi1e MUST be edied wih he 'visudo' command as roo.
[...+
$ ca /ec/imezone
Europe/Madrid
$ ca /ec/sys1og.conf
# /ec/sys1og.conf Configuraion fi1e for sys1ogd.
[...|
auh,auhpriv.* /var/1og/auh.1og
*.*,auh,auhpriv.none -/var/1og/sys1og
[...|
daemon.*,mai1.*,\
news.cri,news.err,news.noice,\
*.=debug,*.=info,\
*.=noice,*.=warn /dev/y12
Uso de pam
Uso de xinetd
# update-inetd --disable chargen
# update-inetd --disable ident
# update-rc.d -f cups remove
# update-rc.d -f gdm remove
nmap localhost -p 1-5000,8110,10024-10026
uso lsattr chattr
ACLs
ACL de archivos en Linux
Posteado en Debian, Seguridad por situ el 12 de February de 2009
Muchas veces tenemos que dar permisos sobre nuestros archivos a ciertos usuarios del sistema, pero para que esto nos
funcione debemos ingresarlos al mismo grupo de trabajo que nosotros, pero con esto estamos iniciando un gran fallo de
seguridad ya que realizando el procedimiento mencionado este usuario va a poder ver minimamente nuestros archivos.
Para mitigar dicho problema, vamos a utilizar las herramientas acl.
1. Comprobamos el soporte de ACL en nuestro kernel.
# cat /boot/config-2.6.18-6-686-bigmem | grep _ACL
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_JFFS2_FS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
2. Instalamos la aplicacion ya que vemos que tenemos soporte de para utlizarlas.
GNU/Linux http://guimi.net 27 / 29
# apt-get install acl
Luego debemos remontar nuestro sistema de archivos con soporte acl, para que se pueda trabajar con ellas.
# mount -o remount,acl /
3. Comprobamos los permisos del archivo permisos.txt
# ls -l permisos.txt
-rwx-- 1 root root 5 2009-02-11 22:36 permisos.txt
# getfacl permisos.txt
file: permisos.txt
owner: root
group: root
user::rwx
group::-
other::-
4. Tratamos de leer el contenido del archivo usando el usuario situ.
# cat permisos.txt
cat: permisos.txt: Permission denied
Como podemos ver no tenemos permisos para leer el contenido del archivo en cuestion.
4. Damos autorizacion al usuario situ a ver el contenido
# setfacl -m u:situ:r permisos.txt
Verificamos los permisos
# getfacl permisos.txt
file: permisos.txt
owner: root
group: root
user::rwx
user:situ:r
group::-
mask::r
other::-
Ejecutamos nuevamente el cat y ahora podemos ver el contenido.
# cat permisos.txt
hola
Para mas info: http://www.debianhelp.co.uk/acl.htm
GNU/Linux http://guimi.net 28 / 29
ENTORNOS GR.ICOS
CDE (Common Desktop Enviroment)
fvwm
xfce
GNOME (GNU )
KDE (KDE Desktop)
GNU/Linux http://guimi.net 29 / 29

También podría gustarte