En Alibaba Cloud Linux 2 y Alibaba Cloud Linux 3, un bug del kernel en versiones específicas provoca que las operaciones copy-up de OverlayFS fallen con el mensaje "Permission denied". Esto ocurre cuando el proceso carece de permisos de lectura sobre los archivos del directorio inferior. Para solucionarlo, instale un hotfix del kernel o actualice el kernel.
Compruebe si este problema le aplica
El problema se presenta únicamente cuando se cumplen las tres condiciones a continuación:
Su instancia ejecuta alguna de las versiones del kernel afectadas que se listan en la tabla siguiente.
En el sistema de archivos OverlayFS, los directorios superior e inferior residen en el mismo sistema de archivos.
Un proceso que desencadena una operación copy-up (la cual copia archivos del directorio inferior al superior) no cuenta con permisos de lectura sobre los archivos o directorios de origen en el directorio inferior.
Versiones del kernel afectadas
|
Sistema operativo |
Imagen |
Versiones del kernel afectadas |
|
Alibaba Cloud Linux 2 |
Alibaba Cloud Linux 2.1903 LTS 64-bit |
4.19.91-27.al7, 4.19.91-27.1.al7, 4.19.91-27.2.al7, 4.19.91-27.3.al7, 4.19.91-27.4.al7 |
|
Alibaba Cloud Linux 3 |
Alibaba Cloud Linux 3.2104 LTS 64-bit |
5.10.134-13.al8, 5.10.134-13.1.al8, 5.10.134-14.al8, 5.10.134-14.1.al8 |
Reproduzca el problema
Ejecute los siguientes comandos para confirmar el problema en su instancia:
mkdir -p /root/test/lower/dir /root/test/upper /root/test/work /root/test/mount
chmod 0737 /root/test/lower/dir
chown root:bin /root/test/lower/dir
mount -t overlay -o lowerdir=/root/test/lower,upperdir=/root/test/upper,workdir=/root/test/work overlay /root/test/mount
cd /root/test && sudo -u bin -g bin touch mount/dir/RANDOM
Si el bug está presente en su instancia, se muestra el siguiente error:
touch: cannot touch 'mount/dir/RANDOM': Permission denied
Causa raíz
En las versiones del kernel afectadas, cuando los directorios superior e inferior comparten el mismo sistema de archivos, la función ovl_override_creds() no se ejecuta en los procesos que carecen de permisos de lectura sobre los archivos o directorios de destino en el directorio inferior. Como el proceso no logra establecer las credenciales necesarias para ejecutar el copy-up, la operación se rechaza con un error de permiso.
Solucione el problema
Requisitos previos
Connect to the Linux instance antes de continuar.
Paso 1: Compruebe la versión de su kernel
uname -r
Ejemplos de salida:
Alibaba Cloud Linux 2:
4.19.91-27.al7.x86_64Alibaba Cloud Linux 3:
5.10.134-13.1.al8.x86_64
Paso 2: Aplique una solución
Tiene dos opciones disponibles:
Opción 1: Instale un hotfix del kernel
Para Alibaba Cloud Linux 3 (versiones 5.10.134-13.al8, 5.10.134-13.1.al8, 5.10.134-14.al8 y 5.10.134-14.1.al8):
yum install -y kernel-hotfix-13108708-5.10.134-13.1
Para Alibaba Cloud Linux 2 (versiones 4.19.91-27.al7, 4.19.91-27.1.al7, 4.19.91-27.2.al7, 4.19.91-27.3.al7 y 4.19.91-27.4.al7):
yum install -y kernel-hotfix-13110805-4.19.91-27
Opción 2: Actualice el kernel
yum upgrade kernel
Después de la actualización:
Para Alibaba Cloud Linux 3: confirme que la versión sea 5.10.134-15.al8 o posterior.
Para Alibaba Cloud Linux 2: confirme que la versión sea 4.19.91-28.al7 o posterior.
Paso 3: Compruebe que la solución funcione
Ejecute los mismos comandos de reproducción. Si la solución fue exitosa, no se muestra ningún error.
mkdir -p /root/test/lower/dir /root/test/upper /root/test/work /root/test/mount
chmod 0737 /root/test/lower/dir
chown root:bin /root/test/lower/dir
mount -t overlay -o lowerdir=/root/test/lower,upperdir=/root/test/upper,workdir=/root/test/work overlay /root/test/mount
cd /root/test && sudo -u bin -g bin touch mount/dir/RANDOM
Si no se muestra ningún error, el problema quedó resuelto.