viernes, 7 de septiembre de 2012

Montar y Compartir Archivos con Samba

Lo primero que debemos contemplar es que ya se  tiene habilitado un recurso compartido al cual podremos acceder desde nuestro equipo, así como el usuario y contraseña del mismo. En seguida se aplican los siguientes pasos:

1- Actualiza lista de paquetes: # apt-get update
2- Busca en cache paquetes que coincidan con smbfs: # apt-cache search smbfs
3- Instalar el cliente Samba: # apt-get install smbfs
4- Montar la el recurso compartido de forma manual:
# mount -t smbfs -o username=[User] //[IP o Hostname]/[Ruta]/ /mnt - Monta el sistema de archivos samba en /mnt con el usuario indicado
5- Verificamos punto de montaje: # ls /mnt – Lista /mnt y muestra los archivos contenidos en polluxbkup
6- Desmontamos unidad: # umount /mnt – Desmonta el sistema de archivos samba

Si deseamos generar un script para montar alguna unidad de forma automática el paso 4 quedaría de la siguiente forma:

smbmount //[IP o Hostaname]/[Ruta] /mnt -o credentials [acceso.txt]
Donde acceso.txt es un fichero existente que contiene el usuario y contraseña con los que se deberá conectar la unidad:
# cat acceso.txt
username = user
password = pass

IMPORTANTE: Debemos recordar que para montar o desmontar cualquier unidad a nuestro equipo debemos hacerlos con privilegios de super usuario root, de lo contrario no serán permitidos los cambios.

miércoles, 8 de agosto de 2012

Configurar WGET y APT-GET por proxy

Cuando es necesario obtener salida de un servidor a Internet a traves de un Proxy se puede realizar de las siguientes formas:

1- Editar: /etc/bash.bashrc e ingresar los parámetros:
export http_proxy=http://usuario:contraseña@proxy.dominio.com.mx:puerto/
export ftp_proxy=http://usuario:contraseña@proxy.dominio.com.mx:puerto/
2- Configuración sólo para utilizar WGET: Editar el fichero /etc/wgetrc descomentando las siguientes líneas y agregando los parametro correspondientes a tu configuración de red:

  http_proxy = http://usuario:contraseña@proxy.dominio.com.mx:puerto/
  https_proxy = http://usuario:contraseña@proxy.dominio.com.mx:puerto/
  ftp_proxy = http://usuario:contraseña@proxy.dominio.com.mx:puerto/
  use_proxy = on
3- Configuración sólo para utilizar apt-get: Editar el fichero /etc/apt/apt.conf.d/88apt-proxy, si no existe se crea y se agrega la siguiente información:
  Acquire::http::Proxy "usuario:contraseña@proxy.dominio.com.mx:puerto/";

jueves, 21 de junio de 2012

Open Web Application Security Project (OWASP)

OWASP es una comunidad abierta dedicada a permitir que las organizaciones logren desarrollar, adquirir, operar y mantener aplicaciones web confiables.
Todas las herramientas de OWASP, documentos, foros, y los capítulos son gratuitos y abiertos a cualquier persona interesada en la mejora de la seguridad de aplicaciones. Comparto una breve introducción sobre el proyecto, para más información consultar: www.owasp.org

https://www.youtube.com/watch?v=pypTYPaU7mM&feature=channel&list=UL

viernes, 23 de marzo de 2012

Lista de comandos de GNU/Linux

A continucación se presenta una breve lista de comando bastante útiles en GNU/Linux

$ watch -n tiempo comandoEjecuta un comando cada x segundos (2 por defecto).

$ watch -n 1 date

Igual que date pero en este caso veríamos correr los segundos.

$ clear

Limpia la pantalla.

$ reset

Restaura la Consola.Útil para cuando empiezan a aparecer caracteres raros.

$ uname -a

Versión del kernel

$ hostname

Visualiza el nombre de la máquina.

$ tty

Muestra el nombre de fichero de la terminal conectada a la salida estándar.

# /etc/init.d/servicio stop

Para un servicio/demonio

# /etc/init.d/servicio start

Inicia un servicio/demonio.

# /etc/init.d/servicio restart

Reinicia un servicio/demonio.

$ startx

Arranca el entorno gráfico con el gestor especificado en el .initrc de tu home.

$ startx /usr/bin/X11/icewm

Arranca el entorno gráfico con el icewm (si es que no fuera el predeterminado)

$ Ctrl+C

Termina un proceso.

$ Ctrl+Z

Suspende temporalmente la ejecución de un programa.

$ Ctrl+S

Para la transferencia de datos a la terminal.

$ Ctrl+Q

Resume,reinicia la tranferencia de datos

$ Ctrl+R

Entra en modo de busqueda incremental de linea de comandos, ej: Si entras en el modo y escribis "ls" (sin comillas) te completará la entrada más reciente que empiece por "ls", para ir rotando por la entradas antereriores seguir presionando Ctrl+R, para terminar presionar alguna flecha.

$ Ctrl+L

Limpia la pantalla.

$ Ctrl+O

Ejecuta un comando (como si se hubiera presionado ENTER) pero vuelve y deja el comando escrito en el prompt.

$ Ctrl+K

Borra desde donde está el cursor hasta el final.

$ Ctrl+W

Borra desde donde está el cursor hasta el inicio de la palabra debajo de èl.

$ Ctrl+E

Salta al final de lo que se esté escribiendo.

$ Ctrl+Alt+F2

Salir del entorno gráfico a un terminal.(Fnº según gettys activados en /etc/inittab)

$ Ctrl+Alt+Supr

