Usuario y grupo en WordPress

Es posible obtener este error al intentar realizar la actualización (realmente un upgrade, con actualizaciones menores no lo había notado hasta la fecha) automática en WordPress:

Descargando paquete de instalación desde https://downloads.wordpress.org/release/es_ES/wordpress-4.6.zip…

Descomprimiendo actualización…

Verificando los archivos descomprimidos…

No se ha podido descomprimir la actualización.

Instalación fallida

Antes de aventuraros con la actualización manual (tediosa y dado que podéis meter la pata si no hacéis un buen backup), os recomiendo revisar permisos del sistema de ficheros, y si son correctos revisad toda la cadena siguiente:

  • Usuario (Linux/FTP) que gobierna la web / dominio, en este caso basada en el cms WordPress.org, para los ejemplos del articulo usaré “joselito“, este ha de ser el dueño o propietario de toda la carpeta sobre la que descansa el cms, en nuestro artículo será la carpeta “blog/”:
ls -l
total 36
drwxrwxr-x 6 joselito www-data 4096 Aug 22 16:03 blog
  • Los permisos para una carpeta como la que se aprecia arriba, deberían permitir escritura a usuario y a grupo (775 en octal, en cambio para un fichero 664)
  • Grupo del servidor Web en el caso de apache2 basado en sistemas Debian es el usuario / grupo “www-data“, en otros sistemas suele ser www, nobody, …
  • Que el usuario “joselito” tenga como grupo primario o secundario “www-data”. La pertenencia a grupos se puede comprobar con el comando id de Linux. Si estáis logados como el usuario en cuestión sin parámetros, y la salida que produce es como esta:
id
uid=2003(webmaster) gid=2003(webmaster) grupos=2003(webmaster),33(www-data)
  • Si queréis interrogar la pertenencia a grupos de otro usuario, siempre que tengáis permiso para ello:
id webmaster
uid=2003(webmaster) gid=2003(webmaster) grupos=2003(webmaster),33(www-data)
  • No es nada recomendable que la carpeta que aloja la web pertenezca al usuario/grupo del servidor web, funcionaría pero es una brecha de seguridad.
  • El grupo “www-data” ha de ser el grupo de toda la carpeta sobre la que descansa el cms:
  • ls -l
    total 36
    drwxrwxr-x 6 joselito www-data 4096 Aug 22 16:03 blog

Si tenemos mal configurado el usuario que maneja la instalación de wordpress, o bien el grupo, mediante el comando chown, podemos cambiar el propietario y el grupo de forma recursiva:

chown -R joselito:www-data blog

Repito: Se recomienda por seguridad que el propietario (owner) de la carpeta no sea el demonio sobre el que corre apache2, en nuestros ejemplos www-data.

Por lo que el propietario debería ser un usuario al uso, del sistema Linux, en nuestros ejemplos “joselito” y además este usuario debe pertenecer al grupo sobre el que corre el servidor web.

En uno de los VPS que administro di de alta el usuario de forma demasiado manual e hice que su grupo primario fuese www-data directamente (mediante la orden useradd), y ayer tras este error me di cuenta de que en el fichero /etc/group, a la altura de www-data no había ningún usuario:

cat /etc/group|grep ^www
www-data:x:33:

En otros servidores este mismo comando:

cat /etc/group|grep ^www
www-data:x:33:webmaster[, ...]

Con el comando usermod, y las opciones -aG podemos agregar cierto usuario a un grupo:

usermod -aG www-data joselito

Estoy agregando el usuario “joselito” al grupo apache2 “www-data”

Si volvemos a hacer el cat sobre el fichero de grupos filtrando el del servidor web obtenemos que nuestro usuario ya pertenece al mismo:

cat /etc/group|grep ^www
www-data:x:33:joselito

Si intentamos actualizar wordpress de nuevo debería poder hacerlo sin problemas. En ocasiones hace falta cerrar la sesión (de joselito) para forzar la lectura del archivo de grupos Linux. Mediante el comando id podemos saber a qué grupo/s pertenecemos o pertenece un usuario:

id
uid=2003(joselito) gid=33(www-data) groups=33(www-data)

Si por alguna de aquellas todavía no funciona la actualización, es posible que en algún rincón haya algún archivo que si no pertenece a “www-data” no pueda sobreescribirse.

En estas situaciones, sobre todo si se trata de upgrade (4.5.3 a 4.6)  y no de update (4.5.2 a 4.5.3), la solución temporal pasa por hacer propietario a “www-data” de toda la estructura y después volver a hacer propietario al usuario FTP / Linux, en el caso que nos ocupa “joselito”:

chown -R www-data blog/

