MeltIT
29Jan/105

uTorrent y Web UI en Linux con wine

Voy a estar mostrando como instalar uTorrent y habilitar su Web UI en Linux, con wine (para correr aplicaciones de Windows en Linux). La razón de que utilizo wine y uTorrent, es porque este ya trae una Web UI (User Interface, intefaz de usuario), y es ideal para administrar de forma remota desde un navegador web. Aunque la aplicación no sea nativa, con wine corre bien. Voy a mostrar el proceso para Debian y ArchLinux, ambos sistemas con sudo configurado.

Descargando lo necesario:

En Debian, sudo apt-get install wine.

En Arch, sudo pacman -S wine.

Para descargar el uTorrent, voy a utilizar wget ya que la url de descarga es facíl de recordar:

wget http://download.utorrent.com/1.8.5/utorrent.exe


Iniciando uTorrent:

Para iniciar, utilizamos wine utorrent.exe /NOINSTALL.

Estamos iniciando wine y le pasamos de argumento la ubicación del ejecutable, en este caso utorrent.exe. Asimismo, del utorrent le estamos pasando el argumento /NOINSTALL, lo que hace es que en vez de que se abra el instalador, inicia directamente el programa, ya que no es necesario instalarlo (y a mi en lo personal se me traba).

Configurando el Web UI:

Options -> Preferences (Ctrl+P)

Sección Web UI.

Tildamos Enable Web UI.

Elegimos un usuario y contraseña a gusto. Si queremos, podemos poner enable guest account, una cuenta de invitado.

En Alternate Listening Port, podemos configurar un puerto manualmente para que se entre por ese. En mi caso, voy a utilizar 8080, pero no debería haber problema con ningun otro. (De no activar esta opción, por defecto es el puerto del uTorrent)

Finalmente, podemos limitar el panel a ciertas IP's. En el casillero Restrict access to the following IP's, enumerar con , las IP's a las cuales se les quiere permitir el acceso.

Para acceder al servidor, utilizamos en un navegador, por ej, http://10.0.0.201:8080/gui/, en el caso mio, que la IP es 10.0.0.201 y el puerto 8080.

Filed under: Linux, Server 5 Comments
29Jan/101

Linux: Compartir carpetas con SAMBA.

samba, sirve para compartir carpetas con Windows y otras PC's en red. Se pueden dar permisos por directorio, etc. Esta es una introducción básica.

Voy a estar mostrando como hacer esto en Debian y Arch. Voy a indicar utilizando sudo, acá hay una guía, por si quieren instalarlo.

Instalando lo necesario:

Necesitaremos samba unicamente.

sudo apt-get install samba, en Debian.

sudo pacman -S samba, en ArchLinux.

Configurando usuarios:

Por cada usuario de samba, debe existir el usuario en el sistema. El comando para agregar usuarios en el sistema es sudo useradd nombre_usuario. Acá hare de muestra que tenemos el usuario ya andando, en mi caso es c4b3z0n.

La info, la encontre inicialmente aquí.

sudo nano /etc/samba/smb.conf, que es el archivo de configuración de samba.

En la parte de Authentication, donde dice security = user, va a estar comentada la línea. Hay que descomentarla. Esto hace que samba pida usuario y contraseña para acceder a las carpetas/archivos.

Debajo de esa línea, agregar: username map = /etc/samba/smbusers, que indica un archivo de configuración donde estaran los usuarios del sistema relacionados a los usuarios de samba, esto es, se pueden utilizar distintos nombres en samba para acceder a las carpetas.

sudo smbpasswd -a <nombre_usuario>, para crearle una contraseña al usuario.

sudo nano /etc/samba/smbusers, y aquí el formato es: <nombre_usuario_sistema> = "<nombre_usuario_samba>". Ejemplo, en mi caso, voy a darle a c4b3z0n el nombre "archivos".

c4b3z0n = "archivos".

Ya esta listo el usuario(s).

Compartiendo los directorios home:

En la parte Share Definitions, donde dice [homes], debe quedar algo así:

[homes]
comment = Home Directories
read only = yes
browseable = no
valid users = %S

#para poder escribir,  descomentar la siguiente linea y comentar el read only
#writeable = yes

