2 votes

mv : cannot move, Permission refusée dans WSL

Je reçois mv: cannot move, Permission denied erreur, mais avant de prétendre que c'est un double, voyez ce que j'ai essayé en premier :

Tout d'abord, cela n'a rien à voir avec le mode fichier ou répertoire :

$ mv -f .emacs.d .emacs.d.old
mv: cannot move '.emacs.d' to '.emacs.d.old': Permission denied

$ ls -Al . | grep emacs
drwx------ 1 me me 4096 2021-06-11 23:04 .emacs.d

ls -ld .
drwxr-xr-x 1 me me 4096 2021-06-12 00:17 .

$ sudo mv -f .emacs.d .emacs.d.old
mv: cannot move '.emacs.d' to '.emacs.d.old': Permission denied

$ mv -f .emacs.d ./.emacs.d.old
mv: cannot move '.emacs.d' to './.emacs.d.old': Permission denied

$ df .
Filesystem     1K-blocks      Used Available Use% Mounted on
rootfs         307276796 200040828 107235968  66% /

Ensuite, j'ai essayé tous les outils de vérification d'ouverture de fichiers que je connais :

$ jobs | wc
      0       0       0

$ lsof | grep .emacs.d | wc 
      0       0       0

$ fuser .emacs.d | wc
      0       0       0

et j'ai essayé de fermer tout ce qui pourrait ou pourrait ne pas être lié à la .emacs.d y compris la fermeture du code vs qui n'a rien à voir avec l'application .emacs.d répertoire.

Divulgation complète : j'utilise Windows Subsystem pour Linux, mais je ne pense pas avoir le répertoire ouvert dans d'autres instances bash. De plus, comme on peut le voir dans la première sortie, mon répertoire personnel se trouve dans WSL, et non dans un dossier Windows (c'est-à-dire qu'il ne devrait avoir aucun rapport avec les programmes Windows).

Je suis à court d'idées, qu'est-ce qui pourrait me retenir de renommer ce nouvellement créé répertoire.

0 votes

Pouvez-vous essayer d'exécuter mv .emacs.d ./.emacs.d.old ? Il semble que ce soit un bug dans WSL, corrigé dans WSL2, mais pas complètement, semble-t-il. Cela arrive parce que WSL épingle tous les fichiers ouverts. Une autre solution était de cp vers la cible et de rm l'ancien. github.com/microsoft/WSL/issues/3738

0 votes

Pas de mv -f .emacs.d ./.emacs.d.old ne fonctionne pas non plus, voir mon OP modifié, mais grâce à votre lien, à ma plus grande surprise, "cp à la cible et rm l'ancien" ça marche ! Il s'agit donc bien d'un bug de WSL. Je peux accepter cette réponse @BarathVutukuri. Merci encore.

0 votes

Qu'en est-il mv .emacs.d emacs.e (pas de point de tête, pas d'extension à double point) ? Si cela fonctionne, pourquoi pas mv emacs.e emacs.d.old et ensuite mv emacs.d.old .emacs.d.old ?

3voto

BarathVutukuri Points 176

Il s'agit d'un bogue dans l'ancienne implémentation de WSL qui continue à épingler tous les fichiers ouverts mais oublie de les suivre lorsqu'ils sont fermés. Ce problème est corrigé dans les versions les plus récentes de WSL et WSL2.

En guise de solution temporaire, on peut cp to target and rm the old source

Veuillez consulter les questions GitHub pour le projet WSL.

0 votes

Vérifiez également que vous n'avez pas un autre terminal ouvert qui se trouve dans le répertoire que vous essayez de déplacer... c'est arrivé à... un de mes amis.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X