Con la opción -R de chmod lo estamos aplicando recursivamente a la carpeta blog y todas las subcarpetas/archivos.

Y después, tras poder actualizar recordad, de nuevo por seguridad, volver a restablecer como propietario al usuario “joselito” con el que conectamos vía FTP, o SSH, o usuario Linux asociado al dominio en cuestión:

chown -R joselito blog/

Hasta la próxima.

find: `/var/lib/amavis/virusmails/’: No such file or directory

Los que usáis la solución http://www.iredmail.org/ como servidor de correo es posible que en alguna ocasión recibáis por correo una alerta como la del título de esta entrada.

Existe un crontab para el usuario amavis que elimina periódicamente los virus encontrados en el correo electrónico, para ello trabaja con la carpeta /var/lib/amavis/virusmails donde va dejando los rastros encontrados.

# Delete virus mails which created 15 days ago.
1 5 * * * find /var/lib/amavis/virusmails/ -ctime +15 | xargs rm -rf {}

Se puede editar con la orden siguiente:

crontab -e -u amavis

Si no se reciben virus en 15 días se borrará el directorio virusmails, y con el próximo virus como mucho se irán concatenando los mismos en un fichero llamado igual, con lo que la orden find (que espera sea una carpeta) dejará de funcionar y recibiremos el mencionado error:

find: `/var/lib/amavis/virusmails/’: No such file or directory

La solución pasa por cambiar justo antes de la búsqueda, la fecha de modificación de la mencionada carpeta: un simple touch delante del find, que se ejecute justo antes de la limpieza, así como y usar -mtime en lugar de -ctime. El crontab del usuario ‘amavis’ debería quedar así:

# Delete virus mails which created 15 days ago.
1 5 * * * touch /var/lib/amavis/virusmails; find /var/lib/amavis/virusmails/ -mtime +15 | xargs rm -rf {}

Si seguís recibiendo el Warning

Debe ser porque la carpeta ya no existe, basta recrearla mediante un mkdir, pero dejando los permisos correctos de usuario y grupo ‘amavis‘, tal y como aparece en la salida de este comando ls:

ls -ld /var/lib/amavis/virusmails
drwxr-x--- 2 amavis amavis 4096 sep 6 2014 /var/lib/amavis/virusmails

Para ello tenemos varias alternativas, os dejo dos:

  1. Ubicaros en la carpeta anterior /var/lib/amavis/, y crear el directorio virusmails habiendo suplantado mediante el comando su al usuario ‘amavis‘ (lo podéis hacer si sois root)
cd /var/lib/amavis/

su amavis

mkdir virusmails

2. Cread la carpeta y después mediante chown cambiad tanto usuario propietario como pertenencia a grupo de la misma:

cd /var/lib/amavis/

mkdir virusmails

chown amavis:amavis virusmails

Sólo por si os apetece probar una tercera alternativa, podríamos en lugar de touch, probar a recrear en el crontab la carpeta, y redireccionar el posible error si existe a /dev/null. Por lo que un crontab alternativo (que no he probado) seria este:

# Delete virus mails which created 15 days ago.
1 5 * * * mkdir /var/lib/amavis/virusmails 2> /dev/null; find /var/lib/amavis/virusmails/ -mtime +15 | xargs rm -rf {}

De esta forma, y hablando “teóricamente” crearía si no existe todavía la carpeta y después realizaría la búsqueda, en caso de que exista desbiaría cualquier salida de error 2> a /dev/null, de nuevo teóricamente no sería necesario ya que crontab se ejecuta desatendido, aunque y por tercera vez de forma teórica, posiblemente recibamos un mensaje de error al email diciendo algo así como: “la carpeta ya existe”.

Hasta la próxima

 

Malware detectado al instalar PDFCreator-2_3_0-Setup

SoftwareBundler:Win32/Stallmonitz

Alert level: High

C:\Users\jose\AppData\Local\Temp\is-LKGRC.tmp\CBStub.exe

This program installs unwanted software on your PC at the same time as the software you are trying to install, without adequate consent.

Se recomienda descargar y utilizar https://www.microsoft.com/security/scanner/es-es/default.aspx

SoftwareBundler:Win32/Stallmonitz
SoftwareBundler:Win32/Stallmonitz

Herramienta de eliminación de software malintencionado de Microsoft® Windows® (KB890830) x64

Herramienta de eliminación de software malintencionado de Microsoft® Windows® (KB890830) x64

Enlace a la versión de cuando se escribió este artículo.

Herramienta de eliminación de software malintencionado de Microsoft® Windows® (KB890830) x64
Herramienta de eliminación de software malintencionado de Microsoft® Windows® (KB890830) x64

Herramienta de eliminación de software malintencionado de Microsoft® Windows® (KB890830) x64

