Páginas

viernes, 27 de febrero de 2009

Sistemas operativos No UNiX.

Durante la práctica de laboratorio del día de hoy, hemos instalado xp en un pc Acer solo sacarlo de la caja y que trae el vista preinstalado. El boot loader vistabootpro sirve para decidir con cual sistema arrancar. En un segundo portátil instalamos un sistema derivado de UNiX. Todo funciono a la perfección.

Dividiremos en tres partes: la primera Instalar xp en un portatil con problemas para restaurar vista desde un dvd de recuperacion o particion. La segunda instalar en un portatil nuevo que trae como s.o. vista, instalar el xp y un boot loader para elegir con que sistema operativo iniciar el ordenador. La tercera instalar GNU-Linux.

Primer supuesto:
Esto tiene que ver con el AHCI es una tecnologia del HDD (disco duro) utilizadar por el vista. El xp no utiliza esta tecnologia. Otra cosa importante es que el vista utiliza unas paritiones un poco peculiares. Para instalar el xp encienda su ordenador, dirijase a la BIOS y en DISK HARD, SATA sustituya AHCI por IDE NATIVE. Guarde los cambios y reinicie. Borre la partición de datos desde la utilidad que el sistema operativo pone a su disposicion. Por último, instale VISTABOOTPRO.