Compartiendo directorios:

Al final del archivo, agregamos:

[nombre_para_compartir]
comment = Un comentario para el directorio
read only = no
writeable = yes
path = /usr/some/dir
valid users = usuario otrousuario

nombre_para_compartir: El nombre con el cual aparecera el directorio, reemplazar.

comment: Es un comentario, realmente no es necesario.

read only: Define si es solo lectura el acceso. Debe ser lo contrario a writeable. yes ó no.

writeable: Define si se puede escribir en el directorio. Debe ser lo contrario a read only. yes ó no.

path: Define el directorio a compartir. Recordar que el usuario debe tener permisos para poder acceder/modificar ese directorio (el usuario del sistema).

valid users: Usuarios validos para el recurso compartido, enumerados por espacio.

Estas son opciones básicas para compartir directorios con samba.

Filed under: Basics, Linux, Server 1 Comment
29Jan/103

Montar carpetas compartidas de Windows en Linux con smbfs/cifs.

Si tenemos computadoras en la red con Windows y queremos leer los archivos de estas, debemos montar las carpetas con smbfs/cifs.

Archivos necesarios: en Debian: sudo apt-get install samba. De preguntar por un grupo de trabajo (WORKGROUP), usar el que tiene las PC's de Windows. En ArchLinux: sudo pacman -S samba.

Información necesaria:

En ambos casos, necesitaremos cierta información:

Tipo de sistema de archivos: cifs. Es el que utilizamos para carpetas compartidas en red.

Opciones: Puede ser opcional, es un nombre de usuario y contraseña en la computadora destino, en caso de necesitarse. username=usuario,password=contraseña. En mi caso, usuario c4b3z0n, contraseña 12345678.

Recurso: El formato es //host/carpeta. Es donde se encuentra la carpeta que deseamos montar. El host es la IP destino. Dando de ejemplo la carpeta compartida "documentos" en el host "10.0.0.18": //10.0.0.18/documentos.

Destino: Carpeta en la cual accederemos al recurso remoto. De ejemplo, una carpeta, /mnt/documentos_windows. Debe existir, sino debemos crearla antes. Generalmente, se utiliza el directorio /mnt/ para montar, no es necesario, pero acá vamos a mostrar utilizando este.

sudo mkdir mnt/documentos_windows, la carpeta destino debe existir, asique la creamos.

Montando carpetas temporalmente - mount:

Utilizare mount, para demostrar como montar temporalmente. Debe ser ejecutado como root. La sintaxis que utilizaremos es mount [-t tipo_sistema_de_archivos] [-o opciones] recurso destino.

sudo mount -t cifs -o username=c4b3z0n,password=12345678 //10.0.0.18/documentos /mnt/documentos_windows

luego, cd /mnt/documentos_windows y con ls, nos deberían aparecer las carpetas y archivos correctamente.

Montando carpetas de forma automatica - /etc/fstab:

sudo nano /etc/fstab

El archivo /etc/fstab, es el que se lee y utiliza en el comando mount -a, que se realiza al inicio del sistema. El formato lo vemos en el archivo, comentado:

<file system (recurso) > < mount point (destino) > < type (tipo sistema de archivos) > < options (opciones) > < dump > < pass >

Son separados por un TAB ó ESPACIO. dump y pass los utilizaremos en 0 ambos.

Lo cual nos queda en:

//10.0.0.18/documentos    /mnt/documentos_windows      cifs      username=c4b3z0n,password=12345678     0      0

Para aplicar estos cambios, sudo mount -a. Al iniciar el sistema, automáticamente se montaran las carpetas aquí configuradas.

Nuevamente, cd  /mnt/documentos_windows y con ls deberíamos ver todos los archivos y carpetas.

Filed under: Basics, Linux, Software 3 Comments
29Jan/100

Instalación de sudo en Debian y Arch Linux

sudo es una utilidad que permite ejecutar comandos como administrador, desde un usuario común. Es muy utilizado en Ubuntu, ya que por defecto no se puede iniciar sesión con root.

apt-get install sudo, en Debian. pacman -S sudo, en ArchLinux.

