Article ID: 117725, created on Mar 10, 2015, last review on Mar 10, 2015

  • Applies to:
  • Plesk for Linux/Unix

Síntomas

  1. Al actualizar a Parallels Plesk 11.5 se obtienen los siguientes errores:

    ERR (3)  [util_exec]: proc_close() failed
    Error: mkdir: cannot create directory './example.com/logs': File exists
    ERROR: Cannot relink logs. Target directory '/home/httpd/vhosts/domain.tld/logs' is in invalid state.
    
  2. Cuando se intenta añadir un dominio nuevo, se obtiene el siguiente error:

    Error: mkdir: cannot create directory './domain.tld/logs': File exists
    ERROR: Cannot relink logs. Target directory '/home/httpd/vhosts/domain.tld/logs' is in invalid state.
    

Causa

Existen dos causas posibles para estas incidencias:

  1. El conjunto de permisos/propiedad no es correcto para el directorio de registros '/home/httpd/vhosts/domain.tld/logs' y los archivos presentes en dicho directorio.

  2. Los usuarios de sistema del dominio que aparecen en el archivo '/etc/passwd' no se encuentran en el orden correcto. El usuario de sistema de un dominio debería aparecer encima de los usuarios web del mismo dominio.

Resolución

  1. Compruebe los permisos para '/home/httpd/vhosts/domain.tld/logs'. De existir, el propietario de este directorio debería ser un usuario FTP. Puede ver si el archivo o directorio tiene un usuario que no es válido (no es un usuario FTP) de la siguiente forma:

    # ls -la /var/www/vhosts/domain.tld/logs
    drwx------  2 ftp_user root    4096  6. Feb 02:12 .
    drwx--x--- 11 wrong_user psaserv 4096  6. Feb 02:27 ..
    -rw-r--r--  2 root             root       0  5. Feb 07:09 access_log
    -rw-r--r--  2 root             root       0  5. Feb 07:09 access_ssl_log
    
  2. Compruebe que tiene instalada la microactualización #46.
  3. Ejecute el siguiente comando con privilegios de superusuario:

    # /usr/local/psa/bin/repair --restore-vhosts-permissions
    

Si sigue experimentando el problema aun y no habiendo modificado el propietario, esto denota que los usuarios de sistema del dominio aparecen en un orden incorrecto en el archivo /etc/passwd. En este caso, haga lo siguiente:

  1. Cree un backup del archivo /etc/passwd actual.

    # cp -a /etc/passwd /etc/passwd.backup
    
  2. Busque todos los usuarios de sistema del dominio afectado:

    ~# grep domain.tld /etc/passwd
    web_user:x:10007:503::/var/www/vhosts/domain.tld/web_users/webuser:/bin/false
    ftp_user:x:10007:503::/var/www/vhosts/domain.tld:/bin/false
    
  3. Los usuarios que tienen la carpeta /web_users/ en la ruta de su directorio principal son usuarios web.

  4. Sitúelos por debajo de aquellos usuarios que tengan un directorio principal como /var/www/vhosts/domain.tld. Tal y como se muestra a continuación, el orden correcto debería ser un usuario FTP y a continuación un usuario web:

    ftp_user:x:10007:503::/var/www/vhosts/domain.tld:/bin/false
    web_user:x:10007:503::/var/www/vhosts/domain.tld/web_users/webuser:/bin/false
    
  5. Actualice la estructura de vhost:

    /usr/local/psa/bin/repair --update-vhosts-structure
    

Nota: la causa de esta incidencia puede residir en el servicio nscd. Plesk crea todos los usuarios en una suscripción con el mismo UID:

# grep -n 10618 /etc/passwd
342:main_user:x:10618:504::/var/www/vhosts/example.com:/bin/bash
569:ftp_user:x:10618:504::/var/www/vhosts/example.com/ovizo:/bin/false

En este caso, cuando solicita el nombre de usuario por su UID, este devuelve el nombre de usuario con una posición más elevada en el archivo /etc/passwd:

# getent passwd 10618
main_user:x:10618:504::/var/www/vhosts/example.com:/bin/bash

De todos modos, si se está ejecutando el servicio nscd, el comando anterior mostrará otro usuario, puesto que también comprobará la caché de contraseñas nscd presente en el archivo /var/db/nscd/passwd:

# getent passwd 10618
569:ftp_user:x:10618:504::/var/www/vhosts/example.com/ovizo:/bin/false

Como resultado, obtendrá el siguiente mensaje de error:

ERROR: Cannot relink logs. Target directory '/home/httpd/vhosts/domain.tld/logs' is in invalid state.

Para evitar este comportamiento, realice los pasos detallados a continuación.

  1. Limpie el daemonnscd y la caché passwd ejecutando el siguiente comando:

    nscd --invalidate=passwd
    
  2. Detenga el servicio nscd antes de iniciar el proceso de actualización.

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c 29d1e90fd304f01e6420fbe60f66f838

Email subscription for changes to this article
Save as PDF