Utilice un cd llamado DIAMOND o en su defecto el SYSTEM RESCUE de LINUX, (live-cd's). Con el diamond elija la opcion PEBUILDER , despues de cargarse elija programas, paragon partition (no el partition magic) y redimensione o haga espacio para instalar el xp, puede usted dejar intacta sus particiones de vista. Aunque aparezca o aparezcan en color rojo la particion o particiones del vista, no quiere decir que no existan es que el programa de particionado no las reconoce bien, pero estan ahi y en buen estado. Cree una particion ntfs de, por ejemplo, 20 GB para instalar el xp, aplique los cambios y salga del PeBulder. Si lo considera oportuno y tiene espacio suficiente cree una segunda particion de datos. Por último instale el xp, al finalizar instale el VISTABOOTPRO y establezca el sistema operativo que arrancará por defecto.

Si utiliza el System rescue de Linux, para realizar el particionado después del primer intro para iniciar linux (live-cd, no afecta su disco duro, esta en memoria), le preguntará sobre el idioma del teclado o keyboard: teclee el numero 13 (teclado en español), luego intro. cuando se cargue (sera muy rapido), teclee: startx para entrar a la interfaz grafica y desde aqui utilice gparted (modo grafico) para realizar las particiones. Verá las particiones y podrá modificarlas con total trasparencia, las reconoce perfectamente.

Segundo supuesto:
Portátil Acer... vista preinstalado.

Entrar en la BIOS cambiar en DISC HARD Sata AHCI (no soportado por xp), por IDE NATIVE
Guarde los cambios y reinicie. El vista se instala y realiza las "comprobaciones" de lugar.

Ya dentro del sistema y por medio de la herramienta de disco del sistema elimine la partición de datos. Instale el boot loader VISTABOOTPRO y reinicie.

Utilice el cd DIAMOND para crear dos particiones ntfs una para la instalación del xp y otra para datos. Arranque el DIAMOND y elija PeBuilder (live-cd). Después de entrar en el sistema abra el programa Partition Manager para crear las particiones. Reicicie.

Si utiliza el SYSTEM RESCUE de GNU-Linux podrá utilizar el gparted (gestor de particiones de Linux en modo gráfico), para crear las particiones.

Reinicie e instale xp. Al finalizar instale el VISTABOOTPRO. Desde este boot loader apareceran los dos sistemas operativos. Elija el que desee que se inicie por defecto.

Por último cree imágenes (utilizando el DIAMOND opcion HIREN), de sus sistemas operativos para restaurar la imagen cuando cualquiera de ellos o los dos se corrompan, cosa habitual en sistemas No UNiX. Realice una imagén por partición.

Tercer supuesto:
Para instalar un sistema derivado de UNiX como GNU-Linux, elimine la partición de datos desde vista con la herramienta de disco del propio sistema. Reinicie y desde el cd o dvd de su distro GNU-Linux cree dos particiones ext3 raiz y home, y una particion de intercambio swap cuyo tamaño será el doble de la memoria ram instalada en su sistema. Instale normalmente y el gestor de arranque GRUB se encargará de bootear los dos sistemas operativos y elegir con cual iniciar.

viernes, 20 de febrero de 2009

Edimax EW-7318USg

En UBUNTU Intrepid el módulo rt73 utilizado por la tarjeta wireless (usb), marca Edimax EW-7318USg viene compilado en el kernel. Por esta razón sera muy sencillo utilizar esta tarjeta wifi tanto en modo manager como en modo Monitor (Auditorias wireless). Esta tarjeta incluye una antena de 4dbi con conector RP-SMA que puede sustituirse por una más potente.

Los pasos para conseguirlo son los siguientes:
1.- Utilice, preferiblemente wicd netowork manager. Descarge desde internet la aplicacion wicd wicd_1.5.3_all.deb. Desinstale network-manager-gnome: Abra una terminal y teclee:

$ sudo apt-get remove network-manager-gnome network-manager

Ahora coloquese en la carpeta en la que descargo wicd
$ cd wicd

instalelo tecleando:
$ dpkg -i wicd_1.5.3_all.deb

Al finalizar el proceso de instalación reinicie (reboot).

Utilice el comando lsmod para ver los módulos referentes a la tarjeta wifi:

$ lsmod | grep rt73

Module Size Used by
rt73usb 30464 0
crc_itu_t 10112 1 rt73usb
rt2x00usb 18816 1 rt73usb
rt2x00lib 36224 2 rt73usb,rt2x00usb
usbcore 149360 8 rt73usb,rt2x00usb,usb_storage,libusual,usbhid,uh

2.- Conecte su tarjeta a un puerto usb libre

3.- Ejecute desde la linea de comandos:

$ ifconfig wlan1 down
$ rmmod rt2570
$ rmmod rt73
$ modprobe rt73
$ ifconfig wlan1 up
$ iwconfig

Si prefiere utilice un script con dichos comandos guardelo como ralink.sh y con los permisos adecuados:

rwx para el propietario.

4.- Haga click en el icono de wicd manager.

Driver WPA Suplicant: wext
Interfaz inalámbrica wlan1
Aceptar
click en Refrescar y verá las redes wireless disponibles.

5.- Introduzca el tipo y la clave de red Aceptar y ya está conectado a Internet.

Para utilizarla en auditorias wireless habilite el modo monitor de esta excelente y nada cara tarjeta (16 euros),
con airmon-ng start rausb0.
Si lo considera oportuno utilice el script airoscript.sh Basado en e Code by Daouid, Mods, Tweaks, CurioCT and others.
Puede descargarlo desde Internet.

jueves, 5 de febrero de 2009

Redes - Hardware de red

GNU-Linux crea interfaces de red en memoria cuando el núcleo reconoce que hay un NIC u otro dispositivo de red conectado al sistema. Estas interfaces son distintas a otras interfaces de Linux y no tienen un archivo de dispositivo correspondiente en el directorio /dev. Si el soporte para una tarjeta de red (Network interfaces card, NIC), en particular no está integrado en el núcleo, hay que indicarle a Linux que cargue un módulo de núcleo específico para poder usar el NIC. Hay más de cien de estos módulos en el directorio /lib/modules/2.6.XX-XX/kernel/net (XX-XX es la versión del núcleo).

Cuando instala Ubuntu, la detección automática del hardware detecta y configura el sistema para poder usar cualquier tarjeta que haya instalado. Si lo reeemplaza por otro de una marca y modelo diferentes, el sistema no lo detectará ni inicializará automáticamente a menos que configure Linux para utilizar la detección automática de hardware de inicio. Debería Linux detectar la presencia del nuevo NIC durante la instalación . Si no utiliza la detección y configuración automática de hardware, puede inicializar el hardware de red de esta manera:

1. Editar manualmente el archivo /etc/modprobe.conf para forzar al sistema a que reconozca el nuevo hardware durante el inicio.
2. Cargar o descargar manualmente el módulo del núcleo del nuevo dispositivo con el comando modprobe.


Editar el archivo /etc/modprobe.conf

Este archivo puede no estar presente la primera vez que lo busque, asi que es posible que necesite crear un archivo vacío en un editor de texto. Edite manualmente el archivo /etc/modprobe.conf para añadir una entrada de dependencia de módulo, también conocida como una directiva, para admitir al nuevo NIC o dispositivo de red. Incluye el nombre del dispositivo y su entrada de núcleo correspondiente.

Por ejemplo, si tiene un NIC Ethernet Pro instalado, la entrada sería algo así:

alias etho eepro100

Consulte el manual de modprobe.conf o busque información por Internet para obtener más información sobre el uso de entradas.

Para habilitar el NIC anterior use la línea siguiente:

$ sudo modprobe eepro100

Pulse Intro, aparecerá este dispositivo en los mensajes del búfer circular del núcleo que podrá visualizar con el comando dmesg.

Tome en cuenta que aún no se ha asignado dirección IP ni otras configuraciones al dispositivo. Linux nombrará al primer dispositivo Ethernet eth0, al segundo eth1, etc.

Configuración de la interfaz de red desde la línea de comandos

Los comandos ifconfig y route se utilizan para la configuración de red. El comando netstat muestra información sobre las conexiones de red.

/sbin/ifconfig

ifconfig puede utilizarlo para:

* Activar el NIC
* Cambiar la dirección IP.
* Cambiar máscara de red.
* Cambiar la dirección de difusión de la máquina.
* Desactivar la interfaz.
* Crear un alias del IP para permitir más de una dirección IP en el NIC.
* Establecer una dirección para una conexión PPP.

Ejemplos:
ifconfig eth0 up
ifconfig eth0 10.10.10.12
ifconfig eth0 netmask 255.255.255.0
ifconfig eth0 broadcast 10.10.10.255
ifconfig eth0 down
ifconfig eth0:0_: [numero] 10.10.10.10
ifconfig eth= pointopint_10.10.10.20

Para mostrar el estado de las interfaces activas se utiliza ifconfig sin argumentos.

wlan1 Link encap:Ethernet direcciónHW 00:21:91:99:2f:85
inet dirección:192.168.1.40 Difusión:192.168.1.255 Máscara:255.255.255.0
dirección inet6: fe80::221:91ff:fe99:2f85/64 Alcance:Vínculo
UP BROADCAST MULTICAST MTU:1500 Métrica:1
RX packets:1566 errors:0 dropped:0 overruns:0 frame:0
TX packets:1701 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:1000
RX bytes:1392697 (1.3 MB) TX bytes:239694 (234.0 KB)

En este caso la información corresponde a una conexión inalámbrica - wireless

Puede configurar y activar el dispositivo si especifica un nombre de host o dirección IP y la información de red. Para activar la interfaz eth0 con una dirección IP específica:

$ sudo ifconfig eth0 192.168.1.50 netmask 255.255.255.0 up

Si tiene un host definido en el archivo /etc/hosts de la máquina:

$ sudo ifconfig eth0 foo.camilo.com up

/sbin/route

El comando route se emplea para construir tabla de rutas (en memoria) implementadas para los paquetes de enrutamiento y mostrar información de enrutamiento. Se utiliza después de que ifconfig ha inicializado la interfaz. Se utiliza para establecer rutas estáticas tanto a otras redes a través de una puerta de enlace como a otros hosts.

$ route
Tabla de rutas IP del núcleo
Destino Pasarela Genmask Flags Métric Ref Use Interfaz
192.168.1.0 * 255.255.255.0 U 0 0 0 wlan1
default 192.168.1.1 0.0.0.0 UG 0 0 0 wlan1

Un asterisco significa que los paquetes van directamente al host. U verifica que la ruta está activada y G que Destino requiere el uso de una puerta de enlace.

El comando route utilizado con la opción add puede añadirse a la tabla. Puede especifica un host con -host o red con -red como destino.

$ sudo route add default gw 192.168.1.1


Archivos de configuración de red

* /etc/hosts: Direcciones, nombre de hots y alias.

$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 gnu-linux

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

* /etc/services: Conexiones de red y puertos.
* /etc/nsswitch.conf: Configuración del servicio de información de red de Linux. Especifica el orden de acceso a los servicios del sistema.

$ cat /etc/nsswitch.conf

passwd: compat
group: compat
shadow: compat

hosts: files dns mdns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis

* /etc/resolv.conf: Configuraciones de búsqueda de dominios del servicio de nombre de dominio.

$ cat /etc/resolv.conf
nameserver 80.58.61.250
nameserver 80.58.61.254

* /etc/host.conf: Orden de búsqueda de información de red (predeterminada, primero /etc/hosts y luego DNS).

martes, 3 de febrero de 2009

Redes TCP/IP

El excelente soporte con el protocolo de internet TCP/IP permite que GNU-Linux pueda comunicarse con todas las vaiantes de UNiX, incluidos Mac OS X, NetWare (IPX), etc.

El componente principal de cualquier red basada en hosts UNiX es la suite de protocolos TCP/IP (Transport Control Protocol/Internet Protocol). Los protocolos que componen esta suite son IP, TCP y UDP (Universal Datagrama Protocol). IP es el protocolo base. La suite TCP/IP esta basada en paquetes, los datos se fragmentan en el punto de transmisión para ser transmitidos al punto de recepción. Los datos viajan como paquetes IP, razón por la que las direcciones se denominan direcciones IP. Es el nivel más bajo de la suite.

TCP es un protocolo de conexión. Primero se establece la conexión entre dos equipos, luego se envía el flujo de datos. En el equipo receptor, se ordenan los paquetes y se envían al puerto de la aplicación adecuado.

UDP es un protocolo sin conexión. Las aplicaciones que lo utilizan seleccionan el destino y empizan la tranmisión. Se usa para pequeñas cantidades de datos o en redes veloces y fiables.

Si su tarjeta de red no ha sido configurada durante la instalación de UBUNTU, puede utilizar el comando ifconfig en la línea de comandos para editar la información de red o añadir o eliminar dispositivos de red del sistema. Hay cientos de comandos y utilidades de red incluidas en su distribución.

Las direcciones IP de internet conocidas como direcciones IP públicas son diferentes a las utilizadas internamente en una LAN. Asignadas (para Europa) por el Réseaux IP Européens (http://www.ripe.net). La agencia asigna bloques de direcciones IP a los proveedores de servicios de Internet, que los ISP asignan a sus abonados. El formato actual de direcciones IP es IPv4. En el que una dirección TCP/IP se expresa como una serie de 4 números decimales, (un valor de 32 bits, como 192.168.1.45). Cada conjunto de números se denomina octeto (ocho unos y ceros, 10000000 para representar 128, va desde cero a 255.

Clase A: Redes definidas por los dos primeros octetos, el primero va desde 1 a 126. Hay 126 redes Clase A, cada una esta compuesta de hasta 16,777,214 hosts. La red 10. está reservada el uso de red local. La red 127. reservada para la dirección loopback 127.0.0.1. TCP/IP utiliza la dirección de loopback para permitir que los programas clientes y servidores de red de GNU-Linux se comuniquen en el mismo host. En la LAN nadie podrá ver ni acceder a esta dirección.

Clase B: Redes definidas por los dos primeros octetos, el primero desde 128 a 191. La red 128. también esta reservada para la red local. Hay 16,382 redes de Clase B, c/u de ellas con 65,534 posibles hosts.

Clase C: Red definida por los tres primeros octetos, el primero dese 192 a 223. La red 192. está reservada para la red local. Podría haber 2,097,150 redes de Clase C de hasta 254 hosts cada una.

Las máscaras de red también determinan la clase a la lpque pertenece una red. La máscara de red determina que parte de una dirección IP representa a la red y que parte representa al host. Las máscaras de red comunes de las diferentes clases son:

1. Clase A: 255.0.0.0
2. Clase B: 255.255.0.0
3. Clase C: 255.255.255.0

El sistema actual para direcciones IPv4 limita el número de direcciones disponibles a más o menos 4,100.000.000. Actualmente hay una escasez de direcciones disponibles. Para resolver este inconveniente se está implementando un nuevo sistema llamado IPv6. Solución para para las direcciones basada en direcciones de 128 bits. Proporciona suficiente espacio com para incluir información sobre un dispositivo o host específico, como GPS o número de serie.

Enmascaramiento de IP

Tres bloques de direcciones IP están reservados para el uso interno de redes y hosts indirectamente a Internet:

* Clase A: Con rango de direcciones desde 10.0.0.0 hasta 10.255.255.255
* Clase B: Rango de direcciones desde 172.16.0.0 a 172.31.255.255.
* Clase C: Con rango de direcciones desde 192.168.0.0 hasta 192.168.255.255

Utilizadas para LAN domésticas o empresarial. La clase dependerá del número de hosts de la red.
Puede acceder a internet desde la red interna a través de un ordenador que ejecute Linux, un enrutador de banda ancha o de línea telefónica. El hosts o dispositivo se conecta a Internet y es utilizado como puerta de enlace a Internet para enviar información desde y hacia la LAN.

Un ordenador usado de este modo tiene dos interfaces de red. Una conectada a Internet y la otra a los ordenadores de la LAN a traves de un conmutador o concentrador. Los datos se transmiten entre Internet y la LAN utilizando NAT (Network address translation, traducción de direcciones de red), lo que en círculos Linux se conoce como enmascaramiento IP.

Subredes
Las redes de Clase A y Clase B pueden contener redes independientes llamadas subredes. Se consideran parte de la porción correspondiente al host de una dirección para las definiciones de clase de red. Por ejemplo, en la red Clase B 128., puede tener un ordenador con una dirección 128.10.10.10 y otro con una dirección 128.10.200.20; estos están en la misma red 128.10., pero tienen subredes diferentes, 128.10.10. y 128.10.200. Para que estos dos ordenadores se puedan comunicar se necesita un enrutador o conmutador. Las subredes son útiles para separar grupos de trabajo dentro de una empresa o para evitar que la información de un grupo pase a otros de miembros de un grupo de trabajo específico.

Asegúrese que el uso de la red está acompañado por una política de seguridad que haga hincapié en varios niveles de acceso seguro, con protección integrada en cada servidor y estación de trabajo. Algo que puede realizarse con facilidad en sistemas GNU-Linux.

Redes - Puertos

La mayoría de servidores de una red seguramente desempeñan más de una tarea. Ofrecen tanto páginas estándar como seguras. Es posible que además ejecute un servidor FTP en el mismo host. A las aplicaciones se les asignan puertos que estas utilizan para conectarse directamente con servicios de software especificos. Estos puertos ayudan a que TCP/IP distinga servicios para que los datos lleguen a la aplicación correcta. En el archivo /etc/services de su distribución GNU-Linux, verá los más utilizados puertos y su uso:
.
.
www 80/tcp http # WorldWideWeb HTTP
www 80/udp # HyperText Transfer Protocol
ftp-data 20/tcp
ftp 21/tcp
fsp 21/udp fspd
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp
pop3 110/tcp pop-3 # POP version 3
pop3 110/udp pop-3
.
.
Sepa que estos puertos no son fijos, puede configurar el servidor para que responda por puertos diferentes. Un ejemplo, aunque el puerto 22 aparece en /etc/services como el predeterminado para SSH usted puede configurar el servidor para que escuche en un puerto diferente editando el archivo de configuración /etc/ssh/sshd_config. La configuración predeterminada se parece a:

#Port 22

Si edita la entrada para cambiar el puerto asegúrese que el número de puerto que selecciona no esté siendo utilizado, por ejemplo:

Port 2444

Luego guarde los cambios y reinicie el servidor sshd.

Los usuarios remotos remotos deben acceder al host a través del mencionado puerto, utilizando la opción -p de ssh:

$ ssh -p 2444 ip_del_host_remoto.

lunes, 2 de febrero de 2009

Redes - interfaz loopback

"La vida es muy peligrosa. No por las personas que hacen el mal, sino por las que se sientan a ver lo que pasa". Albert Einstein.

Antes de poder conectarse a una red hay que crear una interfaz localhost, también llamada bucle local o lo. El protocolo TCP/IP utiliza esta interfaz para asignar una dirección IP al ordenador.

Comprobar la disponibilidad e la interfaz loopback

Para comprobar que hay una configurada ejecute el comando ifconfig, el resultado será similar a:

debian@gnu-linux:~$ ifconfig

lo Link encap:Bucle local
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Hot
UP LOOPBACK CORRIENDO MTU:16436 Metric:1
RX packets:1808 errors:0 dropped:0 overruns:0 frame:0
TX packets:1808 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:0
RX bytes:90400 (88.2 KB) TX bytes:90400 (88.2 KB)

La interfaz esta presente y activa. inet addr es el número IP asignado a localhost, 127.0.0.1. broadcast mask 255.255.255.0

Configurar la interfaz loopback manualmente

La dirección IP de la interfaz localhost esta especificada en un archivo de texto llamado /etc/hosts. El archivo es utilizado por el núcleo de GNU-Linux y otras herramientas de red para permitir que accedan a las direcciones IP y nombres de host locales:

debian@gnu-linux:/etc$ cat /etc/hosts

127.0.0.1 localhost.localdomain

El término interfaz loopback indica a los controladores de red Linux que el ordenador se comunica con una red compuesta por un solo ordenador. El núcleo envía el tráfico desde y hacia el mismo ordenador. Es inexistente para el mundo exterior, solo para el ordenador local.
Las máquinas conectadas en red a una LAN utilizarán esta dirección IP para su localhost. Para configurarla manualmente edite el archivo /etc/hosts y añada la entrada localhost y los comandos ifconfig y route para crear una interfaz:

debian@gnu-linux:~$ sudo /sbin/ifconfig lo 127.0.0.1
debian@gnu-linux:~$ sudo /sbin/route add 127.0.0.1

Después de creada la interfaz localhost en memoria, la dirección IP 127.0.0.1 es agregada a una tabla interna también en memoria para que el código del núcleo pueda monitorizar las rutas a direcciones diferentes. Compruebe la interfaz con el comando ifconfig.
Utilice el comando ping para comprobar que la interfaz responde, algo así:


debian@gnu-linux:~$ ping -c 4 localhost

PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.046 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.045 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.045 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.054 ms

--- localhost ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.045/0.047/0.054/0.007 ms

Utilice la opción -c para limitar el número de intentos. El comando devolverá información relacionada con la velocidad de ida y vuelta del paquete enviado para comprobar el host, en este caso localhost.

---
Configurar dos interfaces lógicas de red para eth0, por ejemplo, portátil que usamos en casa y en el trabajo:

    - Definiremos dos interfaces lógicas casa y curro:

      iface casa inet static
          address 192.168.0.2
          netmask 255.255.255.0
          gateway 192.168.0.1
      iface curro inet static
          address 81.201.3.123
          netmask 255.255.0.0
          gateway 81.201.3.1

    - Conectarnos en casa, ejecutamos:
      sudo ifup eth0=house
   
     - En el trabajo, ejecutamos:
      sudo ifdown eth0
      sudo ifup eth0=job

domingo, 1 de febrero de 2009

Variables del entorno

Las variables del entorno almacenan valores que describen las propiedades del entorno de trabajo. Un usuario puede definir sus propias variables o modificar las ya existentes.

Para asignarle valor a una variable en el shell se emplea el operador de asignación tradicional entre el nombre de la variable y el valor asignado (no deben haber espacios intermedios). Ejemplo:
$ MENSAJE = "Hola Barcelona"

Para acceder al valor de una variable en el shell se emplea el carácter $ seguido por el nombre de la variable. Para imprimir en la terminal el valor de una variable se puede utilizar el comando echo. Ejemplo:
$ echo $MENSAJE
Hola Barcelona

Dentro de un shell se pueden ejecutar otros shells que serían hijos del primero (subshells) heredando todo o parte del entorno de trabajo del padre. Para que una variable mantenga su valor en los shells hijos es necesario indicarlo explícitamente mediante el comando export. Ejemplo:
$ export MENSAJE

Tanto la asignación del valor como el exportar una variable se pueden hacer a la vez:
$ export MENSAJE="Hola Barcelona"

Para ver las variables del entorno definidas se puede emplear el comando set. Este además se relaciona con las opciones que es otra forma de regir el comportamiento del shell. Las opciones se activan (on) o desactivan (off). Estas se utilizan para indicar propiedades del shell muy específicas por lo que no nos vamos a detener en ellas. Si se desea conocer más al respecto se puede hacer $ help set | less.

Para eliminar el valor de una variable se emplea el comando unset. Ejemplo:
$ unset MENSAJE

Algunas variables del entorno en bash son:

PATH: guarda la secuencia de caminos donde el shell busca los programas que se intenten ejecutar en la línea de comandos cuando no se utilizan los caminos absolutos. Estos caminos se separan por el carácter ``:''

Ejemplo:
$ echo $PATH
/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin

Para añadir un nuevo camino puede hacerse:
$ export PATH = $PATH: /bin

USER: contiene el login del usuario actual.

PAGER: almacena el lector utilizado por defecto por algunos programas. Por ejemplo, el comando man utiliza esta variable para determinar que paginador empleará, aunque primero chequea otra variable llamada

MANPAGER y si esta no tiene valor entonces acude a PAGER, que de no tener valor tampoco, asumirá al less como paginador por defecto. También asociada a man existe la variable MANPATH donde se especifican los caminos de los manuales que despliega man y LANG para indicar el idioma.

Ejemplo:
$ export PAGER=more
$ man bash

HOME: guarda el directorio base del usuario actual.

Ejemplo:
$ echo $HOME
/home/usuario

EDITOR: contiene el editor por defecto del usuario actual. De no tener valor asociado se utiliza vi. En entornos gráficos se pueden indicar editores visuales aunque para ello se prefiere emplear la variable

VISUAL. Más adelante veremos un ejemplo del uso de EDITOR.

PS1: almacena la estructura del prompt principal del usuario. Permite una serie de macros.

Ejemplos:
\d : contiene la fecha del sistema.
\h : contiene el nombre de la máquina.
\T : contiene la hora del sistema.
\u : contiene el login del usuario.
\w : contiene el nombre completo del directorio de trabajo actual.
\W : contiene la base del nombre del directorio actual (Ej: para /home/usuario/doc base es doc).
\$ : si el ID del usuario es 0 (root) contiene el valor # y sino, $.
\# : contiene el número del comando actual desde la creación del shell.
El prompt principal por defecto tiene la forma: "[\u@\h \W]\$ "
$ export PS1="[\T,\u\#]\$" [14:12:15,usuario 315]$
$ cat >> .bashrc
export PS1="\u@gnulinux\W\$ "
^D (control + d)
lo verá asi: --> debian@gnulinux~$

Las tuberías (Pipes)

Si queremos procesar la salida estándar de un comando como la entrada estándar de otro comando, podemos guardar la salida estándar vía el comando de redirección a un archivo temporario:

$ Who > archivo.temp

Ejecutamos el comando who para ver quien esta ingresado en el sistema. La salida del comando who es un usuario por línea, que nos rinde información muy útil, la cual almacenamos en archivo.temp.

Luego corremos éste comando:

$ wc -l

Esta sentencia cuenta el número de líneas en archivo.temp. El resultado final es lo que deseamos saber, cuantos usuarios se encuentran ingresados (logged in) en el sistema.

GNU/Linux provee un método muy útil de acortar éste proceso. Con el uso del caracter de tubería (|),podemos combinar los comandos que ejecutamos previamente y combinarlos en uno sólo:

$ who | wc -l

El carácter de tubería le indica al shell que conecte la salida estándar (stdout) del comando a la izquierda (who), a la entrada estándar (stdin) del comando en la derecha (wc -l). Ahora la salida del comando who es automáticamente pasada al comando wc -l, sin la necesidad de tener que crear archivo.temp, que tuvimos que hacer anteriormente.

El resultado de éste comando, asistido por una tubería, es producir el número de personas que se encuentran ingresados en el sistema. También como resultado de filtrar con la tubería, vemos, que perdimos parte de la información del comando who, pero, ésto no tiene importancia, ya que sólo estamos interesados en el resultado final, que es el número de personas.

Al igual que en el caso de la redirección de I/O, ambos comandos involucrados en una tubería se ejecutan sin conocimiento de que están conectando sus flujos de salida a otro comando. El shell establece la conexión de tubería antes de ejecutar los comandos.

Ambos comandos son conectados por la tubería simultáneamente. Si el lector hace intentos de lectura en el momento en el que la tubería está vacía, el lector esperará en la tubería antes de continuar. Si se llena la tubería (en el caso de que exista un límite al tamaño de la tubería), el escritor espera hasta que alguna data haya sido removida desde la otra punta de la tubería.

Las tuberías sólo operan en los flujos de salida estándar de los comandos. Todo mensaje escrito al error estándar del comando será escrito a la pantalla del terminal, a menos que, éste sea redireccionado también por separado.

Las tuberías pueden ser usadas para conectar dos o más comandos, hacemos la mención en éste punto, ya que sólo hemos efectuado ejemplos con dos, por cuestión de brevedad. Conexiones de múltiples tuberías es cosa muy común en GNU/Linux, todo ésto es gracias a una clase general de utilitarios, mejor conocidos como filtros. Un filtro es un programa que lee los flujos de su entrada estándar (stdin), y escribe sus resultados a la salida estándar (stdout), y así llevando a cabo un filtrado a través de un sistema de tuberías.

En éste ejemplo mostramos una doble tubería:

$ who | grep tty | wc -l.

La salida del comando who es procesada por el comando grep, comando que filtra (elimina todas las líneas que no incluyen la cadena de caracteres pasada como argumento a grep) las líneas que no contienen la cadena “tty”. La salida es finalmente pasada por la tubería al comando wc, que procede a contar el número de líneas, que corresponde directamente al número de usuarios conectados en toda la red.

$ grep configure /etc/* 2>/dev/null.

Esta sentencia grep es usada para efectuar una búsqueda de todas las líneas de los archivos debajo del árbol /etc que contienen la cadena configure. Como ejecutamos el comando como un usuario sin privilegios, que no podrá abrir algunos archivos, nos devolverá muchos mensajes de error que dicen así: “permission denied”. Si redireccionamos el flujo de error al dispositivo nulo, sólo veremos en la pantalla las salidas validas.

dmesg | grep -i cpu (-i no distingue entre may y min. Mostrará la información del dmesg de palabras que contengan cpu).

cut -d: -f2 (cut divide la entrada de datos y la separa en base a caract definidas d (delimiter) seguido del carácter delimitador (:)

f (field) para extraer el campo deseado del comando cut

esperará que introduzcamos los datos. Si introducimos

dato:dato1:dato2:dato3

dato1 (que es el segundo dato)

echo “dato0:dato1:dato2:dato3” | cut -d: -f3

dato2

Si miramos el archivo /etc/passwd el separador de campos es :

¿Que comando desplegaria solo el nombre de los usuarios?

cat /etc/passwd | cut -d: f1.

¿Que haria el siguiente comando?

cat /etc/hosts | cut -do -f1.

cat /etc/hosts | cut -dc -f1.

La capacidad de poder conectar comandos de esta manera, para formar utilitarios grandes y poderosos, es uno de los aspectos de GNU/Linux que lo convierten en una herramienta verdaderamente productiva. Los utilitarios estándares muy a menudo sólo son pequeñas piezas con las cuales se construyen grandes herramientas a través del uso de tuberías y redireccionamiento. Sólo con mucha práctica es que esta destreza puede ser desarrollada.

Podemos construir poderosos comandos con el uso de tuberías, simplemente colocando una serie de filtros. Otros sistemas operativos sólo pueden lograr éste nivel de funcionamiento escribiendo funciones en programas.

Fuente: Antonio Perpiñan FCLD Fundamentos de Sistemas GNU/Linux http:codigolibre.org

Sistema de archivos

Practica.
Comandos para efectúar las tareas siguientes:

1.- Crear un sistema de archivos tipo ext3 en un disco de 200-MB hda3

®.- # mkfs -t ext3 /dev/hda3 400000

2.- Monte este sistema de archivos recién creado en /mnt/hda3. Cree el directorio si no existe ya.

®.­ # mount -t ext3 /dev/hda3 /mnt/hda3

3.- Crear un sistema de archivos tipo ext2 en un disco de 150-MB hda5

®.- # mkfs -t ext2 /dev/hda5 300000

4.- Monte este sistema de archivos en /mnt/hda5. Cree el directorio si no existe ya.

®.- # mkdir /mnt/hda5

# mount -t ext2 /dev/hda5 /mnt/hda5


Identificar Archivos:

# cd varios/
# file *
1. 000973: ASCII text
2. 000979: comands text
3. 001256: iAPX 386 executable not stripped
4. 001385: C source code
5. 001576: data


Comando(s) que usaría para identificar el contenido de cada archivo:

1.- El archivo 00973

®.- Lectura : less, more, tail, vi, cat

2.- El archivo 000979

®.- Lectura : less, more, tail, vi, cat

3.- El archivo 001256

®.- No se ejecuta; utilice el comando strings

4.- El archivo 001385

®.- Lectura : less, more, tail, vi, cat

5.- El archivo 001576

®.- No se ejecuta; utilice el comando strings


Examinar y Revisar Sistema de Archivos

Comandos para ejecutar lo siguiente:

1.- Colocar el número máximo reinicios en /dev/sda1 antes de ejecutar fsck a 20. Es decir , cuantas veces encenderemos nuestra maquina antes de realizar una revision para detectar inconsistencias en el sistema de ficheros.

®.- # tune2fs -c 20 /dev/sda1

1.1 Ver fecha del ultimo checked

®.- # tune2fs -l /dev/sda1|grep -i 'last cheked

1.2 Saber cuantos reinicios faltan para el proximo checked

®.- # tune2fs -l /dev/sda1|grep -i 'mount count'

1.3 Optimizar particion (-D Optimiza los directorios. -f Fuerza el análisis. -p Repara automáticamente todos los errores).

®.- # e2fsck -fdD /dev/sda1

1.4 Forzar el chequeo del disco cada vez que se pone en marcha el ordenador.
Crear un archivo vacio en la raiz del sistema:

®.- # touch /forcefsck

2.- Diga dos comandos para revisar los bloques defectuosos (bad blocks) en /dev/sda2 (con 65,535 blocks)

®.- # fsck.ext3 /dev/sda2 o badblocks /dev/sda2 65535

3.- Muestre el progreso (sin la ejecución actual) para una revisión del sistema de todos los sistemas de archi-
vos listados en el archivo /etc/fstab

®.- # fsck -NA

4.- Ejecute una revisión de sistema de archivos en /dev/ sda3 con barra de progreso, especificando que el sis-
tema de archivos es VFAT.

®.- # fsck -t vfat -Cvr /dev/sda3

Linux es genial!

Registro de Procesos GNU-Linux

Registro de proceso es una característica opcional del kernel que registra la información de cada proceso
que esta siendo utilizado en el sistema el mantiene información detallada sobre cada ingreso del usuario, uso
del CPU, uso de la memoria, transferencia de E/S y nombre de los comandos. Esta información se escribe a
un archivo de registro cada vez que un proceso sale, en esta seccion discutiremos lo siguiente:
· Habilitar registro de procesos
· Revisar información de los registros

Habilitar el Registro de los Procesos
El kernel es la fuente de toda la información que se acumula acerca del registro de los procesos; y por
eso, el primer paso es habilitar registro de proceso para asegurarse que el kernel tiene esta característica habi-
litada. Algunas distribuciones ya vienen en su kernel estándar con esta característica habilitado. Esta carac-
terística se llama BSD Process Accounting.

Una vez el kernel esta en capacidad de registrar proceso necesitara instalar software del manejo de regis-
tro de proceso, el software esta disponible en el GNU en un paquete llamado ACCT .

Registro de proceso no almacenan un archivo si este no existe. Y por esto necesitará asegurarse que el
archivo de registro este presente, sino tendrá que crearlo. Si no ha sido creado cree un archivo vacío y deter-
mina quien tú quiere que pueda leerlo.
# touch /var/log/acct
# chown root /var/log/acct
# chmod 0600

Talvez quiera permitir a algunos usuarios acceso a lectura del archivo, para que ellos puedan utilizar la
herramienta de registro. Debe hacer esto especificando el grupo dueño y una mascara de 0640 en vez de 0600.
Note que para una seguridad mas estricta, usted no querrá que los usuarios tengan acceso a toda la informa-
ción disponible. También tendrá que revisar los permisos en los archivos /var/log/savacct y a /var/log/usracct,
lo cual es utilizado como información cache para el comando sa. Tengan cuidado que algunas distribuciones
pueda ser que coloquen estos archivos de registro en /var/adm.

Después de haber instalado el paquete de registro de proceso talvez tenga que iniciarlo. Esto es causado
por el alto costo de recursos que este proceso de contabilidad produce. Para empezar este proceso ejecuta:
# /usr/sbin/accton /var/log/acct

Talvez quisiera modificar los scripts de inicio para activar este proceso cada vez que encienda el compu-
tador. Algunos comando que viene con el paquete (notablemente el comando (ac y last), actualmente usa el
archivo /var/log/wtmp para guardar su información. Este archivo no es manejado por el kernel, pero es escri-
to por cualquier programa que puede iniciar el script de login.

Revisar la Información de Registro
Una vez haya encendido el registro de procesos, podrá analizar la información que este genera. Existen
varios comandos disponibles para lograr esto, Ellos presentan la información en manera diferente,


Comando ac
El comando ac se utiliza para mostrar cuanto tiempo ha durado la seccion de un usuario en el sistema (ac
despliega esta información en horas), se puede dar la información por días y por usuarios. Sin ninguna opción
el comando muestra el total de hora utilizada por todos los usuarios logueado en el sistema, como se mues-
tra abajo:
$ ac
total 90.12

$ ac debian
total 90.14

Para mostrar el total de hora logueado por cada usuario utilice la sintaxis siguiente:
$ ac -p
debian 89.83
total 89.83

Parta mostrar el uso diario para un usuario de nombre ivelis, use la siguientes sintaxis:
$ ac -d devian
Jan 17 total 2.01
Jan 18 total 4.83
Jan 19 total 13.91
Today total 3.51

Un problema con el comando ac es que si un usuario ha ingresado en más de un terminal a la vez el tiem-
po se sumara a un total de ambas terminales y ac mostrara el tiempo total, esto también es un problema con
usuario que utilizan xterm localmente y usuario que ingresan en varios secciones de telnet al mismo tiempo.


Comando last
El comando last muestra el tiempo especifico que los usuarios entraron y salieron del sistema. Esta lista
puede ser extensa si existen muchos usuarios en el sistema. También podemos a traves de argumentos pasar-
le el nombre del usuario que nos interesa en particular. Aquí les doy dos ejemplos:
[root@gnulinux /root]# last
reboot system boot 2.6.24-16-generi Tue Jan 6 06:46 - 08:08 (01:22)
debian pts/1 :0.0 Mon Jan 5 13:52 - down (00:01)
root pts/0 :0.0 Mon Jan 5 12:30 - down (01:22)
debian tty7 :0 Mon Jan 5 12:24 - down (01:29)
reboot system boot 2.6.24-16-generi Mon Jan 5 12:23 - 13:53 (01:29)
debian pts/0 :0.0 Sun Jan 4 08:55 - down (00:01)

wtmp begins Sun Jan 4 08:55:35 2009

[root@gnulinux /root]# last root
wtmp begins Sun Jan 4 08:55:35 2009


Comando sa
El comando sa nos proporciona un resumen de la información en base a los programas ejecutandose. Por
defecto, muestra cuantas veces el programa fué ejecutado, cual fué el tiempo que se ejecutó realmente, cuan-
to tiempo del CPU consumió, cuanto I/O consumió este, el average del uso de la memoria y el nombre del
programa.
[root@gnulinux /root]# sa | head -5
2576 102.34re 0.32cp 0avio 496k
5 0.09re 0.08cp 0avio 482k gzip
2 7.73re 0.07cp 0avio 18360k gnome-help
3 0.18re 0.07cp 0avio 996k apt-get
2 0.06re 0.06cp 0avio 1878k apt-check

En este comando se desplegán las primeras 5 lineas de salida del comando sa. Observe que el orden de
salida es por el tiempo del CPU. Existen varias otras opciones, como son --sort-real-time y --sort-num-calls.
La primera fila es simplemente el total de todos los campos. Otras opciones también disponibles son:
--print-users Imprime un listado de todos los comandos ejecutados y por quien.
--user-summary Combina todos los programas usados por cada usuario.
-c, --percentages Imprime el porcentaje de los valores del tiempo total del comando de su usuario, sistema y tiempo real.
-n (--sort-num-calls) Ordena por el número de llamadas
-k: Ordena por el average del uso de memoria
-t, --print-ratio Basado en cada entrada, imprime el average de tiempo real a la suma de sistema y tiempos del usuario;
si la suma del sistema y el tiempo del usuario es demasiado pequeño para reportar (su suma es cero), se
imprimira "*ignore*" en este campo.


Comando lastcomm
El comando lastcomm nos brinda información de los últimos comandos que los usuarios han ejecutado.
Si ejecutamos lastcomm sin ningún argumento este simplemente nos imprimirá a pantalla todos los coman-
dos en el archivo de record en /var/log/pacct. Por ejemplo para verificar cual usuario ejecuto el comando find
y ver cual usuario estuvo ingresado el tty0, escriba:
$ lastcomm find tty*
find man ?? 0.00 secs Tue Jan 20 07:52
find root ?? 0.00 secs Tue Jan 20 07:52
find root ?? 0.00 secs Tue Jan 20 07:35
find root ?? 0.00 secs Tue Jan 20 07:35


Esta sentencia imprimirá a pantalla cualquier entrada que iguale find o tty0 en cualquier de los campos
(comando, nombre 0 terminal). Si desea sólo encontrar los item que igualen *all* de los argumentos en la
línea de comandos, deberá usar la opción -strict-match. Por ejemplo para listar todas las ejecuciones del
comando ls usadas por el usuario root en el terminal tty1, escriba:
$ lastcomm strict-match ls root tty | last -5
debian pts/0 :0.0 Tue Jan 20 06:08 still logged in
debian tty7 :0 Tue Jan 20 06:08 still logged in
reboot system boot 2.6.24-16-generi Tue Jan 20 06:07 - 08:12 (02:05)
debian pts/0 :0.0 Mon Jan 19 19:44 - 19:49 (00:04)
debian tty7 :0 Mon Jan 19 19:39 - 19:50 (00:10)

El orden como se escribe la sentencia es importante.

Modificar Valores en /proc

El sistema de archivos /proc es una herramienta excelente para monitorear el sistema directamente. En
este directorio /proc existen directorios de nombre numéricos. Estos nombres se refieren a los PIDs de los
procesos en ejecución y los archivos dentro de estos directorios contienen información correspondiente al
proceso. Los archivos con nombres no numéricos corresponden a procesos del sistema y por ende con
información pertinente al sistema mismo.
Los archivos representando procesos no tienen permiso de Escritura (Write). Comúnmente solo los archi-
vos que contienen información de configuración pueden ser alterados. Recuerde que esos archivos son uti-
lizados y creados directamente por el kernel y modificarlo puede causar comportamiento impredecible.
El directorio /proa/sys en particular contiene información de la configuración del sistema. Por esto infor-

mación del sistema puede ser directamente alterada a través de estos archivos. Vamos a dar un pequeño
ejemplo de una situación que se puede dar en un servidor de páginas web, que en la compilación de su
kernel se dio un número de handles que directamente afecta el número de archivos que puede abrir. Bueno
este limite se esta viendo amenazado por el volumen alto de visitantes a las paginas web que esta sirvien-
do.
Ahora la pregunta es ¿Qué podemos hacer? La respuesta es que podemos modificar el archivo
/proc/sys/fs/file-max el cual nos dice por ejemplo:
[root@gnulinux /]# cat /proc/sys/fs/file-max
4096

[root@gnulinux /]# echo valor_modificado /proc/sys/fs/file-max
1.- Determine en su equipo cual es el valor actual y triplíquelo. Luego desvuélvalo a su estado original.
software utilizado = KompoZer (editor linux de páginas web)

Partimage - System Rescue Linux

Partimage es una utilidad de Linux-UNiX incluida en el System rescue cd, que guarda las particiones en muchos formatos a un archivo de imagen. El archivo de imagen se puede comprimir en el GZIP/BZIP2 formatos para ahorrar espacio en disco, dividirlo en varios archivos a copiar en disquetes removibles (ZIP, por ejemplo), … se pueden guardar las particiones a través de la red desde la versión 0.6.0. Cuando utilizamos partimage, las particiones debe ser desmontadas.

Partimage es muy usado en las situaciones siguientes:

En primer lugar, puede restaurar la partición de linux si hay un problema. Cuando usted tenga un problema, con sólo restaurar la partición, y después de 10 minutos, tendrá la partición original. Puede crear una particion con formato ext3 (sistemas *UNiX) para guardar sus imágenes llamada, por ejemplo, UTILS con espacio suficiente para guardar la o las imagenes.

Esta utilidad se puede usar para instalar muchos ordenadores idénticos. Por ejemplo, si usted compra 50 ordenadores, con el mismo hardware, y desea instalar el mismo linux en los 50 sistemas de computadoras, se ahorrará mucho tiempo. De hecho, sólo tienes que instalar en el primer PC y crear una imagen de ella. Para otros los 49, puede utilizar el archivo de la imagen y la imagen de la partición de restauración de la función.

Sistemas de ficheros soportados

ext2fs/ext3fs,Reiser3,FAT16/32, HPFS,JFS,XFS.

Arranque el cd de System rescue y utilize cuando se lo pregunte elija teclado en español tecleando el numero 13.

cree un directorio en root de nombre, por ejemplo, imagen en el directorio /root

mkdir imagen.

Monte la particion donde quiere guardar la imagen, en mi caso ya tenia una partición creada para ese propósito de nombre UTILS y 20GB. Para listar las particiones utilice uno de estos comandos:

fdisk -l

df -h

mount /dev/sda7 imagen para montar la particion UTILS

Puede utilizar startx para entrar en modo gráfico y comprobar con el gparted para comprobar visualmente las particiones y sus nombres.

pwd para saber la ruta en la que está

Escriba partimage en la interfaz de comando del Sytem Rescue Linux

elegir la particion /dev/sda1 save partition como partición a crear la imagen. Situación: hard disk con tres particiones raiz, home y swap.

en image file to create tecleamos:

/root/imagen/nombreimagen para crearla dentro de UTILS

deje opciones por defecto F5 para continuar. Si lo desea haga una breve descripción de la imagen. F5 para continuar

Informacion sobre la imagen que se creará ok y empezará el proceso. Al finalizar salga del partimage.


Acto seguido desmonte la particion:

umount /root/sda7

Para restaurar la imagen lo mismo pero la opción será restaurar en lugar de crear.



Hacer copia del MBR

Comando dd
El comando dd (copia de dispositivo a dispositivo) es un utilitario de copiar especial. Su uso primario es copiar archivos a otros dispositivos como lo son cintas o floppies. Es muy útil al copiar desde un sistema operativo a otro cuando otros métodos fracasan. La sintaxis del comando dd es:
dd [argumentos]

Existen varios argumentos disponibles. Una característica del dd es la capacidad de poderle especificar el tamaño del block como parte del comando dd, brindándole asi un control superior sobre la operación del copiado. Algunos de los argumentos más comunes son:

if =nombre-del-archivo Especifica el archivo a copiar
of =nombre-del-archivo Especifica el archivo de salida
bs=tamaño-del-block Especifica cuantps bytes a escribir y leer simultaneamente

Hacer copia del Master boot record (MBR):

dd if=/dev/sda of=/root/imagen/backup.mbr bs=512 count=1

Restaurar el MBR:

dd if=/root/imagen/backup.mbr of=/dev/sda bs=1 count=64 skip=446 seek=446

Hacer una copia de la tabla de particiones: 

sfdisk -d /dev/sda; /root/imagen/tabla_particiones.backup

Contenido del archivo tabla_particiones.backup
cat /root/imagen/tabla_particiones.backup
# partition table of /dev/sda
unit: sectors

/dev/sda1 : start=       63, size=   208782, Id=83, bootable
/dev/sda2 : start=   208896, size= 49831936, Id=83
/dev/sda3 : start= 50040832, size= 41213952, Id=83
/dev/sda4 : start= 91265265, size=133403760, Id= 5
/dev/sda5 : start= 91265328, size=  4096512, Id=82
/dev/sda6 : start= 95361903, size=  6731172, Id=83
/dev/sda7 : start=102093138, size=  7100667, Id=83
/dev/sda8 : start=109193868, size= 35101962, Id=83
/dev/sda9 : start=144295893, size= 41142402, Id=83

Para restaurar la tabla de particiones:
sfdisk -d /dev/sda; /root/imagen/tabla_particiones.backup

Importancia de las particiones en GNU-LInux

Particionado de disco es la creación de divisiones separadas de una unidad de disco duro usando editores de partición, como fdisk. Una vez que un disco se divide en varias particiones, directorios y archivos de diferentes categorías se podrán almacenar en diferentes particiones.

Muchos de los nuevos usuarios de sistemas de Linux crean sólo dos particiones / (raíz) y de intercambio (swap) para todo el disco duro. Esto es realmente una mala idea. Usted necesita considerar los siguientes puntos, en el particionado del disco.
Fines de los discos particionados

Un sistema operativo como Linux puede ser instalado en un único disco duro no particionado. Sin embargo, la posibilidad de dividir un disco duro en varias particiones ofrece algunas ventajas importantes. Si está ejecutando Linux en el servidor:

*

Facilidad de uso - Hacer más fácil recuperar un archivo dañado o el sistema de instalación del sistema operativo.
*

Rendimiento - los sistemas de archivos más pequeños son más eficientes. Usted puede ajustar el sistema de archivos como por solicitud de registro o como archivos de cache. Una partición de intercambio dedicada también puede mejorar el rendimiento.
*

Seguridad - La separación de los archivos del sistema operativo de los archivos de usuario puede resultar en un mejor y seguro sistema. Restringir el crecimiento de determinados sistemas de archivos es posible utilizando diversas técnicas.
*

Backup y Recuperación - Fácil backup y recuperación.
*

La estabilidad y la eficiencia - Puede aumentar la eficiencia de espacio en disco de formato de disco con varios tamaños de bloques. Que depende de su uso. Por ejemplo, si los datos son muchos archivos pequeños, es mejor utilizar tamaños de bloque pequeños.
*

Selectividad - Arrancar varios sistemas operativos como Linux, no UNiX o FreeBSD desde un único disco duro.


Sistemas de ficheros que necesitan su propia partición

Partición


Propósito

/usr


Aquí es donde se encuentran la mayoría de los binarios ejecutables, el árbol de código fuente del kernel y documentación.

/var


Aquí encontrará los directorios de correo e impresión. Además, contiene el registro de directorio de errores.

/tmp


Lugar de la mayoría de los archivos de datos temporales almacenados por aplicaciones.

/boot


Aquí es donde están sus imágenes del núcleo y la configuración del gestor de arranque.

/home


Aquí es donde están los directorios de los usuarios.

Vamos a suponer que tiene 120 GB de disco duro SCSI / (raíz), y sólo las particiones de intercambio. Una usuaria puede ser interna o externa se come todo su espacio en disco utilizando un ataque DoS (Denial_of_Service). Por ejemplo, considere el siguiente diminuto script que el usuario puede ejecutar en el directorio /tmp:

#!/bin/sh
man bash> $ (mktemp)
$ 0

Cualquier usuari@ lo puede ejecutar a través de cron (si se permite), o incluso con nohup comando:
$ nohup bad-script

El resultado puede ser un desastre total en todo el sistema de archivos que está bajo ataque de Denegación de Servicio. Incluso pasar por alto la limitación de cuota de disco. Un novato administrador de sistemas Linux creó sólo dos particiónes. Más tarde, las aplicaciones devoran todo el espacio en /var/log/. Resultado de no seguir los documentos internos que las directrices y configuración de las particiones para los clientes del servidor recomiendan.

Si usted no tiene un esquema de partición, que pueden tener lugar después de los ataques:

1.

Runaway procesos.
2.

Ataque de Denegación de Servicio contra el espacio de disco.
3.

Los usuarios pueden descargar o compilar programas SUID en /tmp o incluso en /home.
4.

Ajustar el rendimiento no es posible.
5.

Montando /usr como de sólo lectura no será posible mejorar la seguridad.
6.

Todo este ataque puede ser detenido mediante la adición de la opción siguiente a /etc /fstab:

*

nosuid - No coloque SUID / SGID de acceso a esta partición
*

nodev - No carácter o dispositivos especiales en esta partición
*

noexec - No coloque binarios ejecutables en la partición
*

ro - Montar sistema de ficheros como lectura
*

quota - Habilitar cuota de disco

Por favor tenga en cuenta que por encima de las opciones sólo se puede ajustar, si tiene una partición separada. Asegúrese de crear una partición especial como la anterior con opción en cada partición:

*

/home - Establecer opción nosuid, nodev y con opción diskquota
*

/usr - Establecer opción nodev
*

/tmp - Establecer opciónes nodev, nosuid, noexec debe estar habilitada

Por ejemplo la entrada en /etc /fstab para /home debe decir lo siguiente:

/dev/sda6 /home ext3 defaults,nosuid,nodev 1 2

Obtener información acerca de las particiones

Hay varias maneras de obtener información sobre las particiones en GNU-Linux como sistema operativo.
Lista de particiones:

fdisk -l
Informe del espacio usado en el sistema de archivos:

df -h

df -k
Ver opciones de particiones montadas incluidos los puntos de montaje

mount
Mostrar - editar las opciones de configuración del sistema de archivos

less /etc/fstab

vi /etc/fstab
Rápidamente remontar /usr en modo ro (read only)

mount -o remount, ro /usr
Montar rápidamente todos los ficheros del sistema de montaje configurados en /etc/fstab

mount -a

Mysql en Gentoo

Mysql es un servidor de base de datos.



Para realizar una instalacion optimizada:

hypatia gentoo # emerge -pv mysql

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] dev-db/mysql-5.0.90-r2  USE="berkdb community perl ssl -big-tables -cluster -debug -embedded -extraengine -latin1 -max-idx-128 -minimal -profiling (-selinux) -static -test" 0 kB

Agrego al archivo /etc/portage/package.use

dev-db/mysql  USE="berkdb community perl ssl -big-tables -cluster -debug -embedded -extraengine -latin1 -max-idx-128 -minimal -profiling (-selinux) -static -test"

Instalo Mysql:
hypatia gentoo # emerge mysq


Esta versión permite ejecutar la configuración del servidor mysql instalado y la inicialización de la contraseña root.
emerge --config =dev-db/mysql-[versión]
hypatia gentoo # emerge --config =dev-db/mysql-5.0.90-r2


Configuring pkg...

 * Please provide a password for the mysql 'root' user now,
 * or in the MYSQL_ROOT_PASSWORD env var.
 * Avoid ["'\_%] characters in the password
    >
 * Retype the password
    >
 * Creating the mysql database and setting proper
 * permissions on it ...
 * Starting mysqld ...                                                     [ ok ]
 * Setting root password ...                                              [ ok ]
 * Loading "zoneinfo", this step may require a few seconds ... ...        [ ok ]
 * Stopping the server ...
 * Done

Para iniciar o detener el servidor se puede utilizar el comando:
/etc/init.d/mysql start/stop
MySQL comandos simples

MySQL es una de las RDBM's mas utilizadas en el mundo del Open Source.

Necesitas especificar un usuario:
$ mysql -u root -p (debe poner el password que le pidió en la instalacion)


Una vez adentro, el prompt cambiará a el de mysql lo que significa que está listo para recibir comandos:

mysql>

Crear una nueva base de datos:

CREATE DATABASE nombre_bd;

Crear tabla empleado

CREATE TABLE empleado(id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,cedula varchar(13),nombre varchar(30),apellido varchar(40),direccion varchar(50),telefono varchar(12),nacimiento varchar(10),entrada varchar(10),salario int(8),extras int(8),puesto varchar(20),D_tss int(6),salida varchar(10),vacaciones varchar(10),nss varchar(8));

mysql> CREATE TABLE nombre_tabla
(campo_1 TIPO(TAMAóO), field2_name TIPO(TAMAóO));
ejemplo:
mysql> CREATE TABLE alumnos (nombre VARCHAR(35),
sexo CHAR(1), fecha_nacimiento DATE);

Insertar un nuevo registro en la tabla empleado:

INSERT INTO empleado (`id`, `cedula`, `nombre`, `apellido`, `direccion`, `telefono`, `nacimiento`, `entrada`, `saladio`, `extras`, `puesto`, `D_tss`, `salida`, `vacaciones`, `nss`) VALUES (3,"059-0020564-1","Cesar","Luna Frias","Rabo de Chivo, Castillo","829-6754538","","17-07-2007",5000,3000,"Maestro bizcocho",114,"","17-07-200x","6254137-8");

Insertar un nuevo registro en la tabla alumno:
mysql>INSERT INTO alumnos (`nombre`, `sexo`, `fecha_nacimiento`)
VALUES ("Belia Romero", "F", "13-09-1983");

Ver las bases de datos existentes
mysql> SHOW DATABASES;

Seleccionar una Base de Datos:<> USE nombre_basededatos;

Ver las tablas en la base de datos
mysql> SHOW TABLES;

Ver la información de la estructura de la tabla
mysql> DESCRIBE nombre_tabla;

Ver la información guardada en la tabla
mysql>SELECT * FROM alumnos;

mysql>SELECT nombre, fecha_nacimiento
FROM alumnos
WHERE sexo = 'F' AND name LIKE '%belia%';

mysql>SELECT alumnos.nombre, materias.nombre
FROM alumnos, materias
WHERE sexo = 'F' AND materias.id_alumno = alumnos.id_alumno
LIMIT 0, 9 GROUP BY alumnos.id_alumno;

Modificar la información de un registro

UPDATE empleado SET vacaciones="04-09-200x" WHERE vacaciones="";
mysql> UPDATE nombre_tabla SET campo = "new_value" WHERE campo = "value";

ejemplo:
mysql> UPDATE alumnos
SET fecha_nacimiento = '21-04-1983' WHERE id_alumno = '1';

No inclur campos repetidos de una tabla:
mysql> SELECT DISTINCT campo FROM table;

ejemplo:
mysql> SELECT DISTINCT nombre FROM materias;

Ordenar los resultados de un Query en forma ascendente (Menor a Mayor)
mysql> SELECT campo1, campo2, campo3 FROM tabla ORDER BY campo1

ejemplo:
mysql> SELECT id_alumno, nombre FROM alumnos ORDER BY id_alumno;

Ordenar los resultados de un Query en forma descendente (Mayor a Menor)
mysql> SELECT campo1, campo2, campo3 FROM tabla ORDER BY campo1 DESC;

ejemplo:
mysql> SELECT nombre, promedio FROM alumnos ORDER BY promedio DESC;

Contar el número de registros en la tabla
mysql> SELECT count(campo) FROM tabla;

ejemplo:
mysql> SELECT count(id_alumno) AS total_alumnos FROM alumnos;
mysql> SELECT salon, count(id_alumno) as total_por_salon
FROM salones_alumno
GROUP BY salon
ORDER BY total_por_salon;


Copiar y restaurar base de datos de MySQL


fuente: http://yvoictra.wordpress.com/2008/02/20/copiar-y-restaurar-base-de-datos-de-mysql/

Lo primero que hay que hacer es hacer un backup de la base de datos, para ello usaremos el comando mysqldump.

$ mysqldump --add-drop-table -u root -p dbname >~/db_name.sql

donde…

root, es el usuario de la base de datos.

dbname, es el nombre de la base de datos que queremos usar.

y ~/db_name.sql es la ruta del fichero donde se guardará el backup.

Una vez hecho esto, podemos restaurar la base de datos, por ejemplo, en otra máquina. Para ello primero arrancamos mysql:

$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.0.45-Debian_1ubuntu3.1-log Debian etch distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database dbname_copy
mysql> use dbname_copy

recuerda que “mysql>” es el prompt que interpreta los comando de mysql..

ahora para restaurarla usamos el siguiente código:

mysql> source ~/db_name.sql

Y ya estaría copiada. Estos últimos pasos también se podrían haber hecho de la siguiente forma:

mysql -u root -p dbname < ~/db_name.sql


Referencia de uso de 'ALTER TABLE' 


ALTER TABLE ejemplo ENGINE = InnoDB
Cambiar el tipo de motor (engine) de la tabla 'ejemplo'
ALTER TABLE personas RENAME usuarios
Cambia el nomnbre de la tabla 'personas' a 'usuarios'
ALTER TABLE ejemplo AUTO_INCREMENT=1000
En la tabla 'ejemplo' cualquiera que sea la columna que tenga 'AUTO_INCREMENT' en sus propiedades (solo puede haber una), los nuevos registros comenzarán a partir de '1000' o cualquier número indicado, no es posible utilizar un valor ya existente.
ALTER TABLE ejemplo CONVERT TO CHARACTER SET latin1
La tabla 'ejemplo' ahora almacenará sus valores en base al juego de caracteres 'latin1' (iso-8859-1).
OPERACIONES CON DROP
ALTER TABLE ejemplo DROP COLUMN nombre
Elimina la columna 'nombre' de la tabla 'ejemplo'.
ALTER TABLE ejemplo DROP COLUMN nombre, DROP COLUMN paterno
Elimina más de una columna.
ALTER TABLE ejemplo DROP COLUMN nombre, DROP COLUMN paterno
Elimina más de una columna.
ALTER TABLE ejemplo DROP INDEX usuario
Elimina el índice 'usuario'.
ALTER TABLE ejemplo DROP PRIMARY KEY
Elimina la llave primaria de la tabla 'ejemplo'
ALTER TABLE ejemplo DROP FOREIGN KEY id_usuario
Elimina de la tabala 'ejemplo' la llave foranea 'id_usuario'.
OPERACIONES CON CHANGE Y MODIFY
ALTER TABLE ejemplo CHANGE monto cantidad FLOAT(8,2)
Cambia el nombre de la columna 'monto' al nuevo nombre 'cantidad' con la definición del tipo de datos.
ALTER TABLE ejemplo CHANGE cantidad cantidad FLOAT(10,2)
Cambia solo el tipo de datos de la columna, conservando el mismo nombre.
ALTER TABLE ejemplo MODIFY cantidad FLOAT(10,2)
Cambia solo el tipo de datos de la columna, conservando el mismo nombre. (Igual que el anterior)
ALTER TABLE ejemplo MODIFY cantidad FLOAT(6,2) NOT NULL
Cambia el tipo de datos de la columna 'cantidad' y especifica que no admite nulos.
ALTER TABLE ejemplo MODIFY paterno VARCHAR(30)
Modifica el tamaño de la columna 'paterno'.
ALTER TABLE ejemplo MODIFY correo CONVERT TO CHARACTER SET utf8
Es posible convertir solo una columna, en este caso 'correo' a un juego de caracteres distinto al de todo el resto de la tabla.
OPERACIONES CON ADD
ALTER TABLE ejemplo ADD fecha DATE
Añade una columna llamada 'fecha' del tipo 'DATE' al final de todas las demás existentes.
ALTER TABLE ejemplo ADD INDEX(categoria)
Añade un índice a la columna 'categoria'.
ALTER TABLE ejemplo ADD INDEX(categoria), ADD PRIMARY KEY(clave)
Añade un índice a la columna 'categoria' y además crea la llave primaria en la columna 'clave'.
ALTER TABLE ejemplo ADD UNIQUE(email)
Añade a la columna 'email' un índice del tipo único, no puede haber dos iguales.
ALTER TABLE ejemplo ADD consecutivo BIGINT AUTO_INCREMENT, ADD INDEX(consecutivo)
Añade la columna 'consecutivo' con la característica de auto incremento y además genera un índice sobre la misma.
ALTER TABLE ejemplo ADD materno VARCHAR(20) AFTER paterno
Añade la columna 'materno' después de la columna 'paterno'.
ALTER TABLE ejemplo ADD id INT FIRST
Añade la columna 'id' en primer lugar con respecto a las existentes.
ALTER TABLE usuarios ADD FOREIGN KEY(id) REFERENCES entradas(id_user)
Añade un 'Foreign key' en la columna 'id' de la tabla 'usuarios' que apunta a la columna 'id_user' de la tabla 'entradas'.

Instalando apache2 mysql php phpmyadmin en Gentoo Linux actualmente, no es necesario tocar ficheros de configuración excepto:

# vi /etc/apache2/httpd.conf
ServerName localhost

# vi /etc/php/apache2-php5.3/php.ini
cp /var/www/localhost/htdocs/phpmyadmin/config.sample.inc.php /var/www/localhost/htdocs/phpmyadmin/config.inc.php
vi /var/www/localhost/htdocs/phpmyadmin/config.inc.php

Agregar -D php5 al archivo /etc/conf.d/apache2
# vi /etc/conf.d/apache2

APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP5"

Después de instalar apache2, mysql, php y phpmyadmin (normalmente no es necesario pero puede pasar, me sucedió en una instalación en la distro Debian Squeeze), que el enlace lo tengamos que crear a mano:

#  ln -s /usr/share/phpmyadmin/.
Desde el navegador.
http://localhost/phpmyadmin


Linux es genial!

Montar particion NTFS en GNU-Linux

Montar particion NTFS en GNU-Linux

Autor: Cesar Camilo

1. Abra una terminal y teclee su enter

Contraseña:
2. Para listar tabla de particiones::

root@\gnulinux:/home/debian# fdisk -l

Disco /dev/sda: 250.0 GB, 250059350016 bytes
255 cabezas, 63 sectores/pista, 30401 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador de disco: 0xb7e61057

Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sda1 * 1 2630 21125443+ 7 HPFS/NTFS (no UNiX NTFS)
/dev/sda2 4564 30401 207543735 f Ext'd (LBA)
/dev/sda3 2631 4563 15526822+ 83 Linux
/dev/sda5 4564 4685 979902 82 Linux swap / Solaris
/dev/sda6 4686 7117 19535008+ 83 Linux
/dev/sda7 7118 9549 19535008+ 1b Hidden W95 FAT32 (part
/dev/sda8 -----10155 30401 162633996 7 HPFS/NTFS (datos NTFS)
/dev/sda9 9550 10154 4859631 83 Linux

Las entradas de la tabla de particiones no están en el orden del disco


Como ejemplo montaremos la partición /dev/sda8 de datos.


3. Teclee mkdir /media/datos para crear un directorio dentro de /media (directorio donde usted podrá acceder a la partición)
3a Teclee mount /dev/sda8 /media/datos/ -t ntfs -o nls=utf8,umask=0000 (todos los permisos rwx)
3b Teclee mount /dev/sda8 /media/datos/ --t ntfs -o nls=utf8,umask=0222 (permisos r-x)

4. Teclee cd /media/datos (Para moverse al directorio recien montado)
5. Teclee ls para listar los archivos en la particion NTFS.

Nota: Podrá navegar fuera de la terminal para ver los archivos montados en /media/datos

Para desmontar la partición NTFS desde la terminal teclee umount /dev/sda8.

Lilo aumentar seguridad

Use el Single Boot Mode de GNU/Linux
Fuente: Seguridad GNU-Final Antonio Perpiñan

1. Reinicie su ordenador y entre lo siguiente en el prompt de LILO: linux single

2. Linux se lanzara en usuario single mode. Avise al prompt. Usted es el usuario root. Cambie la password
a cualquiera que desee. Note que si usted entra una password que es muy corta, usted recibira un men-
saje: “BAD PASSWORD: it is based on a dictionary word.”. Usted puede ignorar este mensaje por ahora
por que usted es root.
# passwd
New UNIX password
Retype new UNIX password
passwd: all authentication tokens updated sucessfully

3. Ahora, reinicie su sistema:
# shutdown -r now

4. Ingrese a GNU/Linux usando su nuevo password.

5. Cambie su password de nuevo a su password anterior.
# passwd root
New UNIX password
Retype new UNIX password
passwd: all authentication tokens updated su

6. Para agregar algo de seguridad para el usuario single mode, agregue el siguiente código mostrado a con-
tinuacion al archivo /etc/lilo.conf.
boot=/dev/hds
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
restricted
password=password

7. Note la entrada restringida. Esta entrada causara que el sistema le pregunte por una password cuando
cuaquiera desea ingresar como usuario single mode. La línea password= le permite establecer cualquier
password. Asegurese de que usted usa la password como la password. No haga distorciones el texto
que esta debajo de esta primera seccion. Una vez que haya agregado la línea de password= , salga de
/etc/lilo.conf para guardar sus cambios.

8. Utilice el siguiente comando, exactamente como es mostrado:
# /sbin/lilo

9. El comando anterior recrea el archivo /boot/boot.b. Después de haber entrado el comando /sbin/lilo, reini-
cie Gnu/Linux.

10. Cuando el sistema se reinicia, entre “linux single” en el prompt de LILO. Presione ENTER. A usted se
le preguntara por un password. Usted ahora disposo una medida de seguridad física para su sistema.

11. Si es necesario, desabilite la proteccon de password que ha habilitado editando /etc/lilo.conf, eliminan-
do las lineas de restricted y password= y ejecutando de nuevo el comando lilo.
Aunque este ejercicio agrega una medida de protección a la seguridad física de un sistema, médidas adci-
sionales pueden ser necesitadas. Configurando la BIOS para prevenir que inicien desde un medio removible
realzando la seguridad del sistema.

Herramientas poderosas en GNU-Linux

"Quien no sabe GNU-Linux, no es informatico, por lo que está obligado a reinvertarlo y mal". Antonio Perpiñan. Padre del software libre en America Latina. http://www.codigolibre.org/

En esta sección se ofrece una breve descripción de las características de las herramientas más poderosas del ambiente de trabajo de GNU/Linux. Tomaremos en consideració los siguientes tópicos:

• diff –> Inventario de Cambios Efectuados a un Archivo

• find –> Busca y Manipula Archivos

• grep –> Busca Cadenas en el Contenido de Archivos de Texto

• Expresiones Regulares–> Uso de Abreviaturas para Asistir los Comandos y Utilitarios

• sed –> Edición de Flujo de Texto (Stream)

• awk –> Edición Avanzada de Flujo de Texto

• Perl –> Lenguaje de Programación de Extracción y Reporte

Aquí le damos una brevísima introducción al programa Perl, el cual es el lenguaje defacto de los administradores de sistemas y de páginas web.

El Comando diff- Inventario de Cambios a los Archivos

l comando diff toma como parámetros el nombre de 2 archivos y da salida a las diferencias entre los 2 archivos. Cuando es ejecutado sobre un archivo ordinario, como se muestra más adelante, la salida es un poco compleja y hace referencia a comandos de edición utilizados por el ed, la cual puede ser ejecutada para sincronizar los 2 archivos . En el ejemplo mostramos la diferencia en el archivo de contraseñas actual y una copia que sirve de backup. En éstos archivos la línea 23 ha sido cambiada y la línea 24 ha sido agregada al archivo /etc/passwd

$ diff passwd passwd.bak

23c23,24

<>

—-

> DIFERENTE

> LINEA ADICIONAL

Por lo general la salida sólo contiene comandos simple del siguiente formato:

n1 a n3,n4 Las líneas n3 a n4 agregada al archivo 2 después de la línea n1 en el archivo1

n1,n2 d n3 Líneas n1 a n2 eliminadas del archivo 1 (estaban en la línea n3 en el archivo 2)

n1,n2 c n3,n4 Línea n1 a n2 en el archivo 1 cambiadas a líneas n3 a n4 en el archivo 2

Después de cada línea de comandos, las líneas afectadas del primer archivo son listadas precedidas por un <, y cualquier línea nueva en el archivo 2 es listada y precedida por el símbolo >.

El comando diff también puede ser utilizado sobre directorios. Aquí la salida del comando sólo muestra mensajes de “only in …” (solamente en …) y “common subdirectories …” (Subdirectorios comunes …) y no al estilo de instrucciones parecidas al ed.

$ diff dir dir2/

Only in dir: archivo1

Only in dir: passwd.bak

El Comando find - Busca y Manipula Archivos

Find es un comando que busca en el árbol de directorio y ejecuta comandos sobre el resultado. Este buscará en un directorio y todos sus subdirectorios por archivos basados en un criterio de selección y opcionalmente ejecutaría cualquier comando o script del shell sobre cada archivo que iguale el criterio de búsqueda.

La sintaxis del comando find es:

$ find directorios opción acción

Las opciones son en forma de palabras reservadas, por ejemplo:

-name nombre Busca archivos llamados nombre

-user nombre Busca archivos adueñados por el usuario nombre

-type [fdlcb] Busca archivos del tipo dado (por ejemplo, d es un directorio, l esunvínculo)

-size [+/-]n[ck] Busca archivos de un tamaño dado (ejemplo,+10k significar más grande que 10 Kb)

-inum número Busca archivos con el número de inodo dado (hard link)

Las opciones del comando find facilitan la búsqueda de archivos, de acuerdo a cualquier tipo de atributo de éstos. Una vez el archivo ha sido localizado, éste puede ser sometido, como un argumento, a cualquier comando de GNU/Linux o script del shell disponible.

La Opción -name soporta los mismos caracteres wildcard que esos del shell (*, ?, y []). Recuerde colocar un nombre que contenga éstos caracteres dentro de comillas dobles para evitar que el shell efectue su propia generación de nombres de archivos y sustitución de argumentos.

Muchas otras opciones del comando find soportan criterios de búsqueda muy poderosos y son descritos en sus páginas man. En realidad, el comando find no es usado para buscar archivos, sino para navegar el sis- tema de archivos buscando los archivos que igualan cierto criterio de búsqueda y luego ejecutar comandos sobre los resultados. Un uso común es, por ejemplo, buscar todos los archivos que su tiempo de acceso es anterior a cierta fecha y luego moverlos a cierta localidad.

Las acciones pueden ser:

-print Imprime los nombres de archivos a la salida estándar

-exec comando {} ; Ejecuta el comando dado por cada archivo encontrado

-ok comando {} ; Ejecuta el comando dado pero pide confirmación

Ejercicio 7-6: Uso de find

En éste ejercicio le presentamos ejemplos del comando find. Las soluciones a éste ejercicio se encuentran en el Apéndice A.

¿Qué efectúan los siguientes comandos find?

1. $ find . -print

2. $ find . -type d -print

3. $ find /home -name .profile -print

4. $ find /home -name .bash_profile -print

5. $ find . /tmp /usr/tpm -name core -exec rm {} ;

6. $ find . -name “*.o” -ok rm {} ;

1.

$ find / -type f -size +1k -print >/tmp/grandes 2>/dev/null &

Eliminar la Cuenta de un Usuario

Los archivos de los usuarios deben ser almacenados por un corto tiempo para asegurarse de no borrar de
manera permanente archivos, importantes. El correo del usuario debe ser reenviado a una cuenta de un admi-
nistrador. Alternativamente, el administrador puede usar el comando vacation para enviar un mensaje a esos
correos informándoles de la situación y que hacer al respecto. También debe revisar si el usuario dejo tareas
ejecutadas programadas con cron o at. Si remueve los archivos de un usuarios con el comando find también
borrara estas tareas, lo siguiente es una lista de los pasos sugeridos para borrar este usuarios.

Expira la cuenta y clausura la contraseña
# chage -E /fecha-hoy(25/07/2003) foo

Cree y proteja el directorio almacenar los archivos del usuarios
# makedir /almacenar; chmod 000 /almacenar

Cree un archivo comprimido de todos los archivos del usuarios ( formato cpio). Note que hemos cambia-
dos a root y ejecutados el comando find en el directorio actual (.) deliberadamente, para ahorrarnos rutas rela-
tivas.

Esto no asegurara que cuando restauremos archivos para inspeccionarlos, ellos no serán insertados en un
lugar diferente.
# cd /; find . ­user foo -print | cpio -ov | compress > /almacenar/foo

Ahora que hemos salvados los archivos, podemos borrarlo, note que no hemos trabajado con ningún
directorio, que sean del usuario, pero que contenga archivos que le pertenezcan a otros.
# find . ­user foo -type f -exec rm -f {} \;
# find . ­user foo -type d -exec rm -f {} \;

El correo entrante puede ser redireccionado (enviado) a otro usuario. Esto funcionara aunque hayamos
borrado la cuenta del usuario del sistema.
# su - foo -C "mail ­F admin"

En práctica los administradores utilizan el comando userdel ya que este puede ser utilizado para borrar
los directorios home, pero dejan otros, como ejemplo el correo, intacto. El comando para borrar a foo seria:
# userdel -r foo

Cuotas en Linux

El administrador debe utilizar las cuotas para controlar el espacio en disco usado por
el sistema, el almacenamiento en disco se puede restringir mediante la implementacion de cuotas de disco y de esta manera el administrador es notificado antes de que un usuario consuma mucho espacio en disco o que una partición se llene.

¿A que asignarle cuotas?Las cuotas se pueden configurar para usuario individuales o para grupos. Este tipo de flexibilidad hace posible darle a cada usuario una pequeña porción del disco para que maneje sus archivos personales (tales como correo o informes), mientras que se les permite tener mas espacio para manejar los proyectos en los que estén trabajando o cuotas mas grandes, asumiendo que a los proyectos se les da sus propios grupos.

NOTA: Las cuotas se pueden configurar no solo para que controlen el numero de bloques de disco pero también el numero de inodes. Debido a que los inodes son utilizados para contener información relacionada a los archivos, esto permite controlar el numero de archivos que pueden ser creados.

Configuración de cuotas de disco.Para configurar las cuotas de disco, realice los siguientes pasos:

1- Active cuotas por sistema de archivos modificando el fichero /etc/fstab
2- Remonte el sistema de archivos, luego de la modificación
3- Cree los archivos cuotas y genere la tabla de uso de espacio en disco

4- Asigne las cuotas

Con fines de mayor entendimiento para el usuario se detallan cada uno de estos pasos.
Activar las cuotas:

Como superusuario (root), use cualquier editor de texto de su preferencia, y añada las
opciones usrquota y/o grpquota al sistema de archivos que requiere cuotas.
LABEL=/ / ext3 defaults 11
LABEL=/home /home ext3 defaults,usrquota,grpquota 12
LABEL=/boot /boot ext3 defaults 12
tmpfs /dev/shm tmpfs defaults 00
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 00
proc /proc proc defaults 00
LEBEL=SWAP-sda5 swap swap defaults 00

NOTA: El fichero fue tomado de mi maquina, así que puede variar.
En este ejemplo, el sistema de archivos a utilizar es /home nótese que tiene cuotas de
usuarios y grupo ambas activadas.
Volver a montar el sistema de archivos.
Después de haber agregado las opciones usrquota y grpquota, vuelva a montar cada
sistema de archivos cuyas entradas en /etc/fstab hayan sido modificadas, para lograr
esto realice los siguientes pasos:
naisel@gnu:~# mount -o remount /home #En nuestro caso /home, ya que es en esto
sistema de archivos que estamos realizando las cuotas, y su linea fue modificada en /etc/fstab.

Creación de los archivos cuotas.
Después de volver a montar cada sistema de archivos con cuotas, el sistema puede
funcionar con cuotas de disco. Sin embargo, el sistema de archivos mismo no esta
listo para soportar cuotas. El próximo paso a ejecutarse es el mandato quotacheck.
El mandato quotacheck examina los sistemas de archivos con cuotas activadas y

construye una tabla del uso del disco por sistema de archivos. La tabla es luego usada
para actualizar la copia del uso del disco del sistema operativo. Además, los archivos
de cuotas de disco del sistema de archivos, son actualizados.
Para crear los archivos de cuotas (aquota.user y aquota.group) en el sistema de archivos,
use la opción -c del mandato quotacheck. Por ejemplo, ya tenemos las cuotas del
usuario y grupo activadas en la partición /home, por lo tanto debemos crear los
archivos dentro del directorio /home.
naisel@gnu:~# quotacheck -acug /home

La opción -a indica que todos los sistemas de archivos menos NFS montados en
/etc/mtab son chequeados para ver si las cuotas están activadas. La opción -c especifica
que los archivos de cuotas deberán ser creados para cada sistema de archivos con
cuotas activadas, la opción -u especifica que se debe verificar por cuotas de usuarios,
y la opción -g indica verificar por cuotas de grupos.
Sino se especifican ninguna de las opciones -u ni -g, solo se creara el archivo de
cuota de usuario. Si únicamente se especifica la opción -g, solo se creara el archivo
de cuota del grupo.
Después de crear los archivos, ejecute el siguiente comando para generar la tabla del
uso actual del disco duro por el sistema de archivos con cuotas activadas.
naisel@gnu:~# quotacheck -avug

Descripción de las opciones especificadas a continuación
Opción descripción
-a Verifica todos los sistemas de archivos montados localmente con cuotas
activadas.
-v Muestra detalles de lo sucedido a medida que la verificación de cuotas se
esta ejecutando
-u Verifica la información de cuota de disco del usuario
-g Verifica la información de cuota de disco del grupo
Después de que quotacheck finalice, los archivos de cuotas correspondientes a las cuotas
activas (usuario, grupo) son poblados de datos para cada sistema de archivos con
cuotas activadas, tal como /home.

Asignación de cuotas por usuarios.
El ultimo paso es asignar la cuota de disco con el mandato edquota.
Desde el runlevel o nivel de corrida 1, realice los siguientes pasos:
1- Encienda las cuotas en el sistema de archivos, en donde se configuraron las
opciones usrquota y grpquota, en nuestro caso /home de la siguiente forma:
naisel@gnu:~# quotaon /home
2- Cambiese al directorio.
naisel@gnu:~# cd /home

Para configurar la cuota por usuario, ejecute lo siguiente.
naisel@gnu:~# edquota naisel #Esto si se tiene a naisel como usuario a quien se le
asignara la cuota, de lo contrario puede poner el nombre de usuario de su preferencia.
Lo anterior nos mostrara algo simalar a lo siguiente.
Disk quotas for user naisel (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 24 0 0 10 0 0

Supongamos que queremos asignar una cuota de disco de 10m al usuario naisel en
/dev/sda2, se debe ejecutar lo siguiente.
Disk quotas for user naisel (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 24 0 10240 10 0 0
La primera columna es el nombre del sistema de archivos que tiene una cuota
activada. La segunda columna muestra cuantos bloques esta usando el usuario
actualmente, las próximas dos columnas son para colocar limites de bloques duros y
suaves para el usuario del sistema de archivos. La columna inodes muestra cuantos
inodes esta usando el usuario actualmente. Las dos ultimas columnas son utilizadas
para establecer lo limites duros y suaves para los inodes del usuario en el sistema de
archivos.

Un límite duro es la cantidad máxima absoluta de espacio en disco que un usuario o
grupo puede usar. Una vez que se alcance el límite, no se puede usar más espacio.
El límite suave define la cantidad máxima de espacio en disco que puede ser usado.
Sin embargo, a diferencia del límite duro, el límite suave puede ser excedido durante
cierto tiempo. Este tiempo es conocido como período de gracia. El período de gracia
puede ser expresado en segundos, minutos, horas, días, semanas o meses.
NOTA: Si cualquiera de los valores está especificado a 0, ese límite no está configurado.
Luego de esto guarde los cambios realizados y salga para que los cambios tengan
efecto, cámbiese al nivel de corrida 5, loguese con el nombre del usuario y
contraseña, copie un archivo con mas de 10m de tamaño y vera algo similar a lo
siguiente.

“El limite de cuota en disco se ha excedido”.
Bueno ya hemos finalizado espero que con esto hayan aprendido a asignar
cuotas de disco a sus usuario y mantener su sistema mucho mejor administrado
que antes.

Fuente: Michael Cruz Sanchez mcruz@codigolibre.org Fundación Código Libre Dominicana
www.codigolibre.org

Comprimir descomprimir gnu-linux

fuente: http://www.alejandroarco.es/administracion-de-sistemas/linux/comprimir-y-descomprimir-ficheros/

A continuación mostraré una guía rápida para comprimir y descomprimir ficheros en la consola de Linux con los algoritmos de comprensión más usados actualmente como son: .tar, .gzip, .tar.gz, .bz2, .tar.bz2 y los no menos importantes en plataformas Linux, .zip y .rar.
.tar (tar)

* Comprimir .tar
tar cvf fichero.tar /var/www/vhosts/*
* Descomprimir .tar
tar xvf fichero.tar
* Listar ficheros .tar
tar tvf fichero.tar

.gz (gzip)

* Comprimir .gz
gzip -q fichero (El archivo lo comprime y lo renombra como “fichero.gz”)
* Descomprimir .gz
gzip -d fichero.gz (El archivo lo descomprime y lo deja como “fichero”)
* Nota: gzip solo comprime ficheros, no directorios.

.tar.gz (tar con gzip)

* Comprimir .tar.gz
tar czvf fichero.tar.gz /var/www/vhosts/*
* Descomprimir .tar.gz
tar xzvf fichero.tar.gz
* Listar ficheros .tar.gz
tar tzvf fichero.tar.gz

.bz2 (bzip2)

* Comprimir .bz2
bzip2 fichero (El archivo lo comprime y lo renombra como “fichero.bz2″)
* Descomprimir .bz2
bzip2 -d fichero.bz2 (El archivo lo descomprime y lo deja como “fichero”)
* Nota: bzip2 solo comprime ficheros, no directorios.

.tar.bz2 (tar con bzip2)

* Comprimir .tar.bz2
tar -c ficheros | bzip2 > fichero.tar.bz2
* Descomprimir .tar.bz2
tar jvxf archivo.tar.bz2
* Listar ficheros .tar.bz2
bzip2 -dc fichero.tar.bz2 | tar -tv

.zip (zip)

* Comprimir .zip
zip fichero.zip /var/www/vhosts
* Descomprimir .zip
unzip fichero.zip
* Listar ficheros .zip
unzip -v fichero.zip

.rar (rar)

* Comprimir .rar
rar -a fichero.rar /var/www/vhosts
* Descomprimir .rar
rar -x fichero.rar
* Listar ficheros .rar
rar -v fichero.rar