Estando en una terminal reinicia (si no se indica otra cosa en /etc/inittab)

$ ./script

Ejecuta un script de shell.

$ java -jar fichero.jar

Ejecuta un programa java.

$ consolechars -f fuente.psf.gz

Cambiar la fuente de la consola.Las fuentes se encuentran en /usr/share/consolefonts/

$ base-config

Configura el sistema base.

$ gpm

Programa que da soporte de ratón a la consola y aplicaciones que corren sobre ella.

$ reportbug

Programa en modo texto para enviar bugs a Debian

$ exit

Termina la ejecución del programa en curso.

# init 0

Apaga la máquina.

# init 6

Reinicia la máquina.

# shutdown -t1 -h now

Apaga la máquina .

# shutdown -t1 -r now

Reinicia la máquina.

$ su

Entrar a la sesión como root u otro usuario.

# su nom_usuario

Estando como root entramos como otro usuario.

$ passwd

Cambio de contraseña.

$ who -a -H

Muestra información de los usuarios conectados al sistema.

$ users

Muestra información de los usuarios conectados al sistema.

$ id

Muestra información del usuario actual,(grupos a los que pertenece,uid,gid)

$ groups

Muestra los grupos a los que pertenece un usuario.

# adduser usuario

Crea un nuevo usuario.

# adduser usuario grupo

Añade un usuario existente a un grupo ya existente.

# adduser --no-create-home usuario

Crea un usuario pero sin directorio personal(home).

# addgroup grupo

Crea un nuevo grupo.

# deluser usuario

Elimina un usuario.

# deluser usuario grupo

Elimina un usuario del grupo especificado.

# deluser --remove-home usuario

Elimina un usuario y su directorio home.

# delgroup grupo

Elimina un grupo.

# delgroup grupo --only-if-empty

Elimina un grupo sólo si no tiene ningún usuario.

# usermod -l nuevo_login

Cambia el nombre del usuario. Sería bueno combinarlo con -d

# usermod -d nueva_home -m login

Cambia el home al usuario,creándolo si no existiese y transfiriendo el contenido.

# usermod -e 2006-04-14 login

Fecha en que la cuenta del usuario será desactivada,expresada en formato AAAA-MM-DD

# groupmod -n nuevo_nombre grupo

Cambia el nombre de un grupo.

Usando el gestor de arranque (NTloader) de windows:

Se copian los sectores de arranque de las particiones al archivo debian_sarge.lnx:

# dd if=/dev/hda2 of=/debian_sarge.lnx bs=512 count=1 (tenemos sarge en hda2 con lilo o grup)
# dd if=/dev/hda5 of=/debian_etch.lnx bs=512 count=1 (tenemos etch en hda5 con lilo o grup)

los archivos debian*.lnx se copian en la partición raiz de windows y al archivo boot.ini de windows,oculto y de sólo lectura,le agregamos las siguientes lineas dentro de su sección [operating systems]:

C:\debian_sarge.lnx="Debian Sarge"
C:\debian_etch.lnx="Debian Etch"

Atención:
cada vez que modifiquemos los sectores de inicio o gestores de arranque de las particiones linux habrá que volver a realizar lo anterior ya que los ficheros .lnx habrán quedado
desactualizados.

5.b. Procesos y memoria

Memtest86+

Realiza una comprobación del estado de la memoria si optamos a ello desde los gestores de arranque, para lo cual necesitamos editarlos añadiendoles su ruta.
En lilo.conf:

image  = /boot/memtest86+.bin
label = memtest86+

En menu.lst:

title  memtest86+
root   (hd0,0)
kernel /boot/memtest86+.bin

suponiendo que /boot esté en la partición raiz (/)

# make-memtest86+-boot-floppy

Crea un disquete de arranque desde el que se ejecutará memtest86+

$ free -m -s 3

Muestra el uso de memoria.

$ ps aux

Muestra información de los procesos en curso.

$ top

Muestra información de los procesos en curso.(tecla z colorea los activos)

$ pstree

Muestra los procesos en curso en árbol.

$ pidof comando

Busca el ID de un programa que se está ejecutando.

$ killall proceso

Para un proceso.

$ strace comando

Muestra las llamadas al sistema originadas por un proceso.

$ fuser -v archivo

Muestra los procesos que están usando un fichero o directorio.

$ lsof | less

Lista los ficheros abiertos por los procesos, en realidad descriptores de ficheros

$ lsof -c comando

Lista los ficheros abiertos por un proceso.

$ lsof +D /home/paco

Lista los procesos que están usando mi directorio.

$ lsof -i :60627

Muestra que proceso se encuentra detrás del puerto 60627 (aunque esté a la escucha)

$ nohup comando &

Lanza un proceso de forma que si cerramos el shell,el proceso continúa ejecutandose

$ comando &

Ejecuta un comando en segundo plano(background),permitiendonos seguir usando el promp.

$ jobs

Lista los procesos en segundo plano identificándolos con un nº de tarea.

$ fg nº

Pasa a primer plano (foreground)un proceso

$ bg

Pasa a background un proceso que hemos suspendido temporalmente tecleando Ctrl-z

$ nice -n prioridad comando

Ejecuta un comando con una prioridad determinada(0 por defecto).
Ejemplo:

$ nice -n -10 cdrecord

esos valores,de mayor a menor, son -20...+20, sólo root puede establecer valores negativos.

$ renice prioridad PID_del_proceso

Cambia la prioridad de un proceso en marcha

$ sleep 5 comando

Retarda 5 segundos la ejecución de un comando, m para minutos y h para horas.

