viernes, 29 de abril de 2011

Descargar una página completa por terminal

¿Cuantas veces te pasó que estás leyendo atentamente Hay ardillas en la red y te quedas sin internet? ¿Y que haces después? Nada, te quedas triste, lleno de impotencia y con ganas de seguir leyendo... Entonces llamas a tu proveedor de internet que te dice que "Hay un problema en la zona" y que "están trabajando para solucionarlo".
Para que eso no te pase mas a vos ni a las millones (?) de personas que leen este maravilloso (?) blog vamos a solucionar este problema a través de un simple comando en la terminal. El mismo nos descargará en nuestro disco rígido la pagina completa de, en este caso, Hay ardillas en la red. Y si te volves a quedar sin internet ya no importa porque podes leer todo de manera "Offline".
Para descargar la página completa escribimos en la terminal:

wget -r -k http://hayardillasenlared.blogspot.com

El parámetro -r es para hacer la descarga recursiva y el -k para cambiar los links a direcciones locales.
Esto te creará una carpeta en tu /home/tuusuario con todos los archivos de la pagina descargados:


Si no tenes ganas de descargar absolutamente todas las entradas del blog podes usar el parámetro -c que solo te descarga la página principal (que generalmente contiene las últimas entradas). Quedaría así:

wget -c http://hayardillasenlared.blogspot.com

Por supuesto que pueden usarlo para cualquier otra página ;)

lunes, 25 de abril de 2011

Cambiar tiempo de duración de superusuario

Hola mis queridas ardillas en la red (?). El tip que traigo hoy, como siempre, es sencillo pero útil. Ustedes sabrán que cada vez que intentan instalar algo en Linux deben hacerlo como superusuario y escribir su respectivo password. Por defecto Ubuntu nos da un tiempo de 15 minutos (si es que dejamos la terminal en la cual ya introducimos el password abierta) antes de volver a pedirnos la contraseña. Esto lo podemos cambiar editando un archivo.
Si queremos seguridad extrema (?) y que cada vez que usamos el superusuario nos pida el password escribimos en la terminal lo siguiente:

sudo nano /etc/sudoers

Y debajo de la línea que dice Defaults env_reset escribimos lo siguiente:

Defaults:usuario timestamp_timeout=0

Luego pulsamos Ctrl + O para guardar, ENTER para mantener el nombre del archivo y Ctrl + X para salir. Vale aclarar que donde dice "usuario" va tu nombre de usuario o el nombre de usuario al que le quieras aplicar este cambio.
También podemos, en lugar de que nos pida la contraseña CADA VEZ que necesitamos usar sudo, configurarlo para que la pida pasada una determinada cantidad de minutos. Podríamos poner 5 minutos, 30 o la cantidad que deseemos. En este ejemplo lo configuramos para 30 minutos. Editamos el mismo archivo (sudo nano /etc/sudoers) y debajo de la linea Default env_reset agregamos lo siguiente:

Defaults:usuario timestamp_timeout=30

Ahí ya nos volverá a pedir el password luego de 30 minutos.
Cabe destacar que los comandos también funcionan en Debian.
Ésto ha sido todo por hoy =)

viernes, 15 de abril de 2011

Bloquear ingreso de usuarios en Ubuntu o eliminarlos

Hola mis ardillas! (?) en esta entrada vamos a ver unos sencillos comandos para tener en cuenta ya que pueden sernos de mucha utilidad.

1. Eliminar usuarios:

sudo userdel -r nombredeusuario

Con este comando vamos a eliminar al usuario, a su /home y su buzón de correo. Tenemos ademas la opción de eliminar un usuario en uso, para ello debemos usar el parámetro -f (forzar). Esto quiere decir que si por ejemplo estamos logueados con el usuario "pepito" y escribimos en la terminal "sudo userdel -f pepito" si bien nos va a aparecer un mensaje diciendo que el usuario está actualmente dentro del sistema vamos a ver que en realidad lo borró. Podemos comprobarlo intentando instalar algo o podemos desloguearnos e intentar loguearnos de nuevo con ese usuario:


Si te interesa crear un nuevo usuario para probar y no sabes como hacerlo podes pasar por este link donde explico como crear un usuario y agregarlo a sudoers (o sea, que nos permita ejecutar "sudo")

