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

53

J'ai essayé de déplacer quelques fichiers vers un sous-dossier sous OS X. L'un d'eux a refusé de le déplacer. C'est 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é lsattrsur 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, voici donc le résultat 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 OS X; il a dit qu'il n'y avait aucune erreur sur mon disque. Que se passe t-il ici?

eje211
la source
1
lsattrn'est pas une commande standard d'OS X; essayez ls -leO@plutôt. De plus, sur quel volume se trouve le fichier? Essayez mountde voir quels attributs le volume est monté.
Gordon Davisson
1
@GordonDavisson, il semble que vous soyez sur la bonne voie. ls -leo @ dit que ce fichier est le seul avec l'attribut "uchg", qui ressemble beaucoup à "non modifiable" pour moi.
eje211
Bienvenue à Ask Different! Je vais supprimer les modifications, en faire une question et laisser la réponse dans la section des réponses ...
bmike

Réponses:

30

On dirait que le fichier est verrouillé sur moi, c'est pourquoi l'attribut uchg apparaît. Vous devriez pouvoir utiliser la commande suivante pour supprimer l'attribut verrouillé:

chflags nouchg file

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

binarybob
la source
1
Ha! Il semblerait que vous ayez répondu à votre propre question au moment où je postais cette réponse!
binarybob
84

Pour les personnes trébuchant sur cela dans un OS X ère 10.11+ (El Capitan ou plus récent): Apple a ajouté une toute nouvelle couche de sécurité dans OS X . Ils ont enlevé certains privilèges à la racine. Le fichier que vous essayez de modifier a un restrictedindicateur. Seuls les restrictedprocessus signés par Apple pourront modifier ces fichiers. Cependant, vous pouvez désactiver ce système de sécurité en démarrant en mode de récupération et la désactivation dans un terminal en faisant: csrutil disable.

Alternativement, vous pouvez également simplement démarrer Terminal en mode de récupération et supprimer le fichier là-bas. Ou même essayez de démarrer dans un environnement Linux avec support HFS + (du moins si vous n'êtes pas encore sur APFS) pour changer le fichier.

Martijn Courteaux
la source
1
Que signifie le RSE dans Csrutil?
Michael Terry
12
Je crois que c’est Benjamin Franklin qui a déclaré: "Ceux qui sacrifient la facilité d’utilisation pour la sécurité ne méritent pas non plus". Ou quelque chose.
jeudi
5

Essayer:

chflags -f -R nouchg directory

sur un répertoire de niveau supérieur pour arrêter ce problème.

dvand
la source
FWIW: J'ai eu ce problème zsh: locking failed for /Users/me/.zhistory: operation not permitted: reading anywayet le fait d'exécuter cette commande sur mon répertoire personnel a corrigé le problème
raine
1

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

$ sudo ls -leO@ [email protected]/Documents/.%cb_defense/cb.doc
-rw-rw-rw-  1 root  wheel  - 41984  1 Mar 11:20 [email protected]/Documents/.%cb_defense/cb.doc

$ sudo rm -rf [email protected]/Documents/.%cb_defense/cb.doc
rm: [email protected]/Documents/.%cb_defense/cb.doc: Operation not permitted

Ce qui a fonctionné pour moi a été d'ouvrir le Finder et de supprimer le répertoire entier. Si je comprends bien, le Finder supprime les répertoires comme une unité ignorant totalement leur contenu. Par conséquent, il n’est pas soumis aux mêmes restrictions que les autres utilisateurs rm -rf.

Leons
la source
0

J'ai eu ce problème aussi, et j'ai découvert que le dossier dans lequel se trouvait le fichier était verrouillé. Alors assurez-vous que ce n'est pas vrai. Faites 'obtenir des informations' sur le dossier dans le viseur et assurez-vous que la case à cocher verrouillée n'est pas cochée.

Abbaroo
la source
0

Je réalise que c'est un sujet très ancien, mais je ne vois pas ce fil qui aborde mon symptôme, alors j'ai pensé poster un autre avis.

Cela est arrivé à un disque externe qui fonctionnait parfaitement sur un iMac Snow Leopard, qui a été mis à niveau vers El Capitan en cours de route. Plus tôt cette année, j’ai pris ce lecteur pour le mettre dans une nouvelle boîte Windows 10 qui exécutait Paragon HFS pour Windows. Je copiais des centaines de Go de fichiers DE de Windows TO HFS + sur ce lecteur et rebranché dans l'iMac. Tout a bien fonctionné, à l'exception d'un script de shell que j'ai stocké qui a stocké des fichiers de sauvegarde a rencontré ce problème d'ughg.

En bref: les fichiers et les dossiers créés sous El Capitan ou Windows 10 à l'aide de Paragon HFS, lorsqu'ils sont ramenés dans une boîte Snow Leopard, la case "Verrouillé" n'est PAS cochée lorsque vous sélectionnez Get Infocette option dans le Finder. Cependant, les suggestions des autres ont bien fonctionné pour moi:

  • vérifier que c'est le problème en exécutant ls -leO@(c'est une capitale oh) sur un fichier suspect
  • en tant que root, exécutez chflags -R nouchgle répertoire parent (il n'y a pas -f dans Snow Leopard)

Cela fonctionnera, mais ne vous attendez pas aux mêmes repères visuels si votre disque a passé entre des systèmes d'exploitation ou si vous utilisez Paragon HFS.

Mike Hockurtz
la source
chflags -f -R Le répertoire nouchg ne fonctionne pas, merci
odjeezeus