$ at [-f script] [tiempo]

Ejecutar un script a una hora y/o fecha.
Ejemplo

$ at -f script 15:23

formas de indicar el tiempo:

$ at -f script 15:23

hoy a las 15:23

$ at -f script 15:23 01.23.06

El 01.23.06 a las 15:23

$ at -f script now + 23 minutes

Dentro de 23 minutos, puede ser minutes, hours, days, weeks

$ at [tiempo]

Ésta forma nos abre un promp interactivo.
Ejemplo:

$ at 15:00

Abre el promp de at

$ at > comando

Ingresamos el comando/os.

$ ctrl+d

Salimos de at

$ atq

Muestra,numeradas,la lista de tareas programadas.

$ atrm nº

Eliminará una tarea identificada por su nº.

$ batch

Se emplea de las mismas formas que at,solo que en este caso, el script o comando se ejecutará sólo si la media de carga de la CPU es inferior al 80%.

5.c.-Disco duro

Nomenclatura de dispositivos


-------------------------------------------------------
| Nomenclatura de discos en linux|    IDE    |   SCSI   |
| -------------------------------|-----------|----------|
|  Disco maestro del primer bus  | /dev/hda  | /dev/sda |
|  Disco esclavo del primer bus  | /dev/hdb  | /dev/sdb |
|  Disco maestro del segundo bus | /dev/hdc  | /dev/sdc |
|  Disco esclavo del segundo bus | /dev/hdd  | /dev/sdd |
------------------------------------------------------- 

Designacion de particiones


----------------------------------------
| disco /dev/hda  |primarias | lógicas   |
| ----------------|----------|-----------|
| 1ª  partición   |/dev/hda1 | /dev/hda5 |
| 2ª  partición   |/dev/hda2 | /dev/hda6 |
| 3ª  partición   |/dev/hda3 | /dev/hda7 |
| 4ª  partición   |/dev/hda4 | /dev/hda8 |
 ----------------------------------------


$ du -h fichero

Muestra espacio ocupado en disco,del directorio en curso si no indicamos nada.

$ tree -a -s -L 2

tree es un programa que muestra lo mismo que du en forma de árbol.

$ df

Muestra información sobre particiones montadas, con la opcion -h se muestra en formato Human Readable (e.g. KB, MB, GB).

# cfdisk

Muestra información sobre particiones.Herramienta para particionar en ncurses.

# fdisk -l

Muestra información sobre particiones.Herramienta para particionar.

# mount

Vemos el listado de dispositivos montados.

# mount punto_montaje

Monta un dispositivo.(ya establecido en el fstab)

# umount punto_montaje

Desmonta un dispositivo.(ya establecido en el fstab)

# mount -t sistema_archivo dispositivo punto_montaje

Monta un dispositivo. Ejemplo:

# mount -t ext3 /dev/hda2 /mnt

Donde se monta la segunda partición primaria del dispositivo /dev/hda, la cual es de tipo ext3, en el directorio /mnt

# umount /dev/hda2

Desmonta un dispositivo

# fsck /dev/hdax

Chequea y repara el sistema de archivos de una partición NO MONTADA.

# fsck.ext2 -vpf /dev/hdx

Chequea y repara el sistema de archivos de una partición ext2 NO MONTADA.

# fsck.ext3 -vpf /dev/hdx

Chequea y repara el sistema de archivos de una partición ext3 NO MONTADA.

# mkfs.ext2 /dev/hdb1

Crea un sistema de ficheros Linux ext2 en la primera partición del segundo disco duro.

# mkfs.ext3 /dev/hdb1

Crea un sistema de ficheros Linux ext3 en la primera partición del segundo disco duro.

# mkfs.ext3 /dev/fd0

Crea un sistema de ficheros Linux ext3 en el floppy.

# mkswap /dev/hda2

Crea un sistema de ficheros Linux swap (intercambio) en hda2.

# resize2fs -f /dev/hda2

Reajusta el tamaño del sistema de ficheros después de haber ampliado/reducido la partición/volumen

# tune2fs -O ^has_journal /dev/hda2

Convierte hda2 de ext3 a ext2

# tune2fs -j /dev/hda2

Convierte hda2 de ext2 a ext3

# tune2fs -C 255 /dev/hda1
Fuerza a que se revise /dev/hda1 en el próximo reinicio (con fsck). Útil para revisar la partición raíz, que no se puede desmontar.


# quota

Programa que gestiona/limita el uso que hacen del disco los usuarios/grupos.

5.d.-Entorno


$ locale

Muestra la zona geográfica configurada.

# dpkg-reconfigure locales

Reconfigura los locales.

# dpkg-reconfigure console-data

Reconfigura el teclado.

$ loadkeys ruta_mapa_teclado.gz

Carga el mapa de teclado que le indicamos,que estará en:/usr/share/keymaps

$ locale charmap

Muestra el código de caracteres en uso.

$ set

Muestra las variables locales definidas

$ env

Muestra las variables de entorno definidas.

$ export

Muestra las variables de entorno declaradas.

$ export VARIABLE=valor

Añadimos una variable.Con export EDITOR=nano establecemos nano como editor predeterminado.

$ export VARIABLE=

Eliminamos una variable dejando en blanco su valor. Para que las variables permanezcan de una sesión a otra hay que ponerlas en el archivo .bashrc de tu home.

5.e-Instalación de software

Dpkg

Herramienta de nivel medio para instalar, construir, borrar y gestionar los paquetes de Debian

# dpkg -i paquete

Instalación de paquetes .deb

# dpkg -r paquete