2. Bloquear usuarios:

sudo usermod -L nombredeusuario

Con este comando en lugar de borrar usuario, home y buzón de correo sólo le impedimos el ingreso al sistema. Es decir, todos los datos del usuario van a seguir en la PC, solo que el usuario no podrá loguearse. Para desbloquearlo y permitirle el ingreso nuevamente debemos escribir en la terminal:

sudo usermod -U nombredeusuario

3. Impedir el acceso de cualquier usuario (excepto de root):

sudo touch /etc/nologin

Luego de ejecutar este comando solo el usuario root podrá loguearse en la máquina (tengan cuidado que en Ubuntu el root viene desactivado por defecto).
Para sacar a los usuarios que se encuentran actualmente conectados debemos ejecutar:

sudo init 1

Esto bajará el nivel de ejecución a monousuario.
Para saber que nivel se está ejecutando actualmente escribimos en la terminal:

runlevel

Esto nos dirá el nivel en el que estamos, en Ubuntu (y Debian) suele ser 2.

Cuando vayan a ejecutar touch /etc/nologin tengan en cuenta 2 cosas:
1- Para que vuelva a la "normalidad", es decir, para que pueda loguearse cualquier usuario (que no sea root) otra vez deben borrar el fichero /etc/nologin.
2- Importantisimo. Como dije antes, en Ubuntu la cuenta de root viene desactivada por defecto, entonces si no activan root antes de hacer esto no van a poder entrar con ningún usuario.

Para activar la cuenta de root:

sudo passwd root

Les va a pedir que ingresen la "nueva" contraseña de root y la confirmen. La ingresan y listo, ya quedo activada.

Por ultimo, les cuento algo graciosisimo (?) que me pasó cuando probaba lo de touch /etc/nologin. Lo ejecuté sin recordar lo que tanto remarco en la entrada... que la cuenta root de Ubuntu viene desactivada por defecto, entonces cerré la sesión y obviamente cuando intenté acceder como root me di cuenta de 2 cosas, primero que no sabía la clave y segundo que tampoco creía haberle puesto clave con lo cual jamás iba a poder entrar ¬¬
Si te pasó esto mismo por no leer las advertencias la solución es:
- Iniciar la PC con algún cd de Linux que nos permita ingresar en modo rescate (en mi caso fue un cd de Fedora 10 que no se que hacía acá pero me salvó)
- Después de iniciar, te va a decir en donde se va a montar la partición, en mi caso fue: /mnt/sysimage. Una vez iniciada la shell ejecuté: rm /mnt/sysimage/etc/nologin
Es decir, borré el fichero que me impedía entrar con otro usuario que no sea root y al reiniciar ya pude entrar con mi usuario normal. Y si, apenas terminó de cargar activé la cuenta de root, no vaya a ser que me pase otra vez :P
Eso fue todo por hoy!

lunes, 11 de abril de 2011

Borrar Kernels viejos desde Synaptic o Ailurus

Como muchos de ustedes se darán cuenta a medida que actualizamos nuestro Ubuntu, y dentro de esas actualizaciones hay alguna del kernel, los mismos se van sumando al grub haciendo un listado bastante extenso y sin sentido.
Hoy vamos a ver como eliminar esos kernels viejos, dejando solamente el que estamos usando. A mi, particularmente, me gusta dejar el que estoy usando y uno mas, por las dudas... La verdad es que nunca necesite usar otro que no fuera el último, pero dejar uno mas no cuesta nada =)

A traves de Synaptic:
Lo primero es chequear que versiones del kernel tenemos instalados en nuestro sistema. Para verlo escribimos en la terminal:

sudo dpkg -l | grep linux-image

Ésto nos dara un listado de los kernels instalados. Para saber cual es el que está en uso escribimos:

uname -r

Eso nos dará la versión del kernel que está en uso. Para que lo vean mas gráficamente les va a aparecer algo así:


En mi caso los kernels instalados son el 2.6.32-21, 2.6.32-27 y 2.6.32-28. Y el que está en uso es el último. Como dije antes, si bien podría borrar el 2.6.32-21 y el 2.6.32-27, solo borraré el 2.6.32-21 dejando el 2.6.32-27 por si las moscas.

