70 votes

Le fichier ne peut pas être déplacé par Root sous OS X

J'ai essayé de déplacer quelques fichiers dans un sous-dossier sous OS X. L'un d'entre eux a refusé de se déplacer. Il dit Operation not permitted . J'ai réessayé en tant que Root :

$ sudo mv file subfolder/
mv: rename file to subfolder/file: Operation not permitted
$ sudo mv file filex
mv: rename file to filex: Operation not permitted
$ lsattr file
lsattr: Inappropriate ioctl for device While reading flags on file

J'ai essayé lsattr sur d'autres fichiers ; tous les fichiers que j'ai essayés m'ont donné le même message : Inappropriate ioctl for device While reading...

Venant de Linux, je ne connaissais pas les drapeaux, donc voici la sortie de ls -leO@ file :

$ ls -leO@ file otherfile
-rwxrwxrwx  1 eeytan  staff  uchg 79549 Nov 11  2010 file
-rw-r--r--  1 eeytan  staff  -     5071 Sep  7 02:37 otherfile

J'ai essayé l'utilitaire de disque d'OS X ; il a dit qu'il n'y avait aucune erreur sur mon disque. Qu'est-ce qui se passe ici ?

97voto

JeffFoster Points 354

Pour les personnes tombant sur cette page dans une ère OS X 10.11+ (El Capitan ou plus récent) : Apple a ajouté une toute nouvelle couche de sécurité dans OS X . Ils ont retiré certains privilèges à Root. Le fichier que vous essayez de modifier a un restricted drapeau. Seul restricted Les processus signés par Apple seront en mesure de modifier ces fichiers. Cependant, vous pouvez désactiver ce système de sécurité en démarrant en mode récupération et en le désactivant dans un Terminal en faisant : csrutil disable .

Vous pouvez aussi simplement démarrer le terminal en mode de récupération et y supprimer le fichier. Ou même essayer de démarrer dans un environnement Linux avec un support HFS+ (au moins si vous n'êtes pas encore sur APFS) pour changer le fichier.

43voto

binarybob Points 9292

Il me semble que le fichier est verrouillé, ce qui explique l'apparition de l'attribut uchg. Vous devriez être en mesure d'utiliser la commande suivante pour supprimer l'attribut verrouillé :

chflags nouchg file

ou cliquez avec le bouton droit de la souris sur le fichier dans le Finder, cliquez sur "Obtenir des informations", puis décochez la case "Verrouillé".

10voto

dvand Points 109

Essayez :

chflags -f -R nouchg directory

sur un répertoire de niveau supérieur pour mettre fin à ce problème.

3voto

Leo Points 131

J'avais un fichier que je ne pouvais pas supprimer dans le terminal :

$ sudo ls -leO@ foo@example.com/Documents/.%cb_defense/cb.doc
-rw-rw-rw-  1 root  wheel  - 41984  1 Mar 11:20 foo@example.com/Documents/.%cb_defense/cb.doc

$ sudo rm -rf foo@example.com/Documents/.%cb_defense/cb.doc
rm: foo@example.com/Documents/.%cb_defense/cb.doc: Operation not permitted

Ce qui a fonctionné pour moi, c'est d'ouvrir le Finder et de supprimer l'ensemble du répertoire qui le contient. D'après ce que j'ai compris, le Finder supprime les répertoires en tant qu'unité, sans tenir compte de leur contenu, et n'est donc pas soumis aux mêmes restrictions que les fichiers ordinaires. rm -rf .

1voto

abbaroo Points 11

J'ai eu ce problème aussi, et j'ai découvert que le dossier dans lequel se trouvait le fichier était verrouillé. Assurez-vous donc que ce n'est pas le cas. Faites "get info" sur le dossier dans le finder, et assurez-vous que la case verrouillée n'est pas cochée.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X