domingo, 2 de septiembre de 2012

Autenticacion de usuarios en PostgreSQL

Este es el permalink sobre el tema en el wiki de Postgresql. Es que siempre se me olvida como entrar. Si alguno llega hasta aquí buscando información, pues ala, directo a la fuente.
Autenticación del cliente en Postgresql

sábado, 18 de agosto de 2012

Configuracion de Base de Datos Postgresql para Photo Organizer.


Recientemente me he lanzado a instalar PO (PhotoOrganizer) que es junto con Pixelpost la mejor de las aplicaciones web gratuitas, para mi gusto, para montar un photoblog. Esta aplicación funciona con Postgresql una base de datos a la que no estoy acostumbrado y la configuración inicial ha sido una tortura de varios días tras los que, gracias a mi cabezoneria, he conseguido, al fin, que funcione mi fotoblog


La verdad es que no creo que sea capaz de hacerlo de nuevo porque ha sido un poco de chiripa, pero por si acaso tuviera que hacerlo pongo aqui los enlaces a las paginas que me han ayudado a hacerlo. Los problemas han venido primero por la cadena de conexion y luego por el lenguaje "plpgsql" que debía crearse para la base de datos de PO y sobre todo por la confusion de usuarios y passwords necesarios para conectarse a psql, a la bd, al servidor etc y la cantidad de combinaciones posibles que hay para la DSN (database source name) string.
Lo mejor es seguir los pasos de La Guia Ubuntu para Postgres en la que esta explicado de forma clara como hacer una instalacion limpia (la desisntalacion de una version anterior seria igual pero en vez de install, remove, y en vez de version x.x version x.x-1)
Hay que tener claro que la instalacion de PO la estamos haciendo en la maquina local donde esta el servidor Apache y el servidor de BBDD Postgres por lo que por lo que en la DSN string no hay que poner url (es "localhost" o 127.0.0.1) pero en el config-site.php si hay que poner la url del sitio ya sea dominio contratado o IP (fija en mi caso).
En esta guía también se explica como configurar el acceso remoto a la bd.
Existe una instalación gráfica para Postgres tanto para Linux como para Windows o Mac Os pero yo no la he usado porque mi sistema es Ubuntu Server y no tiene Entorno Gráfico.
En Dbas blog hay un manual fácil de pslq que hará falta usar para la creación del lenguaje plpgsql en la base de datos de PO.
Y este el el método que utilice para crear dicho lenguaje: http://johansoft.blogspot.com.es/2007/09/solucion-error-language-plpgsql-does.html
La pista me la encontré en el bugtrack de shaftnet: http://bugs.shaftnet.org/task/384
También he revisado El Blog de Joel y por supuesto los Archivos de Postgres.
Todo desde mi casita conectandome con Putty SSH Client y con Webmin.
Me ha hecho tanta ilusión conseguir instalarlo que ni siquiera he accedido todavía. 
Vamos allá y luego posteare mis impresiones tras el uso.

sábado, 21 de julio de 2012

Instalar y configurar ProFTPD en Ubuntu

Este pequeño tutorial nos va a servir para instalar y configurar un FTP en Debian y derivados como 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 nos gusta y no lo usaremos. Vamos a crear uno un poco menos obvio. Para ello escribimos:

sudo adduser nuestrouserftp

Está claro que hay que sustituir "nuestrouserftp" por el usuario que queramos utilizar.
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 usuario ftp. Para hacerlo escribimos en una terminal:

sudo passwd nuestrouserftp

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

nuestrouserftp:x:1002:1002:Usuario FTP,,,:/home/nuestrouserftp:/bin/false

