Discos duros en ordenadores portátiles con Linux

Veran, para comenzar desde cero, los discos duros estan formados, basicamente por el disco (parecido a los CDs), un cabezal de lectura/escritura y una rampa a la que el disco duro pasa cuando la pc se apaga. Para hacernos una mejor idea de esto podemos imaginarnos uno de esos tocadiscos antiguos o, ver esta imagen:

Normalmente, el cabezal solo va a la rampa cuando se apaga la pc. Pero, en las laptops, desde el 2004 mas o menos, los discos incluyen una tecnologia en la que el cabezal pasa entre el disco y la rampa con frecuencia, debido a este comportamiento, ha obtenido el nombre vulgar de tecnologia de carga/descarga (Espanol) o load/unload tech (Ingles). Esta tecnologia, en teoria, permite que el disco duro viva mas, provee mayor proteccion contra golpes y ayuda al ahorro de energia.

Cual es el problema? Bueno.... estos ciclos son finitos, es decir, tienen un limite el cual generalmente esta entre 300k y 600k, siendo cada k 1000 ciclos. Para comprobar cuantos ciclos tenemos, podemos instalar el programa smartmontools y correr lo siguiente como superusuarios:

# smartctl -a /dev/sda | egrep -i "id|load"

El valor que buscamos es el que aparece debajo de RAW_VALUE. Como veremos (A menos de que ya hallamos configurado nuestro Linux para que maneje correctamente este problema) este valor crece rapidamente, si no es tu caso (Si este valor no crece en mas de diez minutos) no tienes nada de lo que preocuparte y puedes irte i seguir leyendo por curiosidad. Por lo general, Linux no maneja esto, a menos de que laptop-mode este activado, en cambio, deja que el disco gire tal y como los fabricantes lo han configurado, sin embargo, como hemos visto, ese valor sigue siendo un tanto alto. Para solucionar este incoveniente tenemos cuatro opciones. La primera es correr el siguiente comando cuando iniciemos Linux como root:

# hdparm -B XXX /dev/sdx

Reemplazando XXX por un numero entre 1 y 254. Si te preguntas por un recomendado, pues, si estas con el cargador conectado deberias ponerlo en 254, si no, 128/180 estaria bien :D. Y sdx por nuestra unidad de disco duro (Comunmente sda).

La segunda es anadir lo siguiente a /etc/init.d:
#!/bin/bash
##El script lo hice yo!! :D
hdparm -B 254 /dev/sdx

La tercera es parecida a la segunda pero anadiendo este script que esta un pelo mejorado:
#!/bin/bash
#Script para que Linux elija con que valor de hdparm debe iniciar
cargador=$(acpi -V | grep -o -i "on")
if [ "$cargador" = "on" ]
then
hdparm -B 254 /dev/sdx
else
hdparm -B 180 /dev/sdx
fi

La cuarta y recomendada es editar /etc/hdparm.conf y poner lo siguiente:
/dev/sdx {
apm = 254
}

Aunque, cualquiera de las cuatro va a traer estos pequenos inconvenientes:

* La temperatura del disco va a subir un poco
* Si configueras HDPARM con un valor muy alto y golpeas la laptop... funeral
* La energia se va mas rapido