Desinstala un paquete.

# dpkg --purge paquete

Desinstala un paquete y sus archivos de configuración.

# dpkg --force -r paquete

Fuerza la desinstalación de un paquete.Más información: dpkg --force-help

# dpkg --force-all -r paquete

Fuerza aún más la desinstalación de un paquete.Su uso puede dañar el sistema.

# dpkg -c paquete

Muestra el contenido (ficheros) de un paquete.

# dpkg -L paquete

Muestra todos los ficheros que se instalaron con un paquete.

# dpkg -S fichero

Muestra a qué paquete pertenece un fichero.

# dpkg --get-selections

Muestra todos los paquetes instalados en el sistema.

# dpkg-reconfigure paquete

Reconfigura paquetes instalados.Ejemplo: dpkg-reconfigure locales

Apt

Herramienta Avanzada de Empaquetamiento (Advanced Packaging Tool)
que gestiona el sistema de paquetes de Debian instalando,desinstalando, actualizando y configurando los mismos.
La sintaxis es:

# apt-get [opciones] acción


# apt-get update

Descarga y analiza la lista de nuevos paquetes desde los repositorios del sources.list.

# apt-get upgrade

Actualiza todos los paquetes instalados(no instala ni elimina paquetes).

# apt-get dist-upgrade

Actualiza todos los paquetes resolviendo las dependencias.

# apt-get install paquete/s

Instalación de paquetes por red,con resolución de depencias.

# apt-get -s acción

Simula,sin llevar a cabo la acción. Por ejem: apt-get -s install paquete.

# apt-get -d acción

Sólo descarga los paquetes deb en /var/cache/apt/archives/ sin instalar o desinstalar nada

# apt-get install --reinstall paquete

Reinstala un paquete.

# apt-get remove paquete/s

Desinstala un paquete.

# apt-get remove --purge paquete/s

Desinstala un paquete y sus archivos de configuración.

# apt-get clean

Elimina todos los paquetes (.deb) descargados y almacenados en /var/cache/apt/archives/

Apt-cache

Utilidad que manipula la caché de paquetes de APT en busca de información

$ apt-cache search palabra

Busca en los paquetes y en las descripciones la palabra.

$ apt-cache show paquete

Muestra la descripción completa del paquete

$ apt-cache showpkg paquete

Muestra su relación con otros paquetes.

$ apt-cache depend paquete

Muestra las dependencias del paquete

$ apt-cache rdepend paquete

Muestra las dependencias inversas del paquete(cuales dependen de él)

Apt-build

Herramienta que no se limita a instalar un paquete deb sino que compila el tarball, crea el paquete deb y lo instala, quedando así integrado con apt. Lo que se consigue compilando es optimizar la ejecución de los programas en nuestro procesador, de hecho al instalarse pregunta por el tipo de procesador del sistema. Tiene las mismas opciones que apt como update, upgrade, install
Ejemplo:

# apt-build install mplayer

Instala mplayer (el paquete del ejemplo no está escogido al azar¿?)
y alguna más como word para recompilar todo. En este último caso hay que crear una lista con los paquetes a recompilar en /etc/apt/apt-build.list
para lo cual nos puede servir el siguiente comando:

# dpkg --get-selections awk '{if ($2 == "install") print $1}' > /etc/apt/apt-build.list

Es aconsejable eliminar de dicha lista paquetes delicados como gcc, libc6

Aptitude

Gestor de paquetes con algunas mejoras con respecto a apt como la instalación automática de los paquetes que sin ser dependencias forman parte de los sugeridos o recomendados y la autodesinstalación de los paquetes instalados en su momento como dependencias de otros (automáticamente en contraposición a manualmente),si ningún otro paquete|
los necesitase.Se puede usar de forma interactiva si no se especifica ninguna acción o desde la linea de comandos,usando las mismas opciones y acciones de apt.La sintaxis es: aptitude [opciones] acción ejem.: aptitude -s purge firefox

# aptitude update

Descarga y analiza la lista de nuevos paquetes según los repositorios del sources.list.

# aptitude safe-upgrade

Realiza una actualización segura (no instala ni elimina paquetes).

# aptitude full-upgrade

Realiza una actualización,instalando y eliminando paquetes si fuera preciso

# aptitude install paquete/s

Instala/actualiza paquetes

# aptitude reinstall paquete/s

Reinstala un paquete

# aptitude remove paquete/s

Elimina paquetes

# aptitude purge paquete/s

Elimina paquetes y sus ficheros de configuración

# aptitude download paquete/s

Se limita a descargar los paquetes deb al directorio en el que estamos.

# aptitude hold paquete/s

Bloquea paquetes

# aptitude unhold paquete/s

Desbloquea un paquete

# aptitude unmarkauto paquete/s

Desmarca paquetes como instalados manualmente

# aptitude markauto paquete/s

Marca paquetes como instalados manualmente (elegidos por nosotros)

$ aptitude search expresión

Busca un paquete por nombre y/o expresión

$ aptitude show paquete

Muestra información detallada de un paquete

$ aptitude clean

Elimina los ficheros .deb descargados
Opciones:

-s

Simula las acciones, pero en realidad no las realiza.

-d

Sólo descarga paquetes, no instala o desinstala nada.

-p

Siempre pide confirmación de las acciones

-y

Supone que la respuesta a preguntas simples del tipo sí/no es «sí»

-f

Trata de arreglar paquetes rotos de forma agresiva.

-V

Muestra la versión de los paquetes a instalar.

-D

Muestra las dependencias de los paquetes cambiados automáticamente.

-t rama

