Hay que tener en cuenta que el usuario y el grupo de la carpeta destinada a ftp (y que tiene que ser la misma que la existente en el archivo de configuración) debe tener los correspondientes permisos de escritura/lectura/ejecucion
chmod 741 html/ftp/ quedando de la siguiente forma
drwxr----x 2 usuario grupo 4096 Mar 30 22:20 ftp
viernes, 30 de marzo de 2007
Configurar permisos para cuenta ftp
Publicado por Juan Antonio Ruz en 12:26 1 comentarios
chgrp chown
wikipedia chgrp
chgrp -R nuevogrp directorio
wikipedia chown
chown -R nuevousr directorio
Publicado por Juan Antonio Ruz en 12:02 0 comentarios
Categorías: Configuraciones Seguridad Servidor, linux
Control de usuarios y contabilidad de recursos
Fichero /etc/passwd
En cada linea puedes encontrar todos estos parametros (JOÉ):
- nombre de cuenta
- contraseña cifrada,
- identificador numerico
- identificador de grupo
- informacion convencional
- directorio raiz de la cuenta
- interprete de comandos asignado
http://www.linux-party.com/TutorialLinux/linux_files/linux5.html
Publicado por Juan Antonio Ruz en 11:50 0 comentarios
Categorías: Configuraciones Seguridad Servidor, linux, servidores
Configurar Servidor FTP
Cómo configurar tu servidor FTP desde línea de comandos en un sistema operativo Linux.
Para que nuestro Linux tenga la posibilidad de que se le conecten por FTP para realizar transferencia de ficheros, necesita tener instalado y configurado un servidor de FTP. En este artículo vamos a ver el modo de configurar un servidor de FTP por línea de comandos. No pasaremos a describir lo que es un servidor de FTP ya que en el tutorial de FTP ya lo explicamos.
Configuración
Una vez instalados comenzaremos a configurarlo a nuestro gusto. Comenzaremos con la lista de usuarios que podrán tener acceso al servidor FTP:
Para configurar este parámetro necesitaremos abrir el archivo /etc/ftpusers que se encuentra en /etc/. En este archivo pondremos ver una lista con los usuarios que tienen acceso.
Pero en realidad el archivo más importante para la configuración del servidor es el /etc/proftpd.conf que contiene todos los parámetros de configuración, entre otras cosas la ubicación de los archivos compartidos. Dentro de este archivo se encuentran los siguientes parámetros, que podemos modificar dependiendo del uso que le queramos dar.
anonymous.allow
Con este parámetros se habilita o deshabilita el usuario anónimo.
Anonymous.allow=trae (usuario anónimo habilitado)
Anonymous.allow=false (usuario anónimo deshabilitado)
Write_enable
Indica si una carpeta tiene permiso de escritura o no. En otras palabras indica si a una carpeta se la pueden subir archivos o no.
Write_enable=trae (si tiene permiso de escritura)
Write_enable=false (no tiene permiso de escritura)
ftpd_banner
Permite poner un mensaje de bienvenida a los usuarios cuando se conecten
ftpd_banner=mensaje
chroot_local_user
Permite o no a los usuarios locales el acceso a la maquina
chroot_local_user=trae
chroot_local_user=false
Para decirle al servidor fe FTP que usuarios tienen permiso para acceder tenemos que coger la ruta de el archivo antes comentado donde se encontraba la lista de usuarios (vsftpd.user_list)
Para ello en el archivo de configuración pondríamos algo como esto:
Chroot_list_file=/etc/vsftpd.user_list
Básicamente con estos comandos podrás configurar tu servidor FTP en Linux sin ningún problema.
Arrancar y detener el servidor de FTP
Ya solo nos queda arrancar el servidor para lo cual utilizaremos los siguientes comandos.
Para arrancar el servicio: /etc/init.d/proftpd Start
Para parar el servicio: /etc/init.d/proftpd stop
Para reiniciar el servicio: /etc/init.d/proftpd restart
Conclusión
Este artículo esta escrito haciendo referencia a Linux red hat 9.0 pero las configuraciones y los comandos son mas o menos los mismo en las distintas distribuciones.
Publicado por Juan Antonio Ruz en 11:33 0 comentarios
En qué consiste llevar un buen mantenimiento de un servidor en linux
Aquí un listado de las características que debería tener el mantenimiento de un servidor linux:
- Copias de seguridad incrementales
- Replicación de información
- Incluir los demonios en el arranque del servidor
- Procesos periodicos (crontab)
- crear una imagen inicial con los programas necesarios
- control de usuarios y contabilidad de recursos
- controlar spam - /var/mail
¿qué más se os ocurre ?
Publicado por Juan Antonio Ruz en 6:27 0 comentarios
Categorías: EN DESARROLLO, linux, servidores
Codificacion de fichero de internacionalizacion.properties
Después de mucho cavilar, es decir de averigüar si podía ser el problema de jboss, de mi MACOSX, del JVM, o del editor de java (eclipse o intellij idea), probé a guardar nuevamente el archivo .properties con la codificación final dentro del paquete .war y funcionó. El "culpable" era ANT, y concretamente su tarea copy que había que indicarle la codificación a seguir.
Publicado por Juan Antonio Ruz en 6:20 0 comentarios
Categorías: ANT, i18n, Soluciones
Solucion: columnas dinamicas en un af:iterator
La solución, aparente chapuza pero es que con c:if no funcionaba, consiste en utilizar el iterator varias veces (esto serían las celdas de la tabla ) y renderizar la fila en función de #{vs.index mod 3==[numero de fila del 0 al 2]}
<h:panelGrid columns="4">
<af:outputText value="#{messages.clases}"/>
<af:iterator value="#{curso.clasesList}" var="clase" first="0" varStatus="vs">
<afh:rowLayout rendered="#{vs.index mod 3==0}">
<af:outputText value="#{clase.nombre}" escape="false"/>
</afh:rowLayout>
</af:iterator>
<af:iterator value="#{curso.clasesList}" var="clase" first="1" varStatus="vs">
<afh:rowLayout rendered="#{vs.index mod 3==1}">
<af:outputText value="#{clase.nombre}" escape="false"/>
</afh:rowLayout>
</af:iterator>
<af:iterator value="#{curso.clasesList}" var="clase" first="2" varStatus="vs">
<afh:rowLayout rendered="#{vs.index mod 3==2}">
<af:outputText value="#{clase.nombre}" escape="false"/>
</afh:rowLayout>
</af:iterator>
</h:panelGrid >
Publicado por Juan Antonio Ruz en 6:06 0 comentarios
Categorías: ADF, Soluciones
mysql character set --> JAPones
links interesantes:
http://www.javaworld.com/javaworld/jw-09-2004/jw-0906-unicode.html?page=2
http://www.java2s.com/Code/Java/Development-Class/StringConverterUnicode.htm
http://forums.mysql.com/read.php?103,144564,146204#msg-146204
http://galaxy.andromda.org/forum/viewtopic.php?t=4386&view=next&sid=43ab0c5645142a2b937d8e5fb1040cbe
http://www.oop-reserch.com/mysql.html
probar con charset:big5
collation:big5_bin
Publicado por Juan Antonio Ruz en 4:44 1 comentarios
Categorías: EN DESARROLLO, i18n, MySql
jueves, 29 de marzo de 2007
Comandos útiles para saber el juego de caracteres en tus bases de datos de mysql
(Character Sets and Collations in MySQL)
mysql> SHOW CHARACTER SET;
mysql> SHOW FULL COLUMNS FROM test;
mysql> ALTER TABLE test CHARACTER SET latin1;
Publicado por Juan Antonio Ruz en 11:36 0 comentarios
Permisos en linux - chmod
Algunos ejemplos de utilización
para ejecutables unos permisos adecuados serían:
rwxr-x--x lo que indica todos los permisos para propietario y ejecución para el resto
al utilizar el comando chmod se puede hacer de forma relativa o absoluta.
Al hacerlo de forma relativa lo que se hace es modificar los permisos existentes con expresiones del tipo:
- o-w # esto sería quitar el permiso de escritura al propietario
- g+w # esto daria permiso de escritura a grupo
** si se quiere hacer a un directorio y a todos los que cuelgan de él hay que utilizar chmod -R XXX dir
· chmod 600 directorio asigna permisos de lectura y escritura al propietario
· chmod 444 directorio asigna permisos de lectura o todos
· chmod 777 directorio todos los permisos a todos
r w x | r w x | r w x | |
Permisos Actuales | 4+2+1 | 4+0+1 | 0+0+0 |
7 | 5 | 0 |
r w x | r w x | r w x | |
Cambiar a: | 4+2+1 | 4+0+1 | 4+0+1 |
7 | 5 | 5 |
Por último aquí esta una tabla que permite saber rápidamente que valor asignar como permiso a cualquiera de los tres modos.
Val. | Permisos |
0 | --- |
1 | --x |
2 | -w- |
3 | -wx |
4 | r-- |
5 | r-x |
6 | rw- |
7 | rwx |
Permisos en directorios:
el derecho de ejecucion [x] en los directorios indica derecho de paso por el directorio a los ficheros o directorios contenidos en él. El derecho de lectura [r] da derecho a conocer su contennido. Puede ser útil el no dar derecho de lectura y si de ejecución, de esa forma permitiremos el paso por el directorio restringiendo el conocimiento de su contenido.
El permiso de escritura [w] indica si se puede crear/modificar/eliminar su contenido
Bits especiales:
Los últimos 3 bits relacionados con los permisos.
setuid- hace un set de id de usuario
setgid - hace un set de id de grupo
sticky - fija ej programa permanentemente en la memoria (esto es una propiedad de los virus quedarse como residentes en la memoria)
Guía para Crear Archetypes
Creando archetypes podemos definir nuestra aplicación mínima. Es decir , una aplicación que contendrá los recursos mínimos que sabemos utilizaremos. Se podría definir como automatizar nuestros propios frameworks.
http://maven.apache.org/plugins/maven-archetype-plugin/examples/archetype.html
me acaban de dejar este link que podemos ir mirando y que tiene buena pinta:
http://www.chuidiang.com/chuwiki/index.php?title=Categor%C3%ADa:Maven
Publicado por Juan Antonio Ruz en 7:42 1 comentarios
Categorías: MAVEN
miércoles, 28 de marzo de 2007
apt-get
...apt?.
APT son las siglas de Advanced Package Tool. APT es un sistema de gestión de paquetes de software desarrollado por el APT Team
del Proyecto Debian
bajo licencia GNU/GPL
.
Es el sistema de gestión de paquetes más avanzado en la actualidad y el que má flexibilidad y potencia posee para entornos de red.
... apt-get?.
``apt-get
'' es la utilidad para usar desde la línea de órdenes que hace de interfaz entre el usuario y APT.
Publicado por Juan Antonio Ruz en 9:16 0 comentarios
Categorías: linux
Comprimir/descomprimir
* Ficheros tar
Empaquetar: tar -cvf archivo.tar /dir/a/comprimir/
Desempaquetar: tar -xvf archivo.tar
Ver contenido tar -tf archivo.tar
* Ficheros gz
Comprimir: gzip -9 fichero
Descomprimir: gzip -d fichero.gz
* Ficheros bz2
Comprimir: bzip fichero
Descomprimir: bzip2 -d fichero.bz2
gzip ó bzip2 sólo comprimen ficheros [no directorios, para eso existe tar]. Para comprimir y archivar al mismo tiempo hay que combinar el tar y el gzip o el bzip2 de la siguiente manera:
* Ficheros tar.gz
Comprimir: tar -czfv archivo.tar.gz ficheros
Descomprimir: tar -xzvf archivo.tar.gz
Ver contenido: tar -tzf archivo.tar.gz
* Ficheros tar.bz2
Comprimir: tar -c ficheros | bzip2 > archivo.tar.bz2
Descomprimir: bzip2 -dc archivo.tar.bz2 | tar -xv
Ver contenido: bzip2 -dc archivo.tar.bz2 | tar -t
* Ficheros zip
Comprimir: zip archivo.zip ficheros
Descomprimir: unzip archivo.zip
Ver contenido: unzip -v archivo.zip
* Ficheros lha
Comprimir: lha -a archivo.lha ficheros
Descomprimir: lha -x archivo.lha
Ver contenido: lha -v archivo.lha
Ver contenido: lha -l archivo.lha
* Ficheros arj
Comprimir: arj a archivo.arj ficheros
Descomprimir: unarj archivo.arj
Descomprimir: arj -x archivo.arj
Ver contenido: arj -v archivo.arj
Ver contenido: arj -l archivo.arj
* Ficheros zoo
Comprimir: zoo a archivo.zoo ficheros
Descomprimir: zoo -x archivo.zoo
Ver contenido: zoo -L archivo.zoo
Ver contenido: zoo -v archivo.zoo
* Ficheros rar
Comprimir: rar -a archivo.rar ficheros
Descomprimir: rar -x archivo.rar
Ver contenido: rar -l archivo.rar
Ver contenido: rar -v archivo.rar
Publicado por Juan Antonio Ruz en 9:06 0 comentarios
Categorías: linux
Descargar archivos desde el web a traves de la consola
wget -c ftp.juan.es/pub/programas/netscape.rpmEl primer ejemplo se bajaría el fichero netscape.rpm directamente al directorio actual, pudiendo cortarlo en cualquier momento con CTRL+C para continuar su download otro dia desde el punto en que se quedó (como reget, NetVampire, etc) utilizando el mismo comando. El segundo ejemplo se bajaría todos los ficheros que hubieran en el directorio pub/fotos/paisajes del ftp especificado, y el tercero se bajaría la web www.8052.com completa (incluyendo fotos, subdirectorios, etc) para poder navegar por ella en el disco duro offline.
wget -r ftp.juan.es/pub/fotos/paisajes
wget -rL www.8052.com
Publicado por Juan Antonio Ruz en 9:04 0 comentarios
Categorías: linux
Reiniciar Mysql
Para reiniciar MySql
/etc/init.d/mysql stop
/etc/init.d/mysql start
Archivo de configuración de mysql en /etc/mysql/my.cnf
Despues en /etc/mysql/my.cf comentar skip-network y reiniciar el mysql
Re: Como reisntalo mysql?
La cosa mejor es salvar los datos primero
cp -R /var/lib/mysql /home/back-up
cp /etc/mysql/my.cnf /home/back-up
despues borras realmente todo con:
apt-get remove --purge mysql*
que te borra todas estas cosas
mysql
mysql-base
mysql-client
mysql-client-4.1
mysql-common
mysql-common-4.1
mysql-dev
mysql-devel
mysql-doc
mysql-doc-4.1
mysql-gpl-client
mysql-server
mysql-server-4.1
despues hace un apt-get clean que borra la cache de apt
y por ultimo instalas todo de nuevo
;-)
ojo --purge borra absolutamente todo!
Publicado por Juan Antonio Ruz en 7:34 0 comentarios
Categorías: MySql
martes, 27 de marzo de 2007
Buscando en linux
find directorio -name nombre
find /usr/ -name *svn*
find . -mtime 0 # find files modified within the past 24 hours
find . -mtime -1 # find files modified within the past 24 hours
find . -mtime 1 # find files modified between 24 and 48 hours ago
find . -mtime +1 # find files modified more than 48 hours ago
find . -mmin +5 -mmin -10 # find files modifed between 6 and 9 minutes ago
Publicado por Juan Antonio Ruz en 12:20 0 comentarios
Categorías: linux
Interceptores Jboss Seam
Fases de JSF ya es mucha diferencia
Hay que crear una @interface que la utilizaremos para etiquetar/interceptar la clase(componente en terminos de Seam) correspondiente
import javax.interceptor.Interceptors;
import java.lang.annotation.Documented;
import static java.lang.annotation.ElementType.TYPE;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;
/**
* Created by IntelliJ IDEA.
* User: juanitu
* Date: 12-abr-2007
* Time: 17:43:24
* To change this template use File | Settings | File Templates.
*/
@Target(TYPE)
@Retention(RUNTIME)
@Documented
@Interceptors(Interceptor.class)
public @interface EtiquetaInterceptora {
}
Despues definimos el interceptor poniendo especial interes en como tratamos el tema de las fases de la aplicacion:
import org.jboss.seam.annotations.Around;
import org.jboss.seam.annotations.Within;
import org.jboss.seam.interceptors.*;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.contexts.Lifecycle;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
import javax.faces.event.PhaseId;
import es.cafs.dao.CafsDAO;
import es.cafs.metadata.componentes.Componentes;
import java.lang.reflect.Method;
/**
* Created by IntelliJ IDEA.
* User: juanitu
* Date: 12-abr-2007
* Time: 17:45:36
* To change this template use File | Settings | File Templates.
*/
@Around({BijectionInterceptor.class, ValidationInterceptor.class,
ConversationInterceptor.class, BusinessProcessInterceptor.class})
@Within(RemoveInterceptor.class)
public class Interceptor {
protected static Log log = LogFactory.getLog(org.jboss.seam.interceptors.Interceptor.class);
@AroundInvoke
public Object checkLoggedIn(InvocationContext invocation) throws Exception {
CafsDAO dao = (CafsDAO) Contexts.getApplicationContext().get(Componentes.appCafsDAO);
log.error(dao==null);
Method method = invocation.getMethod();
log.error(invocation.getTarget().getClass()+"-"+method.getName() + " " + method.getReturnType());
if (Lifecycle.getPhaseId() == PhaseId.INVOKE_APPLICATION) {
log.error("INVOCANDO FASE");
} else {
log.error(invocation.getTarget().getClass()+"-"+method.getName() + " " + method.getReturnType());
log.error("OTRA FASE");
}
return invocation.proceed();
}
}
Y por último hay que etiquetar el componente correspondiente
@Scope(ScopeType.CONVERSATION)
@Name(Componentes.convVisorInformacion)
@Logeando
public class VisorInformacion{
}
Publicado por Juan Antonio Ruz en 11:30 0 comentarios
Introducción a Maven
Maven es una herramienta escrita en Java para facilitar el trabajo de programación en java, concretamente se utiliza para la compilación y mantenimiento de cualquier proyecto basado en Java.
- Permitir la compilación del código fuente y su empaquetamiento de forma fácil, es decir: te puedes olvidar de las dependencias de segundos y terceros
- Estandarizar el directorio donde se incluyen los diferentes recursos
- Proporcionar información eficiente o útil sobre el proyecto
- Enfoque a patrones de diseño o desarrollo
- Permitir la migración a nuevas versiones de las herramientas a utilizar
No te olvides de:
export PATH=/usr/local/maven-2.0.5/bin:$PATH
Creating a webapp
Use maven-archetype-webapp to start a simple webapp maven project. The command is as follows
mvn archetype:create
-DgroupId=[your project's group id]
-DartifactId=[your project's artifact id]
-DarchetypeArtifactId=maven-archetype-webapp
POM: "Project Object Model".
Documento XML que representa el proyecto:
- archivos de configuración
- programadores implicados y sus roles
- empresa y licencias
- URL del proyecto
- dependencias
En un proyecto con Maven el pom.xml, es lo único imprescindible.
The Basics
4.0.0
org.codehaus.mojo
my-project
1.0
groupId: Id de organizacion o empresa, suele ser su paquete java
ej: com.mediaymedia
artifactId: El nombre del proyecto: wiki
version:
packaging:
http://maven.apache.org/pom.html#Introduction
Publicado por Juan Antonio Ruz en 5:13 0 comentarios
Categorías: MAVEN
Interface e implementación: causas y efectos
diferencias y consecuencias del diseño con interfaces.
Diseño robusto frente a diseño frágil
Contrato de interface
La interfaz
PD: diseño orientado a pruebas con Mocks
Publicado por Juan Antonio Ruz en 0:48 0 comentarios
Categorías: java, Lecciones JAVA, POO, TDD
lunes, 26 de marzo de 2007
Programación en Java ¿y qué más?
¿y que más? Pues nuestro interés se dirigirá a programar orientándonos a objetos,aspectos y pruebas.
Utilizaremos las siguientes herramientas: TestNG, DBUnit, Hibernate, JSF, JBoss Seam ...
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java
http://es.wikipedia.org/wiki/Orientado_a_objetos
http://es.wikipedia.org/wiki/Programaci%C3%B3n_Extrema
http://es.wikipedia.org/wiki/J2EE
Se pondrá un especial interés en recopilar los errores que vayan apareciendo
Publicado por Juan Antonio Ruz en 1:14 0 comentarios
Categorías: java