Luego de esto, debemos agregar nuestro usuario para que pueda utilizarlo. Para editar la configuración, hay que utilizar visudo. Esto nos abrirá el editor de texto nano con el archivo cargado (o con vi talvez). Tenemos que agregar, debajo de la linea que empieza con "root", lo siguiente:

nombre_de_usuario ALL=(ALL) ALL

En mi caso queda como c4b3z0n ALL=(ALL) ALL. Guardamos y salimos (F2, con nano). Y ya prescindimos de iniciar sesión como root.

La utilización es simple, nada más hay que anteponer sudo al comando, y ya esta. Ejemplo, sudo /etc/init.d/networking restart y la primera vez nos va a pedir la contraseña, luego por unos minutos no la va a requerir más, o hasta el siguiente login.

Para que no requiera contraseña sudo (en ningun momento), se puede utilizar el modificador NOPASSWD, y la línea quedará así:

nombre_de_usuario ALL=NOPASSWD: ALL

Nota: Para cambiar en Arch el editor de vi a nano, hay que cambiar la variable de entorno EDITOR. Para hacer esto, export EDITOR=nano, y ya esta.


Filed under: Basics, Linux, Software No Comments
28Jan/108

Linux: Configuración Internet/IP manual (permanente y temporal) – route, nameserver, interfaces, ifconfig, gateway

Iniciamos sesión con root, ya que estaremos realizando actividades administrativas.

Si tenemos DHCP, podemos extraer los datos de configuración del mismo. Para verificar si tenemos internet, bastara con hacer ping 8.8.8.8, que son unos DNS de Google, y seguramente hará el ping correctamente, si es que estamos correctamente conectados a internet y configurado por DHCP. De no tener DHCP, se deberían tener los datos para configurar, más abajo explica como. Escribimos ifconfig y nos aparecerán varios datos. Buscamos dentro de eth0 probablemente, o eth1 si se tienen dos placas de red puede llegar a ser (recordar esto). eth0 y eth1, son las interfaces, las placas de red. Lo que nos interesa es: inet addr, Mask. Y para terminar de obtener datos, utilizaremos route, que nos dirá el router (gateway, linea donde el destination es default, en mi caso 10.0.0.2), y ya tendremos todo lo necesario para configurar la IP. Para una configuración estática se necesitan estos datos, para un cambio de IP, se necesitan menos, si es que se desea que sea temporal.

Procederemos a establecer la configuración. Generalmente, la IP será, por ejemplo:

Si tenemos un Mask (netmask, mascara de subred) de 255.255.255.0, y una inet addr como 192.168.0.XXX (es indiferente el valor del ultimo campo), entonces podemos solo cambiar el ultimo octeto (se le dice así a cada valor entre los puntos). Y el valor debe ser entre 1 y 254 inclusive. Visto de otra forma, los octetos que en la mascara sean de 255, deben permanecer iguales.

En mi caso, mi IP era 10.0.0.9, y mi mask 255.255.255.0, entonces utilizo 10.0.0.201 [Es un numero alto 201, ya que mi router tiene DHCP, y es posible que si prendo una PC cuando el servidor este apagado, la .9 sea utilizada por otra PC, otra buena practica sería limitar el rango DHCP del router, pero eso es otro tema]. Recordar que esta IP no puede ser igual a ninguna en la red, ni como la del router.

Nota: En los archivos, desde un # hacia el final de esa línea, es un comentario, significa que la maquina no lo interpreta, es únicamente para ayudar al usuario.


Editando resolv.conf - nameserver - servidores dns:

nano /etc/resolv.conf

En este archivo, agregaremos los nameservers, o servidores DNS.

La sintaxis es simple, en cada linea agregamos nameserver ip_servidor.

En esta guía utilizare los Servidores DNS de Google. El motivo, son fáciles de recordar y tienen buen ping. Realmente se pueden utilizar cualquiera, los del ISP, o otra alternativa gratuita.

El fichero (/etc/resolv.conf) nos quedara así:

nameserver 8.8.8.8
nameserver 8.8.4.4

Luego de editarlo, nada más con guardar, ya se aplican los cambios. Presionamos F2 para Guardar y Salir (ó Ctrl+O), S de Sí para confirmar, y luego Enter, para guardar el fichero en la misma ubicación. El programa saldrá automáticamente con F2, sino Ctrl+X para salir.