Esta herramienta revisa tu equipo en busca de infecciones con software malintencionado específico y común (como Blaster, Sasser o Mydoom) y contribuye a eliminar las infecciones en caso de que haya. Microsoft publicará una versión actualizada de esta herramienta el segundo martes de cada mes.

Aquí podéis ver un resultado de un análisis:

Herramienta de eliminación de software malintencionado: resultado del análisis
Herramienta de eliminación de software malintencionado: resultado del análisis

 

Microsoft Security Essentials

Microsoft Security Essentials

Si tienes tu copia de Windows original y activada, no necesitas más ni tienes excusa para no tener un antivirus.

Usa Microsoft Security Essentials para protegerte contra virus, spyware y otro software malintencionado.

Ofrece protección en tiempo real para tus PCs de casa o de tu pequeña empresa.

Microsoft Security Essentials está disponible para pequeñas empresas con un máximo de 10 PCs.

Qué hacer si encontramos amenazas

El otro día migrando de equipo, antes de salvaguardar algunos datos de viejos “CD” hice un escaneo bajo demanda, y sorpresa:

Microsoft Security Essentials: Que hacer si encuentro amenazas
Microsoft Security Essentials: Que hacer si encuentro amenazas

Repasad tranquilamente la lista, y yo en la mayoría de los casos, por tratarse de programitas de antaño marque la opción Quitar en todos los resultados, y después aplique los cambios:

Microsoft Security Essentials: Que hacer si encuentro amenazas
Microsoft Security Essentials: Que hacer si encuentro amenazas

Y si las acciones se aplicaron correctamente volveremos a estar “Verdes”

Microsoft Security Essentials: Equipo Verde
Microsoft Security Essentials: Equipo Verde

Conviene actualizar las bases, y hacer un escaneo rápido del sistema. Esto que os presenté fue el escaneo de una carpeta de un disco duro de copias.

Aquí tenéis la explicación de los niveles de alerta de Microsoft Security Essentials.

 

Proyecto de SEO / SEM para una Pastelería de Valencia

Growth Hacking – seo sem pastelería – Social Media

Proyecto de SEO / SEM para una Pastelería de Valencia

Tras realizar SEO On Page, configurar los diferentes perfiles sociales, diseñar una campaña semanal de publicación de artículos en el foro, con buenas fotografías, inclusión en las redes sociales.

El SEO On Page es el único que depende de ti, en el interior de tu web tiene que haber miguitas de pan para Google.

  • Títulos en todas las páginas
  • Aunque la gente te diga lo contrario, los atributos de las etiquetas meta keywords y description
  • El nombre de las imágenes IMPORTA no es lo mismo SDS20130405.JPG que evento-playa-malvarrosa.jpg

Tras estudiar el impacto inicial con analítica web, resolvimos en potenciar la Red Google My Business.

Cuyo perfil es este y aparece en la primera página de Google:

Growth Hacking - seo sem pasteleria - Social Media
Growth Hacking – seo sem pasteleria – Social Media

Aparece el quinto resultado de unos cuantos millones.

Intentamos posicionar también por el camino “Pastelería vegana valencia” con muy buen resultado, primer y segundo puestos naturales.

Además la página de Google My Business le da un toque muy profesional:

seo sem pasteleria vegana-valencia
seo sem pasteleria vegana-valencia

El cliente está muy contento.

Si necesitáis algo de seo, soy además de profesor, freelance en PymesTIC.es

Desarrollo de tiendas online

Llevamos en Internet desde 1996, cuando en España estaba dándose acceso domestico a través de infovía.

Desde entonces ha llovido mucho. Cuando empezó el boom de las tiendas online, todo el desarrollo era a medida, al menos en el primer proyecto, no estaba muy difundido el concepto de desarrollo en capas, el programador debía hablar con el departamento técnico del banco del cliente, e implementar las pasarelas de pago desde cero, con los riesgos de seguridad de una mala programación.

Desarrollo de tiendas online
Desarrollo de tiendas online (imagen de pixabay.com)

Ahora mismo cualquiera dice saber implementar una tienda online, pero no te fíes de gente que no te hable de:

  1. IP dedicada
  2. Certificado digital, que permitirá que tus clientes se sientan más seguros
  3. VPS, o incluso un servidor Cloud, sobre todo para no tener vecinos en el mismo alojamiento compartido (shared hosting) dado que como hoy todo el mundo sabe hacer páginas web, te aconsejaran que contrates un alojamiento (hosting) por 5€ al mes incluso menos.
  4. Servidores con datacenter, al ser posible en España, de no ser posible en algún país miembro de la Comunidad Europea. Ten en cuenta que la ley española es muy estricta: LSSI, LOPD, Cookies y un largo etc.
  5. IP Geolocalizada lo más cerca posible de tu público objetivo, dada la competencia actual, hay conceptos que intervienen en el futuro SEO/SEM de tu tienda que se verán afectados por estas “tonterías”. Lo barato normalmente termina saliendo caro.