Ahora abrimos SynapticSistema > Administración > Gestor de paquetes Synaptic
Y en el cuadro de búsqueda escribimos: "linux-image"


Luego le hacemos click con el botón derecho al paquete que dice linux-image-2.6.32-21-generic (o el que corresponda según el caso) y elegimos  "Marcar para desintalar completamente". Presten mucha atención a lo que están borrando y asegúrense que es la versión del kernel que desean borrar.
Por último pulsamos en "Aplicar" y el paquete será eliminado.

A traves de Ailurus:
Si no te gusta Synaptic podes hacerlo vía Ailurus, programa del que hablé hace algún tiempo.

Abrimos Ailurus: Aplicaciones > Herramientas del sistema > Ailurus
Luego vamos a "Limpiar", elegimos "Kernels de Linux sin usar" y sobre la derecha nos aparecen los kernels que NO están en uso. Acá si podrías eliminarlos todos, pero como dije antes, dejemos siempre uno por las dudas.
Después de seleccionar los kernels elegimos "Eliminar" a la derecha de la pantalla y listo.


Nada mas, espero que os haya iluminado. Gracias, vuelvan pronto :P

lunes, 4 de abril de 2011

Instalar y configurar FTP en Debian con ProFTPd

Como nadie sabe (porque nunca lo dije) amo Dropbox, no solo me parece muy útil para acceder a mis archivos desde cualquier lugar, sino que además cada vez que tengo que subir algo lo hace de manera muy veloz. Obviamente esto último depende de la conexión de internet, pero si es buena Dropbox la aprovecha 100%.
Ahora, ¿por que hablo de Dropbox si el título dice como instalar un FTP? Bueno, en realidad la idea nace a raiz de Dropbox. Si bien es extremadamente útil convengamos que 2GB no es demasiado espacio disponible, aunque con algunos "trucos" que andan dando vuelta por internet uno puede subir su capacidad de almacenamiento (yo tengo actualmente 3.3GB). Así y todo nunca alcanza. Ahí fue cuando se me ocurrió instalarme un FTP en una máquina vieja que tengo con, el cada vez mas querido, Debian Squeeze 6 como para aliviar un poco a Dropbox y no cargarlo tanto con cosas que quizas no son vitales.
Este pequeño tutorial nos va a servir para instalar y configurar un FTP en Debian Squeeze aunque debería funcionar también en nuestro querido y popular Ubuntu.

Instalación:
Sencilla, a traves de nuestro amado apt-get:

sudo apt-get install proftpd

Creación de usuario para FTP:
El ProFTPd nos crea un usuario por defecto llamado, justamente, ftp lo cual a nosotros nos da asco y no lo usaremos. Vamos a crear uno un poco menos obvio. Para ello escribimos:

sudo adduser usuarioftp

Está bien, está bien... también es obvio, pero no tanto =)
De mas esta decir que pueden elegir el nombre que quieran. Después de ingresar esa línea nos pedirá que le asignemos una pass y una serie de datos como Nombre Completo, etc que no hace falta ni que sean reales ni completar, podemos darle todo ENTER.

Cambiar password de usuario:
Si algun día, por alguna razón, necesitamos darle los datos de acceso a alguien tenemos después la posibilidad de modificar la contraseña de nuestro usuarioftp. Para hacerlo escribimos en una terminal:

sudo passwd usuarioftp

A continuación editamos el archivo /etc/passwd y vemos que /home tiene asignado nuestro usuario. Aparecerá algo así:

usuarfioftp:x:1002:1002:Usuario FTP,,,:/home/usuarioftp:/bin/false

Ahí nos indica que nuestra home será /home/usuarioftp (la x es nuestra contraseña que no aparece por estar encriptada). Debemos asegurarnos que al final diga /bin/false en lugar de /bin/bash. En caso de que aparezca esto último debemos cambiarlo.

Si fue necesario cambiarlo debemos verificar en /etc/shells que aparezca la shell falsa /bin/false. Escribimos en una terminal:

sudo nano /etc/shells

Y si en ningún lado aparece /bin/false lo agregamos al final.
Ahora procedemos a darle los permisos a nuestra carpeta. Escribimos en terminal:

chown -R usuarioftp /home/usuarioftp/