Establece la rama de Debian desde la que se instalan los paquetes

Deborphan

Muestra los bibliotecas (paquetes lib) huérfanas

-a

Muestra todos los paquetes huérfanos (que no dependen de ningún otro).

-d

Muestra también sus dependencias.

-n

Muestra los paquetes \"sugeridos\" y \"recomendados\" como dependencias.

# deborphan -A paquete

Ignora un paquete(buena opcion si tenemos mala memoria y queremos conservar un huérfano)

# deborphan -R paquete

Cancela la orden anterior,si el paquete es huérfano lo mostrará.

# deborphan -L

Lista los paquetes ignorados

Orphaner

Interfaz gráfica de deborphan, sin parámetros sólo mostrará paquetes lib.

-a

Muestra todos los paquetes huérfanos del sistema.

Editkeep

Interfaz gráfica que gestiona o edita la lista de paquetes ocultos de deborphan.

Debfoster

Programa que mantiene una lista de los paquete que fueron instalados como dependencias de otros.La primera vez que se ejecuta pregunta si quieres conservar los paquetes instalados(pregunta por todos),Puede ejecutarse de manera interactiva o bién directamente desde la linea de comandos para instalar o desinstalar paquetes.

Localepurge

Script que elimina e impide la instalacion de los locales y páginas man que
no nos interesa tener en el disco.Al instalarlo nos da a elegir los locales y
si automaticamente impide la instalación de otros.El programa no se encuentra
bién integrado con la gestión de paquetes de debian...

Checkinstall



Esta sucesión de comandos crean un paquete .deb, una vez descomprimido el tarball* y ubicados en el directorio recién creado (si es el caso).
./configure: comprueba si nos faltan dependencias y crea el archivo make.ini necesario para la compilación.
make: compila el programa.(lo pasa a lenguaje máquina o binario)
checkinstall: crea el paquete .deb
*tarball: fichero comprimido con el código fuente del programa.
$ ./configure
$ make
$ su
# checkinstall

Me parece mejor la idea de hacer un paquete deb que la de compilar un programa desde las fuentes, de ésta manera se puede instalar el programa mediante dpkg -i quedando totalmente integrado en el sistema y luego si queremos desinstalarlo lo tendremos también mucho más facil con dpkg -r

fakeroot make-jpkg jre-linux.bin dpkg -i sun-j2re.deb

Ésta sucesión de comandos nos instala el java de sun, quedando totalmente integrado en nuestro sistema.
fakeroot es un programa normal, sin el bit setuid (ver chmod). No aumenta los privilegios de un usuario ni disminuye la seguridad del sistema. Se escribió específicamente para permitir que los usuario pudiesen crear paquetes deb sin tener privilegios de superusuario.
make-jpkg viene en el paquete java-package y sirve para convertir en paquete deb el binario de sun que contiene la máquina virtual de java (jre).

6.Recuperación del sistema

7.a.-Usando knoppix live


CD_knoppix # su

desde knoppix CD nos convertimos en root.

root@CD # cd /

nos vamos a / del knoppix CD.

root@CD # mount -t ext3 /dev/hdax /mnt/hdax

montamos la partición en cuestión.

root@CD # chroot /mnt/hdax

nos introducimos en ella con chroot*

root@disco_duro # mount -t proc proc /proc

puede ser necesario montar el sistema de ficheros proc.

root@disco_duro # nano /etc/lilo.conf

editamos lilo (o lo que sea necesario).

root@disco_duro # /sbin/lilo

ejecutamos lilo.

root@disco_duro # umount -t proc proc /proc

desmontamos proc

root@disco_duro # exit

nos salimos de chroot y por tanto del disco duro

root@CD # umount -t ext3 /dev/hdax /mnt/hdax

desmontamos la partición en cuestión.

root@CD # exit

salimos del root de knoppix.

CD_knoppix $

volvemos al punto de partida.
* La orden chroot lo que hace es situarte virtualmente en la partición que le indicas y a partir de ahí las ordenes que le pases a la consola se ejecutan en esa partición, es como si realmente estuvieras en esa partición.

7.b.-Creando un disquete de arranque/rescate

Con lilo

Tan fácil como copiar lilo.conf en un disquete e indicarle que arranque desde el mismo, para lo cual hay que cambiar la linea boot por:

boot=/dev/fd0

Si teneis varias particiones,entre ellas alguna lógica debeis añadir al lilo.conf del disquete la opción: \"lba32\" para que pueda arrancarla.

Con el programa mkboot

Este programa viene en el paquete debianutils.
mkboot, entre otras cosas, te copia el lilo.conf al disquete,pero la verdad es que yo sólo he conseguido que me funcionen los disquetes creados con mkboot,cambiando el lilo.conf que te crea por el original y realizando después las modificaciones que cuento más arriba.El mismo programa te explica cómo:

# mount /dev/fd0 /mnt

montamos el disquete.

# cd /mnt

nos vamos a él.

# nano lilo.conf

editamos lilo.conf

# lilo -C lilo.conf

con -C le decimos que ejecute el lilo del disquete y no el de /etc/lilo.conf

# cd ..

nos salimos.

# umount /dev/fd0

desmontamos el disquete.

Con grub

Éste no lo he probado pero por lo que he visto se trataría de copiar los ficheros stage1 y stage2 al disquete tal que así:

# mkfs.ext3 /dev/fd0

formateamos el disquete.

# mount -t ext3 /dev/fd0 /floppy

lo montamos en /floppy.

# cp /ruta_de_acceso/stage1 /floppy

copiamos stage1