Eres curioso? Quieres saber que hace hdparm con eso? Bueno, configura el APM (Advanced power management) :D. Por cierto, si has pensado en volver a Windows despues de esto (O quizas a MAC OSX)... pos no te preocupes, Windows y Mac tambien tienen este problema :(. Para los que usemos debian lenny, parece que los desarrolladores estan tratando el problema bastante bien alli.



Saludos.

Compartir Internet con Linux (iptables)

Os dejo aqui una receta para quien quiera compartir internet a traves de su ordenador con sistema operativo Linux instalado, evidentemente se necesita dos tarjetas de red, en este caso eth2 es la tarjeta que esta conectada al router o acceso a internet y eth1 la tarjeta de red que se conecta al otro ordenador que le queremos pasar internet. Pues paso ya el script muy simple y con iptables.

echo 1 >/proc/sys/net/ipv4/ip_forward
/sbin/iptables --flush
/sbin/iptables --table nat --flush
/sbin/iptables --table nat --append POSTROUTING --out-interface eth2 -j MASQUERADE
/sbin/iptables --append FORWARD --in-interface eth1 -j ACCEPT
#(conexion a red local)



Nota: Una vez ejecutado en algunas máquinas es necesario reiniciar con:

/etc/init.d/networking restart

Bloquear ataques ssh de diccionario

Cuando necesitamos conectarnos a nuestro servidor por ssh y no disponemos de una ip fija desde el cliente no podemos hacer una denegación de servicio por ip, con lo que hay que buscar otras maneras de hacerlo. Aquí os paso una receta que he visto en Debian Administration para hacerlo con dos lineas de iptables:

iptables -I INPUT -p tcp --dport 22 -i eth0
-m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0
-m state --state NEW -m recent --update
--seconds 60 --hitcount 4 -j DROP

Con estas reglas denegarán las conexiones a partir del 4º intento continuado y dejaremos de ver esos interminables logs en auth.log

Saludos.

Comandos del famoso Vi

Aunque en teoria ya hay editores de texto con formatos mas avanzados siempre es útil moverse rápido y bien con el Vi, sobre todo en eses momentos en que se van las "X" y hay que rescatar desde la terminal, pues ahi van un par de comandos.

.===============================.
1.=|«««««« INVOCACIÓN VI »»»»»»|
'==============================='

$vi------------------------Editar un texto sin nombre
$vi archivo----------------Editar un archivo (nuevo o no)
$vi archivo1 archivo2------Editar lista de archivos
$vi +n archivo-------------Editar archivo en la línea n
$vi +/txt archivo----------Editar archivo en la 1a línea donde aparece txt


.========================================.
2.=|«««««« MOVIMIENTOS DEL CURSOR »»»»»»|
'========================================'

Arriba----k
Abajo-----j
Derecha---h
Izquierda-l

0---------Inicio de línea
$---------Fin de línea
w---------Word: Avanzar palabra
b---------Back: Retroceder palabra
e---------End: Al final de palabra
H---------Home: Esquina sup. izq. de la ventana
L---------Last: Esquina inf. izq. de la ventana
crtl+u----Window up: Subir ventana
crtl+d----Window down: Bajar ventana
crlt+b----Page back: Retroceder página
crtl+f----Page forward: Avanzar página
nG--------Go: Salta a la línea n.
1G--------A la primera línea
$G--------A la última línea
fcar------Buscar en la línea el carácter car (hacia delante)
Fcar------Buscar en la línea el carácter car (hacia atrás)

Empezando con Linux "Los Permisos"

BREVE DESCRIPCIÓN DE LOS PERMISOS DE ARCHIVOS EN GNU/LINUX

Santos Martínez Estrada – 6 de junio de 2007
Este documento puede copiarse, modificarse y redistribuirse de acuerdo a la licencia GNU Free Documentation License versión 1.2 o posterior. Se puede encontrar la licencia completa en la dirección: http://www.gnu.org/licenses/fdl.txt

Permisos generales

Todos los archivos GNU/Linux tienen tres grupos de permisos generales: los permisos de propietario, los de grupo y los del resto. Estos permisos están representados por las letras w, x y r, para cada miembro, de tal forma que tendríamos tres grupos con estas letras o guiones en caso de faltar el permiso. La salida estándar para comprobar estos permisos es mediante el comando ls -l y nos daría algo así:

#-rw-r----- 1 santos users 80 2007-05-28 15:10 firmasantos

Esta es la salida al comando ls -l firmasantos, el cual nos proporciona también la información de propietario y grupo, así como el tamaño del archivo y la fecha y hora de la última modificación del mismo. Observaréis que no coinciden los dígitos, tres letras por tres grupos son nueve y sin embargo hay diez; esto es por que el primer dígito se reserva para agregar la opción d cuando se trata de un directorio. Lo primero es explicar a qué corresponde cada letra:

w- Este dígito da permisos de modificación al usuario/grupo/resto
x- Permiso de ejecución al usuario/grupo/resto
r- Permiso de lectura al usuario/grupo/resto

Ahora pasamos a explicar los grupos de dígitos:

Tenemos el primer grupo de tres (rw-) que serían los permisos del propietario (santos), equivalentes a lectura y escritura (read-write). Los siguientes tres dígitos (r--) corresponden al grupo (users), que solamente pueden leer el archivo; el tercero (---) es para el resto, con ningún permiso sobre el archivo.

Comandos de modificación de permisos

Entendido lo básico, veamos cómo se pueden hacer cambios en los permisos de los archivos. Por supuesto, sólo el usuario root puede hacerlos. El comando chmod es el encargado de hacer estos cambios de varias formas:
A) Ejecutando el comando seguido de una secuencia de tres números, que corresponden a cada uno de los grupos y cada número a una escala de permisos. Estos números son:
El 7 – permisos totales
El 6 – lectura y escritura
El 5 – lectura y ejecución
El 4 – lectura
El 3 – escritura y ejecución
El 2 – escritura
El 1 – ejecución
El 0 – sin permisos
Esta es la forma más habitual de hacer los cambios; vamos a poner un ejemplo para comprenderlo mejor:

#chmod 730 firmasantos
#ls -l firmasantos
#-rwx-wx--- 1 santos users 80 2007-05-28 15:10 firmasantos

Hemos cambiado los permisos al propietario (7) a “todos” y al grupo (3) a escritura y ejecución. El resto de los usuarios sigue sin permisos de ninguna clase (0).