Ahí nos indica que nuestra home será /home/nuestrouserftp (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 fuese necesario cambiarlo deberiamos 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 nuestrouserftp /home/nuestrouserftp/

El parámetro -R es para hacer recursivo el comando, con lo cual si vamos a crear carpetas dentro de /home/nuestrouserftp 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 a "nuestrouserftp".

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 FTPftpwhonos 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

lunes, 27 de febrero de 2012

Como apagar Ubuntu desde consola

Para los que no estén usando entorno gráfico (por ejemplo en servidores), simplemente estén usando la consola en ese momento, o quieran ser los más 1337-geeks.

Para apagar el sistema tenemos tres comandos distintos (halt, poweroff y shutdown), el tercero bastante configurable.
$ sudo halt
$ sudo poweroff
shutdown tiene distintas opciones, por ejemplo podemos decirle que lo apague ahora mismo:
$ sudo shutdown -h now
o en x tiempo, siendo x el número de minutos que tiene que esperar para apagarlo, por ejemplo en 5 minutos:
$ sudo shutdown -h +5
También podemos decirle que se apague a una hora determinada (reloj en sistema de 24 horas, es decir, de 0 a 23), por ejemplo a las 22:30:
$ sudo shutdown -h 22:30
Para reiniciar el sistema tenemos dos: reboot y de nuevo shutdown, con todas las opciones mencionadas antes sólo que en lugar de usar el argumento -h (de halt), usaremos el -r (de reboot). Manteniendo los mismos ejemplos de antes:
$ sudo reboot
$ sudo shutdown -r now
$ sudo shutdown -r +5
$ sudo shutdown -r 22:30
Estos comandos son imprescindibles a la hora de gestionar un ordenador remotamente por SSHpara reiniciar o apagar la máquina. También podemos jugar a programar el propio ordenador para que se apague o reinicie cuando queramos sin que hagamos uso de las tareas programadas (crones).
Extraido de Tuxpepino.

martes, 14 de febrero de 2012

Configurar MySQL para que acepte conexiones desde otro equipo.

Para poder permitir la conexión externa a MySQL Server (desde otro PC de la red) deberemos hacer lo siguiente: si hemos instalado una versión de MySQL Server inferior a la 4.1, abriremos MySQL Administrator y nos situamos en "Startup Parameters", nos aparecerá una ventana para selección de fichero, seleccionamos "mysqldump" y pulsamos "Aceptar":



A continuación desmarcamos la opción "Disable networking" para permitir conexiones externas y pulsamos en "Save changes":



Como se puede observar en la parte inferior de la ventana anterior nos indica la ubicación y el nombre del fichero de configuración que también se puede modificar manualmente: /etc/mysql/my.cnf, abriendo este fichero y comentando la línea "skip-networking" añadiendo "#" delante produciremos el mismo efecto que haciéndo en MySQL Administrator. En nuestro caso hemos utilizado la aplicación "vi" para editarlo, desde el terminal hemos puesto:

vi /etc/mysql/my.cnf

A continuación pulsamos "i" para editar el fichero, localizamos la línea donde aparece "skip-networking" y colocamos "#" delante, pulsamos Escape, luego pulsamos ":wq" e INTRO para cerrar el fichero y guardar los cambios:



Para todas las versiones de MySQL Server también tendremos que comentar la línea: "bind-address = 127.0.0.1", lo podemos hacer igual que en el caso anterior, tecleando en un terminal vi /etc/mysql/my.cnf, pulsamos "i" para editar, buscamos la línea donde aparecezca "bind-address = 127.0.0.1", insertamos "#" delante, guardamos y cerramos pulsando Escape, luego ":", a continuación "wq" e INTRO. El contenido del fichero /etc/mysql/my.cnf quedará del siguiente modo (para la versión 4.1) (hemos marcado en negrita y más grande la línea a comentar):


#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "/var/lib/mysql/my.cnf" to set server-specific options or
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
#log = /var/log/mysql.log
#log = /var/log/mysql/mysql.log
# Error logging goes to syslog. This is a Debian improvement :)
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-external-locking
#
# For compatibility to other Debian packages that still use
# libmysqlclient10 and libmysqlclient12.
old_passwords = 1
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address = 127.0.0.1
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
#
# Query Cache Configuration
#
query_cache_limit = 1048576
query_cache_size = 16777216
query_cache_type = 1
#
# Here you can see queries with especially long duration
#log-slow-queries = /var/log/mysql/mysql-slow.log
#
# The following can be used as easy to replay backup logs or for replication.
#server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
# See /etc/mysql/debian-log-rotate.conf for the numberof files kept.
max_binlog_size = 104857600
#binlog-do-db = include_database_name
#binlog-ignore-db = include_database_name
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# If you want to enable SSL support (recommended) read the manual or my
# HOWTO in /usr/share/doc/mysql-server/SSL-MINI-HOWTO.txt.gz
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

[mysqldump]
quick
quote-names
max_allowed_packet = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer = 16M


Reiniciaremos MySQL Server (para que los cambios tengan efecto) con el comando:

/etc/init.d/mysql restart

tras el reinicio podremos comprobar (con cualquier escaneador de puertos) que se ha abierto el puerto 3306:



Como último paso para permitir conexiones externas accederemos a MySQL Administrator poniendo el comando:

mysql-admin

Introduciremos los datos de conexión (host, usuario y contraseña) y accederemos a la ventana de MySQL Administrator, seleccionaremos la opción "User Administration", luego pulsaremos con el botón derecho sobre el usuario "root" , nos aparecerá un menú emergente y seleccionaremos la opción "Add Host":



En la ventana de "Add Host" marcaremos "Hostname or IP" e introduciremos la IP del PC al que queramos permitirle el acceso remoto (admite comodines, por ejemplo 192.168.1.%) y pulsaremos "Aceptar":



A continuación podremos especificar el nombre del usuario al que le permitiremos el acceso en "MySQL User" y la contraseña en "New Password" y "Confirm Password":



Por último, accederemos a la pestaña "Schema Privileges" para especificar a qué bases de datos tendrá acceso el usuario y qué permisos tendrá sobre las mismas, para ello marcaremos en "Schema" la base de datos a la que queramos permitir el acceso y en "Available Privileges" marcaremos las acciones permitidas sobre la base de datos:



a continuación pulsaremos el botón con una flecha a la izquierda (Grant Privilege) y los privilegios seleccionados pasarán a "Assigned Privileges". Para guardar los cambios pulsaremos en "Apply Changes":



Con esto habremos terminado de configurar MySQL Server para el acceso tanto local (desde la propia máquina donde está instalado) como remoto (desde equipos de la red local o, incluso equipo de fuera de la red local).

Será conveniente reiniciar otra vez MySQL Server con el comando:

/etc/init.d/mysql restart

Desde cualquier otro PC que tenga instalado MySQL Administrator o cualquier programa que pueda acceder a MySQL podremos comprobar que funciona correctamente.



En nuestro caso hemos utilizado "AjpdSoft Administración BD" para conectarnos mediante ODBC a la base de datos "catalogo" (creada previamente), hemos creado una tabla, hemos insertado un registro y hemos hecho una consulta de selección para que lo muestre:


create table prueba (campo1 varchar(2), campo2 date);

insert into prueba (campo1, campo2) values ('1', STR_TO_DATE('23/07/2005', "%d/%c/%Y"));

select * from prueba



Desde el equipo con Ubuntu Linux Debian donde está instalado MySQL Server, podremos comprobar que las sentencias SQL anteriores han surtido efecto:




Para distribuciones no Debian (Suse, Red Hat, ...) podremos descargar los ficheros necesarios para la instalación de la propia web de mysql: "http://www.mysql.com", una vez descargados los descomprimiremos y los instalaremos. El resto de la configuración es igual que en distribuciones Debian, tal como se explica en este manual.
Extraido de un articulo de AJPDSOFT, un sitio muy recomendable donde encontrareis donde se recopila informacion 100% gratuita y Open Source y a los que agradezco muchisimo el esfuerzo que eso supone.
Gracias

lunes, 13 de febrero de 2012

Liberar Modem ZTE y usarlo para otra compañia.

Aqui teneis el enlace al programa para liberar modems usb:
Despues hay que usar el programa del fabricante del modem para realizar la conexion:
Join Air si es ZTE o Mobile Partner si es Huawei.
Hay que configurar el programa de conexion con los datos de nuestra compañia:
1, Settings -> Add -> Add RAS Config
2, Config name -> Nombre para identificar la compañia
3, Dial number -> *99# Este numero sera el mismo para cualquier compañia
4, Use the following APN Address --> El APN correspondiente de cada compañia, mas abajo os dejo datos de estas.
5, Guardamos el perfil ->SAVE
6, Elegir El perfil creado de la lista -> boton Apply (Set Succeed!: OK!),cerrar pantalla.
7, Botón Connect (conectar/desconectar)

APN Address

Configuración Internet YOIGO:
APN:internet
Usuario: SIN rellenar!
contraseña: SIN rellenar!


Configuración Internet SIMYO:
APN:gprs-service.com
Usuario: SIN rellenar!
contraseña: SIN rellenar!


Configuración Internet Vodafone:
APN:ac.vodafone.es
Usuario: Vodafone
contraseña: Vodafone


Configuración Internet Movistar:
APN:movistar.es
Usuario: MOVISTAR
contraseña: MOVISTAR

Configuración Internet Orange:
APN: orangeworld
Usuario: orange
contraseña: orange


Configuración Internet Jazztel:
APN:jazzinternet
Usuario: SIN rellenar!
contraseña: SIN rellenar!

Configuración Internet Mas Movil:
APN:internetmas
Usuario: SIN rellenar!
contraseña: SIN rellenar!

En esta pagina teneis una constante actualizacion del software, firmware y drivers:

http://dc-files.com/files/zte/modems/MF110/