# cp /ruta_de_acceso/stage2 /floppy

copiamos stage2

# cp /boot/vmlinuz /dev/fd0

si hay sitio se puede incluir el nucleo en el disquete.

# umount /dev/fd0

se desmonts floppy sin sacarlo.

# grub

inicia la interfaz de comandos de GRUB

grub> root (fd0)

instala las herramientas de GRUB...

grub> setup (fd0)

...en el MBR del disquete.

grub> quit

salimos
Cuando se arranque desde el disquete y aparecezca el interprete de comandos de grub hay que teclear:

grup> root (fd0)
grup> kernel /boot/vmlinuz  root=/dev/hda2     # kernel de inicio y particion raiz
grup> boot

Con el NTloader de microsoft

En el caso de que lo usemos para el inicio también podemos crear un disquete de arranque con el mismo.Para ello copiaremos los ficheros ocultos \"ntldr\" , \"ntdetect.com\" y \"boot.ini\" que se encuentran en el directorio raíz del sistema (normalmente C:).Ésto es lo que haría cualquier windosero, pero nosotros además,tendremos que copiar el o los ficheros con extensión .lnx que pusimos en la partición raiz.

7.c.-Copiando el MBS(Master Boot Sector)-sector de arranque maestro

Ésto crea un archivo llamado mbr con los primeros 512 bytes de hda:

# dd if=/dev/hda of=mbr count=1 bs=512

Para restaurar la tabla de particiones:

# dd if=mbr of=/dev/hda

7.d.-Copiando el VBS(Volume Boot Sector)-sector de arranque de una partición

Ésto crea un archivo llamado sector_arranque_hda2 con los primeros 512 bytes de hda2

# dd if=/dev/hda2 of=/sector_arranque_hda2 count=1 bs=512

Para restaurar el sector de arranque

# dd if=sector_arranque_hda2 of=/dev/hda2

Cada vez que se modifique lilo o grup,habrá que realizar una nueva copia del MBR o el sector de arranque que incluya los cambios.

Kernel ,logs y hardware


$ uname -a

Versión del kernel.

$ cat /proc/version

Versión del nucleo y compilador empleado.

$ lsmod

Lista los módulos cargados.

$ cat /proc/modules

Lista los módulos cargados.

$ lsmod | grep módulo

Ver si está cargado el módulo.

$ modinfo módulo

Muestra información sobre un módulo.

# modprobe módulo

Inserta un módulo en el kernel cargando antes los módulos de los cuales dependa.

# modprobe -r módulo

Elimina un módulo del kernel y si procede los que dependen del mismo.

# insmod módulo

Inserta un módulo en el kernel.

# rmmod módulo

Elimina un módulo del kernel.

# echo módulo >> /etc/modules

Inserta un módulo en el kernel de forma permanente.

# depmod módulo

Comprueba las dependencias del módulo.

# modconf

Programa gráfico para listar,cargar y descargar módulos del kernel.

# alsaconf

Programa interactivo que detecta las tarjetas de audio y carga los modulos adecuados.

# less /var/log/kern.log

Mensajes del nucleo (solo root o algun usuario que pertenesca al grupo adm tiene acceso a los logs)

# less /var/log/syslog

Registro de mensajes relativos a la seguridad.

# less /var/log/debug

Registro de información de depuración de los programas.

# less /var/log/messages

Mensajes del sistema de carácter informativo.

# less /var/log/user.log

Información del usuario.

# less /var/log/XFree86.0.log

Información sobre las X

# less /var/log/Xorg.0.log

Información sobre las X

# less /var/log/auth.log

Accesos al sistema(incluye los intentos fallidos).

# last

Lista los usuarios conectados/desconectados (fichero /var/log/wtmp).

# lastb

Muestra los intentos de conexión fallidos (fichero /var/log/btmp).

# hdparm /dev/hda

Verificar DMA

# hdparm -I /dev/hdx

Información sobre hdx

# hdparm -d1 /dev/hdx

Activar DMA en el disco duro o periférico.

$ dmesg

Ver la salida que el kernel produjo en el arranque.

$ dmesg | grep hd

Información sobre dispositivos IDE.

# sensors-detect

Detecta,instala y carga los sensores y los módulos necesarios(en un kernel 2.6)

# sensors

Tras ejecutar el anterior,muestra temperaturas, voltajes y revoluciones de ventilador.

# lsdev

Muestra información sobre los dispositivos(canales IRQ,DMA y puertos E/S que utilizan)

# lspci

Ver dispositivos conectados a la placa madre mediante un bus PCI.

# lsusb

Ver los buses USB y los dispositivos conectados a los mismos.

# cdda2wav -scanbus

Comprobar el interfaz SCSI.

# cdrecord -scanbus

Comprobar el interfaz SCSI.

$ cat /proc/meminfo

Información sobre la memoria.

$ cat /proc/cpuinfo

Información sobre el procesador.

$ cat /proc/devices

Información sobre dispositivos en uso.

Notas

syslogd registra los mensajes que los programas y el sistema ofrecen.
klogd es un demonio del sistema que intercepta y registra los mensajes del núcleo.
lsdev viene en el paquete procinfo.
sensors viene en el paquete lm-sensors.
Dispositivo de bloques:aquellos que almacenan información en bloques de tamaño fijo,
(cada uno con su dirección) y utilizan los buffers del sistema (memoria temporal),
Dispositivo de caracteres: aquellos que envian o reciben un flujo de datos de forma
secuencial y sus procesos de lectura/escritura no poseen buffer.por ej. el ratón
DMA(Acceso Directo Memoria): es la manera en que los dispositivos se comunican directa-
mente con la memoria sin intervención del procesador.Cada controlador dispone de una
linea o canal DMA de acceso directo.
IRQ (solicitud de interrupción): es la manera en que el controlador de un dispositivo
solicita al procesador que le atienda porque va a comunicarle algún suceso,cada contro-
lador tiene una linea IRQ distinta.
IO Ports (puertos de entrada/salida): se trata de una abstracción (que se corresponde
con un dispositivo)a través de la cual un dispositivo intercambia datos con el sistema.
Tienen una dirección(en hexadecimal)que los identifica.