Abajo explicare como realizar cambios permanentes o temporales (hasta reinicio). Realmente no hay necesidad de cambiar los nameserver's y este paso es necesario para ambos metodos explicados abajo.

Editando interfaces - configuración permanente:

nano /etc/network/interfaces

En primera instancia, agregaremos un # al inicio de la línea iface eth0 inet dhcp, de esta forma deshabilitamos la configuración automática por DHCP.

Ya tenemos todos los datos para configurar la IP, procedemos a agregarlos al archivo:

iface eth0 inet static
address 10.0.0.201 # La IP que elaboramos y la cual sera la del servidor de ahora en más
netmask 255.255.255.0 # La Mask que habiamos rescatado anteriormente de ifconfig
gateway 10.0.0.2 # Lo obtuvimos del comando route

Hemos terminado de configurar la red de forma permanente. Procedemos a reinicializarla para refrescar los cambios: /etc/init.d/networking restart

Para probar, bastara con ifconfig, route, y un ping google.com (para finalizar este ultimo, Ctrl+C). Si todo es satisfactorio, veremos ifconfig con la IP que configuramos, route con el router, y el ping sera correcto. Es importante que el ping sea a un dominio, para verificar si el DNS funciona, porque si hacemos ping a una IP, como sea 8.8.8.8, puede estar mal configurado el DNS y sin embargo el ping lo hace, porque no tiene que resolver ningún nombre de dominio.

Configuración temporal y/o parcial (hasta reinicio) - ifconfig + route:

La configuración puede ser parcial, en el caso de que el sistema ya este correctamente configurado por DHCP. En ese caso, un cambio de IP nada más alcanzara.

Este proceso consta de dos partes, configurar la ip, y agregar el gateway. Sintaxis de ifconfig: ifconfig interface [ip] [netmask xxx.xxx.xxx.xxx]. Entre [] significa opcional. Entonces, podemos configurar en una línea o dos. Siendo la ip 10.0.0.201, el netmask 255.255.255.0 y la interfaz eth0:

ifconfig eth0 10.0.0.201 y ifconfig eth0 netmask 255.255.255.0

ó en una línea: ifconfig eth0 10.0.0.201 netmask 255.255.255.0

Cabe destacar, que se puede hacer solo la configuración de la IP o del netmask, no es obligatorio que sean ambos. Si ya esta configurado por DHCP, entonces únicamente con el cambio de IP alcanza.

Para tener en cuenta, ifconfig eth0 down, por ejemplo, deshabilita la interfaz eth0. Para habilitarla nuevamente, ifconfig eth0 up.

La sintaxis de route que vamos a ver es básica, para agregar y eliminar el default gw (default gateway, puerta de enlace predeterminada). Estoy mostrando con 10.0.0.2 como gateway.

Para agregar default gw: route add default gw ip

Para eliminar default gw: route del default gw ip

Aplicado en mi caso: route add default gw 10.0.0.2


Posibles errores:

Network is unreachable: El problema es el gateway, un ping al area local debería funcionar y uno a un host externo, como 8.8.8.8, no.

Unknown host (example.com): El problema son los DNS, no se puede resolver el dominio. Tambien puede ser porque el dominio no existe, ó el gateway esta mal configurado y no se puede resolver el dominio.

Recordar que acá muestro nada más que el concepto minimo para configurar una red, ifconfig de por si tiene más opciones, y lo mismo con interfaces.

27Jan/105

Linux VNC Server: fluxbox + X11 Server + X / GUI Apps (uTorrent, JDownloader)

El propósito de esta guía es como levantar un VNC Server, con Fluxbox, donde correrán aplicaciones que necesiten GUI. El destino principal es para una maquina que corra como servidor, además del SSH, esta es una linda interfaz, y muy útil, en especial porque muchos programas útiles, por desgracia, no pueden prescindir de la GUI, como el JDownloader.

Estaré mostrando todo en un sistema Debian, con sudo. Por defecto, Debian no trae sudo, pero una instalación de Ubuntu si, en este sistema debería salir andando perfectamente. Todos los comandos que estén precedidos por sudo, deben ser ejecutados por un administrador en el caso de no tener sudo.