Como en cualquier proyecto web, una tienda online adaptada a las necesidades de una actividad económica concreta, no se implementa ni en quince días, ni en un mes.

Todo desarrollo web requiere varias fases:

  1. Un primer contacto con el cliente, donde él nos transmita su idea, nosotros aportemos nuevas ideas, captemos el volumen de productos, elijamos si es posible un CMS para no reinventar la rueda, y dar la confianza al cliente de que si se cansa de nosotros no tiene ningún tipo de atadura, y al tratarse de un CMS podrá moverse a otro proveedor sin problemas.
  2. Tras el primer contacto el equipo que se involucrará en el desarrollo deberá tener varias conversaciones, preferiblemente online con el cliente, para acotar el proyecto y realizar un presupuesto a medida. Para que lo entendáis: no es lo mismo una tienda para una pastelería, cuya segmentación de productos es pequeña o mediana, y posiblemente no mueva más de 50 o 100 productos, que una tienda de ropa, o una ferretería donde la cantidad de productos puede pasar de los cientos a los miles.
  3. Es muy importante esta primera fase, donde a base de “toma y daca” se acota el proyecto y se puede llegar a un precio ajustado a lo que necesita el cliente, de lo contrario el proyecto o bien fracasará en presupuesto y/o plazos de entrega, o bien alguna de las partes, el cliente o el equipo de desarrollo “perderán pasta”.
  4. Tras la aprobación de un presupuesto por escrito, donde se refleje lo que se va a hacer y lo que no se va a hacer, se pactará un plazo con el cliente, plazo para un primer piloto, plazo para una vez implementadas las pasarelas de pago que el cliente, en el período de pruebas pueda testear todo el proceso con unos pocos productos.
  5. La segmentación de los artículos (categorías o familias) es muy importante que quede clara al principio, los cambios en fases tardías de un proyecto, ponen su buen fin en peligro.

En definitiva, tenemos que ser capaces de “interrogar” al cliente, escuchar sus propuestas, criticar ciertos aspectos, dividir si es posible el proyecto en fases, finalmente que ambas partes entiendan lo que se quiere conseguir, y solo una vez el draft del proyecto este validado por ambas partes, se podrá dar un presupuesto, sujeto a negociación, y cuando el contrato de desarrollo este firmado, y el primer pago realizado, dependiendo del proyecto se suele trabajar a 30-70, 40-60 o 50-50, dependiendo del desembolso inicial en infraestructura o el riesgo asumido, solo en ese momento se comenzará el desarrollo, se creará un planning del proyecto, ese será el día cero del inicio del desarrollo.

Por lo tanto una tienda virtual no se desarrolla en 15 días, ni en un mes. Primero tiene que haber colaboración por ambas partes, somos conscientes de que nuestro cliente tiene otras cosas que hacer, pero si no demuestra compromiso, el proyecto fracasará.

Si leído esto estas de acuerdo, ponte en contacto con nosotros y empezamos a hablar de tu proyecto de tienda online.

Páginas Web

Curso de programación web full stack GLAMP

Curso de programación web full stack GLAMP

Cursos de Programación Web Full stack GLAMP
Cursos de Programación Web Full stack GLAMP (GNU/Linux Apache2 MariaDB PHP)

Clases de Formación Profesional

Clases de Formación Profesional

Ciclos formativos de grado medio y superior de la familia Informática y Comunicaciones
Ciclos formativos de grado medio y superior de la familia Informática y Comunicaciones

Gestores de contenido web y servidor web Apache

Tutoriales sobre el servidor web Apache y los CMS – Sistemas de gestión de contenidos web – más utilizados en el mercado

CMS Analizados:

Intentaremos ir probando muchos más pero de momento tenemos 3 Gestores de Contenidos Web:

  1. Instalación de PrestaShop 1.6 en un servidor web GNU/Linux Debian
  2. Instalación de Joomla en un servidor web GNU/Linux, concretamente Debian
  3. Instalación de WordPress en una pila LAMP (Linux + Apache + MySQL + PHP) en Debian

Y si no sabes como funciona Linux puedes instalarlo y probarlo utilizando VirtualBox. Y seguir los tutoriales de SOSpedia.net sobre GNU/Linux y sobre scripting shell.

Páginas Web y Tiendas virtuales en Valencia
Páginas Web y Tiendas virtuales en Valencia