Sur Alibaba Cloud Linux 2 et Alibaba Cloud Linux 3, un bogue du noyau affectant certaines versions fait échouer les opérations copy-up d'OverlayFS avec l'erreur « Permission denied » lorsque le processus ne dispose pas des permissions de lecture sur les fichiers du répertoire inférieur. Installez un correctif à chaud du noyau ou mettez à niveau ce dernier pour résoudre ce problème.
Vérifier si vous êtes concerné
Ce problème survient uniquement si les trois conditions suivantes sont réunies :
Votre instance exécute l'une des versions du noyau affectées indiquées dans le tableau ci-dessous.
Dans le système de fichiers OverlayFS, les répertoires supérieur et inférieur se trouvent sur le même système de fichiers.
Un processus déclenchant une opération copy-up (copie de fichiers du répertoire inférieur vers le répertoire supérieur) ne possède pas les permissions de lecture sur les fichiers ou répertoires sources du répertoire inférieur.
Versions du noyau affectées
| Système d'exploitation | Image | Versions du noyau affectées |
|---|---|---|
| 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 |
Reproduire le problème
Exécutez les commandes suivantes pour confirmer la présence du problème sur votre instance :
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 le bogue est présent sur votre instance, l'erreur suivante s'affiche :
touch: cannot touch 'mount/dir/RANDOM': Permission denied
Cause racine
Dans les versions du noyau affectées, lorsque les répertoires supérieur et inférieur partagent le même système de fichiers, la fonction ovl_override_creds() ne s'exécute pas pour les processus dépourvus de permissions de lecture sur les fichiers ou répertoires cibles du répertoire inférieur. Le processus ne pouvant pas établir les identifiants nécessaires au copy-up, l'opération est rejetée avec une erreur de permission.
Résoudre le problème
Prérequis
Connectez-vous à l'instance Linux avant de poursuivre.
Étape 1 : Vérifier la version du noyau
uname -r
Exemples de sortie :
Alibaba Cloud Linux 2 :
4.19.91-27.al7.x86_64Alibaba Cloud Linux 3 :
5.10.134-13.1.al8.x86_64
Étape 2 : Appliquer une correction
Deux options sont disponibles :
Option 1 : Installer un correctif à chaud du noyau
Pour Alibaba Cloud Linux 3 (versions 5.10.134-13.al8, 5.10.134-13.1.al8, 5.10.134-14.al8 et 5.10.134-14.1.al8) :
yum install -y kernel-hotfix-13108708-5.10.134-13.1
Pour Alibaba Cloud Linux 2 (versions 4.19.91-27.al7, 4.19.91-27.1.al7, 4.19.91-27.2.al7, 4.19.91-27.3.al7 et 4.19.91-27.4.al7) :
yum install -y kernel-hotfix-13110805-4.19.91-27
Option 2 : Mettre à niveau le noyau
yum upgrade kernel
Après la mise à niveau :
Pour Alibaba Cloud Linux 3 : vérifiez que la version est 5.10.134-15.al8 ou ultérieure.
Pour Alibaba Cloud Linux 2 : assurez-vous que la version est 4.19.91-28.al7 ou ultérieure.
Étape 3 : Vérifier la correction
Exécutez à nouveau les commandes de reproduction. Si la correction a réussi, aucune erreur ne s'affiche.
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
L'absence d'erreur confirme la résolution du problème.