¿Que es un Servidor VNC en sí?:

Un servidor VNC, es un servidor X (servidor grafico, ventanas, en Linux), el cual mantiene una sesión, y es visible mediante un visor VNC. Así es entonces, que en el servidor VNC corremos aplicaciones en un entorno grafico, y podemos acceder a estas y mantenerlas abiertas, desde un visor.

Instalando lo necesario:

sudo apt-get install vnc4server xterm fluxbox wine

wine es opcional, ya que es para el uTorrent.

Primer inicio del VNC Server:

Primer Inicio Servidor VNC

En el primer inicio, el vncserver nos pedirá que le ingresemos una nueva contraseña, esta es para conectarnos luego con el visor,  desde otra computadora por red. Entonces ejecutamos vncserver, y nos pedirá contraseña y confirmación, y luego nos mostrara algo como "New `meltitdescargas:1 (c4b3z0n)` desktop is meltitdescargas:1". El :1, indica la ubicación del display, este puede ser, :1, :2, :3, etc. Lo anterior al :, es el nombre de nuestro sistema (uname -n). De abrir sucesivos vncserver, estos serán, :2, :3, etc.

Nota: Se puede iniciar el servidor eligiendo antes cual será el display, ej, vncserver :5, iniciara el servidor VNC en el display 5, de  estar disponible. Útil para siempre saber donde esta el servidor.

Para matar el servidor, se puede matar el proceso, o invocando vncserver -kill :numero, en mi caso, vncserver -kill :1.

Para reasignar la contraseña del servidor vnc, se utiliza vncpasswd.

Probando el servidor VNC:

Estaré utilizando Windows, y demostrare como conectarse con el VNC Viewer de Real VNC, versión ejecutable sin instalador,  freeware.

En linux, se puede utilizar vncviewer, iniciándolo sin parámetros, hace que el mismo pregunte servidor, contraseña, de forma interactiva.

En ambos casos, primero debemos averiguar la IP del servidor. Esto lo podemos hacer mediante, sudo ifconfig (NOTA, de estar ejecutando en un servidor, seguramente ya le has configurado una IP estática. De no ser así, y si se trata de un servidor, te recomiendo que le asignes una IP estática, lo cual te facilitará la tarea de entrar al servidor siempre), y probablemente sea la de eth0 - inet addr:xxxx.xxx.xxx.xxx.

IP ifconfig

El formato para conectarse al servidor VNC es: ip:numero_display. Entonces en mi caso, 10.0.0.201:1. Luego la contraseña es la que creamos al principio, en el primer inicio del servidor.

Iniciando aplicaciones en el servidor VNC, desde cualquier consola (export DISPLAY):

Para utilizar el servidor VNC como display, nada más hace falta asignar la variable DISPLAY, esta apunta a un servidor X, donde correrán las aplicaciones. En la practica, esto puede ser utilizado para apuntar a cualquier servidor X, no únicamente al VNC.

Tip: Para ver hacia donde apunta actualmente el DISPLAY, basta con hacer un echo $DISPLAY, desde bash.

Para asignar DISPLAY, es tan simple como utilizar export. export, lo que hace es asignar variables de entorno, como DISPLAY.
Para ver los valores, se utiliza echo $VARIABLE, o utilizarlas, se antepone el $. Su sintaxis es: export VARIABLE=VALOR.

La sintaxis de DISPLAY, es, servidor:numero. Combinado con export, sería, export DISPLAY=servidor:numero.

Entonces, para efectivamente utilizar el servidor VNC, suponiendo que este se encuentra en :1, si estamos trabajando en la misma pc (en una terminal en PuTTY por ejemplo), bastará con hacer export DISPLAY=localhost:1. Utilizo localhost, porque estoy en la misma PC. Podría haber utilizado su IP de internet ó LAN también, así como la de otro equipo en la red, ej, export DISPLAY=10.0.0.201:1.

Configurando el servidor VNC - ejecución automática de aplicaciones al inicio del servidor:

El archivo ~/.vnc/xstartup, es un script de bash, que se ejecuta cuando inicia el servidor VNC. Aquí podemos automatizar tareas como ser, abrir el fluxbox, abrir un xterm (por defecto viene así), ó talvez iniciar alguna aplicación. También por defecto se abre el x-window-manager, pero nosotros queremos utilizar fluxbox, entonces:

nano ~/.vnc/xstartup, para editar el archivo.

En la línea x-window-manager &, agregamos un #, al principio de esta, para comentar esa línea, y así evitar la apertura automática del x-window-manager. Debajo de esa línea, agregamos fluxbox &. Si deseamos evitar el inicio de la consola automática, debemos comentar la línea que comienza con x-terminal-emulator, agregando un # al inicio de esta.

Auto-iniciar servidor VNC al prender la PC:

nano /etc/rc.local
El archivo rc.local, en pocas palabras, se ejecuta luego de terminar el proceso de inicio, en ultima instancia. Lo que vamos a hacer, es agregar una línea donde correremos el vncserver así este se inicia automáticamente. Utilizaremos su, que nos permite, mediante el modificador -c, correr un comando como otro usuario, ya que no vamos a correr el servidor como root.

Sintaxis: su -c "comando" nombre_usuario.

Mi usuario es c4b3z0n, y el comando es vncserver :1. La línea nos quedara en: su -c "vncserver :1" c4b3z0n, esta hará que se inicie un servidor vnc, en el display :1, y que se ejecute como el usuario c4b3z0n.

Entonces, en la línea arriba de exit 0, escribimos, su -c "vncserver :1" c4b3z0n &, notar el &, para que se inicie y continúe.

El servidor VNC esta listo en este punto.


Configurando fluxbox:

Esto es totalmente opcional, pero voy a agregarlo ya que me parece útil.
nano ~/.fluxbox/menu
En fluxbox, al presionar el botón derecho, aparece un menú. Este es personalizable, y su ubicación es ~/.fluxbox/menu.

Por defecto en Debian, el archivo es así:

[begin] (fluxbox)
[include] /etc/X11/fluxbox-menu
[end]

La primera línea, [begin], define el comienzo del menú, con título "fluxbox". La segunda línea, [include], define que se incluya el archivo, en este caso, /etc/X11/fluxbox-menu. Esto significa, que utiliza lo que dice el archivo ese al que apunta, que en este caso, es el menú de debian, con todas las aplicaciones. La ultima línea, [end], indica que finaliza el
menú.

Personalmente, voy a sacar la línea [include], ya que tiene muchos programas que no voy a utilizar. Podemos comentarla, agregandole un # al inicio, ó borrarla.

Agregando entradas:
Yo voy a mantener mi menú de fluxbox a lo más chico posible.
La sintaxis para agregar un comando es: [exec] (texto_mostrar) { comando }. Ejemplo de un menú de
fluxbox:

[begin] (fluxbox)
[exec] (Bash) { x-terminal-emulator -T "Bash" -e /bin/bash --login}
[exec] (Leafpad) { leafpad }
[exec] (uTorrent) { wine ~/utorrent.exe /NOINSTALL }
[exec] (JDownloader) { sh ~/startjd.sh }
[end]

Bash, ejecuta la terminal.

Leafpad es un editor de texto liviano para X, esta interesante. (sudo apt-get install leafpad).

En el caso de uTorrent, wine ~/utorrent.exe /NOINSTALL, es un caso de una línea bastante completa y fácil de explicar. En primer lugar, llamamos a wine, quien recibe de parámetro la ubicación del ejecutable y asimismo, le pasamos el parámetro /NOINSTALL, al utorrent.exe. Es un simple proceso, como ejecutar en una terminal.

JDownloader, sh ~/startjd.sh, Utilizamos sh para ejecutar un script, startjd.sh.

En esta configuración se explica básicamente como usar el menú de fluxbox. Es bastante simple, y se pueden usar scripts, como en el caso del JDownloader, para simplificar una línea compleja.

Hasta aquí llega la idea básica de la guía. En otras guías explico como instalar el JDownloader y el uTorrent, como soluciones a un
servidor de descargas básico. Esta guía es una parte importante de la de instalación desde cero de un servidor Linux.