El parámetro -R es para hacer recursivo el comando, con lo cual si vamos a crear carpetas dentro de /home/usuarioftp nos conviene primero crear las carpetas y después ejecutar la línea.

Para evitar que los usuario se logueen por FTP editamos /etc/ftpusers:

sudo nano /etc/ftpusers

Seguramente ya figuran algunos usuarios, podemos añadir clásicos como root, anonymous y ftp. Todos los usuarios que figuren en este archivo NO podrán loguearse. Mas adelante explico una forma de denegar el acceso de todos excepto del usuarioftp.

Para ver el log de Proftpd:

sudo nano /var/log/proftpd/proftpd.log

Aquí nos aparecerán todos los intentos de login.

Ahora procedemos a la configuración del FTP para ello editamos el archivo proftpd.conf:

sudo nano /etc/proftpd/proftpd.conf

Vamos a configurar algunas cosas esenciales. A continuación vemos las lineas de ese archivo:

ServerName  "Nombre_del_servidor_ftp"   #De mas está decir que acá va el nombre del servidor =)
ServerType   standalone/inetd      #Nosotros usaremos standalone.
DeferWelcome      off/on  #Elegimos off para no mostrar mensaje de entrada.

MultilineRFC2228   on/off   #Elegimos on, esto hará a nuestro ftp compatible con casi todos los clientes ftp.
DefaultServer        on/off   #Elegimos on, toma las opciones default de un servidor ftp.
ShowSymlinks         on/off    #Elegimos on, podremos ver los links, si el link esta fuera de nuestro home no tendremos acceso a él.

TimeoutNoTransfer   <numero>  #Número máximo de segundos que puede estar un cliente en el ftp sin  transferir nada. Por defecto 600 seg.
TimeoutStalled      <numero>  #Número máximo de segundos que puede estar el cliente-servidor sin recibir información de una transferencia. Por defecto 600 seg.
TimeoutIdle         <numero>  #Número máximo de segundos que puede estar  un usuario sin hacer nada. Por defecto 1200 seg. 

DenyFilter          \*.*/      #Es un filtro de protección para el ProFTPd.

DefaultRoot    /home/usuarioftp #Para mi, vital. Acá le decimos a que carpeta va a acceder. Si no lo configuramos accede a todas, si configuramos por ejemplo /home accede a todos los /home. En este caso tendrá acceso solo a su /home.

Port  <numero> #Acá va el puerto al que conecta nuestro servidor, por defecto el 21.

MaxInstances      <numero>     #Cantidad máxima de conexiones al FTP que se pueden hacer a la vez.

AllowOverwrite on     #Elegimos on para sobreescribir ficheros existentes.

TransferLog /var/log/proftpd/xferlog  #Loguea las transferencias que se realicen en el FTP.

SystemLog   /var/log/proftpd/proftpd.log #Se guardan los intentos de login.

Por último, y como indique anteriormente, si queremos denegar el acceso de todos, excepto del usuario usuarioftp añadimos esto al final del archivo de configuración:

<Limit LOGIN> #Limitamos a quienes intentan loguearse en el FTP.
AllowUser usuarioftp  #Allow es para indicar a quienes vamos a aceptar.
DenyAll    #Deny es para indicar a quienes denegamos el ingreso. Podemos poner los usuarios y separarlos por comas o, como en este caso, podemos elegir DenyAll e impedir el acceso de todos excepto del que figura en Allow.
</Limit>
RequireValidShell   off

Administrar el FTP:
Tenemos 2 comandos que nos serán de gran utilidad:

ftptop
ftpwho

ftptop nos indica en tiempo real quienes están conectados a nuestro FTP. ftpwho nos sirve para ver en un momento determinado quien está conectado.

Para cerrar el servidor y mostrar un mensaje con el motivo por el cual se encuentra inaccesible podemos usar la herramienta ftpshut:

sudo ftpshut now "En este momento se están realizando tareas de mantenimiento, disculpe las molestias"

Después deberán ejecutar ftpshut -R para hacerlo accesible nuevamente.

Por último, para reiniciar el servicio ProFTPd:

sudo /etc/init.d/proftpd restart

Si queremos detenerlo debemos escribir stop en lugar de restart. 
Eso fue todo por hoy, espero que les haya sido útil =)

Referencias: WikiLearning y The bit Developer