8. Redes


# /etc/init.d/networking start

Inicia los servicios de red.

# /etc/init.d/networking restart

Reinicia los servicios de red.

# /etc/init.d/networking stop

Para los servicios de red.

# ifconfig [interfaz opciones IP]

Información y configuración de interfaces de red.

# ifconfig

Muestra el estado de los interfaces activos.

# ifconfig -a

Muestra el estado de todos los interfaces.

# ifconfig ppp0

Muestra el estado de ppp0

# ifconfig eth0 up

Activa eth0.

# ifconfig eth0 down

Cierra eth0.

# ifconfig eth1 address 156.35...

Asigna una dirección al interfaz especificado.

# iwconfig

Similar a ifconfig pero sólo para interfaces wireless

# ifup interface

Habilita la interface especificada,ejemplos: ifup eth0 ;ifup ppp0

# ifdown interface

Deshabilita la interface especificada,ejemplos: ifdown eth0 ;ifdown ppp0

# dhclient eth0/eth1

Inicia conexión dhcp mediante el cliente dhcp-client.

# pump -i eth0/eth1

Inicia conexión dhcp mediante el cliente pump.

# pppoeconf

Programa para configurar conexiones pppoe.

# pppconfig

Programa en modo texto para configurar una conexión ppp.

# pon

Establece la conexión ppp a internet.

# plog

Monitoriza la conexión ppp.

# poff

Finaliza la conexión ppp a internet.

$ finger usuario

Informa sobre un usuario conectado al sistema.

$ finger @servidor

Informa sobre todos los usuarios conectados a un servidor (nombre o IP)

$ finger usuario@servidor

Informa sobre un usuario conectado a un servidor

$ ping google.com

Verifica la conexión,en este caso con http://www.google.com/ (Ctrl+Z pone fin)

$ traceroute microsoft.es

Muestra la ruta que los paquetes de datos han seguida hasta la máquina de destino.

$ mtr rediris.es

Combinación de ping y traceroute.

$ whois esdebian.org

Información sobre éste,nuestro dominio.

$ host -v -a telefonica.com

Determina la ip de un nombre o el nombre de una ip.(host -v -a 194.224.55.221)

$ iptraf

Monitoriza tráfico de redes(ncurses)

# tethereal

Versión para consola de ethereal,un analizador del tráfico de red (sniffer).

# ettercap

Sniffer/interceptor/logger para redes LAN con switchs basado en ncurses.

$ nmap

Escaner de puertos.

# fail2ban

Escanea logs como /var/log/auth.log y banea las IP con demasiados errores de conexión.

# snort

Sniffer de paquetes y un detector de intrusiones en una red (NIDS).

# aide

Detector de intrusiones en un único Servidor, PC o host.(HIDS).

# portsentry

IDS que detecta escaneos de puertos y reacciona a un ataque.

3 chkrootkit

Detector de rootkit.

w3m,lynx,links,links2,elinks

Navegadores web,elinks soporta SSL con lo que podremos acceder a correo web.

Irssi,*censored*x,WeeChat-curses

Clientes IRC( Internet Relay Chat) )

mutt,mush,pine,elm

Clientes de correo(MUA).

cabber

Cliente jabber( protocolo libre para mensajería instantánea.)

Centericq

Cliente de mensajeria multiprotocolo (ICQ,Yahoo,AIM,MSN,IRC,Jabber)

ncftp

Cliente ftp (File Transfer Protocol) basado en ncurses

ftp-ssl

Cliente ftp con soporte de cifrado SSL y TSL.(dependiendo de la otra parte)

telnet-ssl

Cliente telnet(acceso remoto) con soporte de cifrado SSL,(dependiendo de la otra parte)

ssh

Cliente ssh (Secure SHell),acceso remoto cifrado,forma parte del paquete openssh-client

rtorrent, bittornado

Clientes bittorrent.Bitornado es una versión mejorada del cliente homónimo bittorrent.

$ talk usuario

Entabla una conversacion con un usuario del sistema.

$ talk usuario@sistema

Entabla conversacion con un usuario de otro sistema(entre máquinas UNIX)

$ mesg -n

Anula la notificacion de comunicacion de talk o write

$ mesg -y

Habilita la llegada de notificaciones de talk o write

$ write usuario

Manda un mensaje a un usuario del sistema.

$ netstat -napt

Saber qué puertos tiene abiertos nuestro sistema

n

No resuelve las direcciones a sus nombres DNS. Esto hace más rápida la ejecución.<

a

Muestra todos las conexiones,incluídas las que están escuchando.

p

Muestra el número y nombre del proceso,dueño de dicha conexión.

t

sólo muestra conexiones tcp

$ jigdo-lite fichero.jigdo

Programa interactivo que permite la descarga y/o \"actualización\" de una imagen ISO; descarga los ficheros de una imagen ISO mediante wget, los une y forma al vuelo una copia de la imagen ISO original. Pero si ya tenemos una imagen en el disco o un CD, bastaría con indicarle la ruta a la misma para que se actualizara. Para ambos casos hay
que descargar previamente los ficheros .jigdo y .template asociados a la imagen.

