No Alibaba Cloud Linux 2 e no Alibaba Cloud Linux 3, um bug do kernel em versões específicas faz com que as operações de copy-up do OverlayFS falhem com "Permission denied" quando o processo não tem permissões de leitura nos arquivos do diretório inferior. Instale um hotfix do kernel ou atualize o kernel para resolver esse problema.
Verifique se este problema se aplica a você
O problema ocorre apenas quando as três condições a seguir são atendidas simultaneamente:
A instância executa uma das versões afetadas do kernel listadas na tabela abaixo.
No sistema de arquivos OverlayFS, os diretórios superior e inferior estão no mesmo sistema de arquivos.
Um processo que aciona uma operação de copy-up — copiando arquivos do diretório inferior para o superior — não tem permissões de leitura nos arquivos ou diretórios de origem no diretório inferior.
Versões afetadas do kernel
|
Sistema operacional |
Imagem |
Versões afetadas do kernel |
|
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 |
Reproduza o problema
Execute os comandos a seguir para confirmar o problema na sua instância:
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
Se o bug estiver presente na instância, o sistema retornará o seguinte erro:
touch: cannot touch 'mount/dir/RANDOM': Permission denied
Causa raiz
Nas versões afetadas do kernel, quando os diretórios superior e inferior compartilham o mesmo sistema de arquivos, a função ovl_override_creds() não é executada para processos sem permissões de leitura nos arquivos ou diretórios de destino no diretório inferior. Como o processo não consegue estabelecer as credenciais necessárias para realizar o copy-up, a operação é rejeitada com um erro de permissão.
Corrija o problema
Pré-requisitos
Conecte-se à instância Linux antes de prosseguir.
Etapa 1: Verifique a versão do kernel
uname -r
Exemplos de saída:
Alibaba Cloud Linux 2:
4.19.91-27.al7.x86_64Alibaba Cloud Linux 3:
5.10.134-13.1.al8.x86_64
Etapa 2: Aplique uma correção
Escolha uma das opções a seguir:
Opção 1: Instale um hotfix do kernel
Para o Alibaba Cloud Linux 3 (versões 5.10.134-13.al8, 5.10.134-13.1.al8, 5.10.134-14.al8 e 5.10.134-14.1.al8):
yum install -y kernel-hotfix-13108708-5.10.134-13.1
Para o Alibaba Cloud Linux 2 (versões 4.19.91-27.al7, 4.19.91-27.1.al7, 4.19.91-27.2.al7, 4.19.91-27.3.al7 e 4.19.91-27.4.al7):
yum install -y kernel-hotfix-13110805-4.19.91-27
Opção 2: Atualize o kernel
yum upgrade kernel
Após a atualização:
No Alibaba Cloud Linux 3: confirme se a versão é 5.10.134-15.al8 ou posterior.
No Alibaba Cloud Linux 2: confirme se a versão é 4.19.91-28.al7 ou posterior.
Etapa 3: Verifique a correção
Execute os mesmos comandos de reprodução. Se a correção for bem-sucedida, nenhum erro será retornado.
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
Se nenhum erro for retornado, o problema estará resolvido.