Descargue como PDF, TXT o lea en línea desde Scribd
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