$ jigdo-file

Herramienta para generar los ficheros .jigdo y .template de una imagen

$ wget [opciones] URL

Gestor de descargas.

-p

descarga web completa.

-r

recursivo.

-k

Convierte los enlaces absolutos en relativos.

-c

Reanuda la descarga de un fichero parcialmente descargado.

-l6

profundidad de recursión (5 por defecto)

-A formato

formato para descargar.

-nH

hace que no se cree el subdirectorio localhost.

--cut-dirs=n

elimina n número de directorios dentro de la jerarquia.
Ejemplo 1ºw

$ get -A zip URL

Bajaría todos los archivos zip de una página web.
Ejemplo 2º: nos queremos descargar el manual nano.pdf que está en http://www.manuales.com/informática/editores/nano.pdf

$ wget -nH --cut-dirs=2 http://www.manuales.com/informática/editores/nano.pdf

nos bajaría sólo el manual sin crearnos ningún nuevo directorio en nuestra home.
Ejemplo 3º: nos queremos bajar el manual de Arocena en formato html cuya primera página está en: http://usuarios.lycos.es/ortihuela/index.htm ,pues entonces:

$ wget -r -nH http://usuarios.lycos.es/ortihuela/index.htm

nos bajaría todo el contenido del curso (ficheros .html,.css,.jpg,etc) al directorio /ortihuela

Fuente: http://www.esdebian.org/wiki/lista-comandos-gnulinux-ii

miércoles, 21 de marzo de 2012

Detener e iniciar servicios durante y después del arranque de Linux

Generalidades

/sbin/init es el primer proceso y padre del resto.

Runlevel
El término runlevel o nivel de ejecución se refiere al modo de operación del Sistema Operativo.
La mayor parte de usuarios de sistemas puede comprobar el nivel de ejecución actual con cualquiera de los comandos siguientes:
$ who -r           # como cualquier usuario
$ runlevel         # como usuario root

Los 7 niveles de ejecución (runlevels) estándar
Nivel de ejecución
Nombre o denominación
Descripción
0
Alto
Alto o cierre del sistema (Apagado).
1
Modo de usuario único (Monousuario)
No configura la interfaz de red o los demonios de inicio, ni permite que ingresen otros usuarios que no sean el usuario root, sin contraseña. Este nivel de ejecución permite reparar problemas, o hacer pruebas en el sistema.
2
Multiusuario
Multiusuario sin soporte de red.
3
Multiusuario con soporte de red.
Inicia el sistema normalmente.
4
No usado.
5
Multiusuario gráfico (X11)
Similar al nivel de ejecución 3 + display manager.
6
Reinicio
Se reinicia el sistema.


Modificación de servicios de al Inicio del Sistema
El script /etc/init.d/rc recibe un argumento con el runlevel a arrancar. Va al directorio /etc/rcX.d/, donde X es el runlevel, ejemplo:
/etc/init.d/rc 0
/etc/init.d/rc 1
/etc/init.d/rc 2
/etc/init.d/rc 3
/etc/init.d/rc 4
/etc/init.d/rc 5
/etc/init.d/rc 6
En cada uno de los directorios hay enlaces simbólicos que apuntan a scripts en /etc/init.d que son los que realmente arrancan los servicios e inicializan el teclado, sincronizan el reloj hardware, etc
Los enlaces simbólicos en /etc/rcX.d empiezan por S o K (start) o (kill), seguidos de dos dígitos y apunta a un script con el mismo nombre pero sin S ni K ni los dos dígitos en /etc/init.d

Para que un servicio NO se cargue durante el inicio del sistema se debe cambiar en /etc/rcX.d la S, de start, inicial por la K, de kill, ejemplo:
sudo mv S20ntop K20ntop

Para que SI se cargue :
sudo mv KNombreServicio SNombreServicio

En ambos casos se debe incluir los dos dígitos entre S ó K y el nombre del servicio. Éste número indica el orden en que arrancará el servicio. A un número menor se arrancará antes que otro con uno mayor.

Si lo que queremos es parar, arrancar o reiniciar un servicio después del arranque del sistema, se puede ejecutar la siguiente línea:
/etc/init.d/NombredelServicio {start|stop|restart|force-reload-reload}
sudo /etc/inti.d/firebird2.1-super restart

jueves, 8 de marzo de 2012

sábado, 7 de enero de 2012

Connect the port VGA with xrandr

En diversas versiones de Linux es necesario habilitar la salida de video VGA enviar la señal a monitores adicionales, proyectores o LCD. En este ejemplo se muestra la configuración para haiblitar la salida en Ubuntu 10.04:

user@hostname:~$ xrandr -q
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 4096 x 4096
VGA1 disconnected (normal left inverted right x axis y axis)
LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 303mm x 190mm
   1280x800       60.0*+
   1024x768       60.0 
   800x600        60.3 
   640x480        59.9 
TV1 disconnected (normal left inverted right x axis y axis)



user@hostname:~$ xrandr --output VGA1 --auto

user@hostname:~$ xrandr -q
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 4096 x 4096
VGA1 connected (normal left inverted right x axis y axis)
   1920x1080      60.0 +
   1280x1024      60.0 
   1360x768       60.0 
   1280x720       60.0 
   1024x768       60.0 
   800x600        60.3 
   640x480        60.0 
LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 303mm x 190mm
   1280x800       60.0*+
   1024x768       60.0 
   800x600        60.3 
   640x480        59.9