Cómo resolver "Permission Denied" para carpetas etc y lib con Proftpd y Core-Admin


#1

1. Introducción

El siguiente artículo explíca porqué no es posible escribir y realizar modificaciones sobre carpetas etc y lib dentro de su alojamiento web usando FTP o SFTP (ProFTPD), y de las posibles soluciones.

2. Síntomas

Si está revisando este artículo asumimos que ya ha revisado las partes básicas de permisos del alojamiento.

Descartado el problema de permisos básico, ProFTPD incluye un módulo (mod_rlimit) que incluye una configuración específica para impedir cualquier manipulación sobre los directorios “lib” y “etc”:

Si activa el log de depuración del Proftpd (introduciendo “DebugLevel 2” en el fichero de configuración /etc/proftpd/proftpd.conf), verá el siguiente fallo en los logs al intentar hacer una modificación:

WARNING: attempt to use sensitive path ‘…/etc/file’ within chroot ‘/var/webs/domain.com/html/…/etc’, rejecting

3. Resolución

Tal y como indica el artículo:

Note: We strongly recommend that you do not disable these checks

Para evitar tener este módulo permanentemente desactivado y también para evitar tener que subir los ficheros a carpetas distintas (una solución que no es viable muchas veces), existen dos alternativas:

  • Alternativa 1: Crear un acceso SSH al alojamiento. Esto evitará conectar por FTP donde existe la limitación, sino por SSH, usando un demonio distinto (habitualmente sshd). Para ello, vea el siguiente artículo:

    Como dar acceso ssh a un alojamiento concreto desde Core-Admin

  • Alternativa 2: Seguir usando FTP y utilizar el siguiente comando para desactivar el módulo temporalmente, con un rearmado automático. Por ejemplo, podemos desactivar el módulo por un día con:

    # Desactivar protección por un día:
    > >> crad-webhosting-mgr.pyc --disable-rlimit-chroot=day

    Esta opción permite una solución rápida y fácil, sin modificaciones y que recupera la seguridad pasado un periodo (sin tener que estar preocupándose por la reactivación o de dejar el servidor con una configuración insegura de manera permanente).

4. Más sobre la opción disable-rlimit-chroot

Con una máquina actualizada, ejecutar lo siguiente para desactivar temporalmente el módulo RLimitChroot de proftpd con activación automática pasado el periodo configurado:

# Desactivar protección por un día:
>> crad-webhosting-mgr.pyc --disable-rlimit-chroot=day

# Desactivar protección por una semana
>> crad-webhosting-mgr.pyc --disable-rlimit-chroot=week

# Desactivar protección por un mes
>> crad-webhosting-mgr.pyc --disable-rlimit-chroot=month

Esto configurar el proftpd sino que instalará un cron para reactivar el módulo tras el tiempo configurado.

# Para reactivar la protección de manera forzada, ejecutar:
>> crad-webhosting-mgr.pyc --enable-rlimit-chroot=-1

5. Enlaces relacionados

  1. https://support.plesk.com/hc/en-us/articles/214031369-FTP-user-is-not-able-to-access-upload-or-create-lib-or-etc-directories-on-Plesk-server-Permission-Denied

  2. http://proftpd.org/docs/modules/mod_rlimit.html#RLimitChroot