El archivo no se puede mover por raíz en OS X

Traté de mover algunos archivos a una subcarpeta en OS X. Uno se negó a mover. dijo Operation not permitted. Lo intenté de nuevo como 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

Probé lsattrcon otros archivos; todos los archivos que probé me dieron el mismo mensaje:Inappropriate ioctl for device While reading...

Viniendo de Linux, no sabía acerca de las banderas, así que aquí está el resultado 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

Probé la Utilidad de disco de OS X; decía que no había errores en mi disco. ¿Que está pasando aqui?

lsattrno es un comando OS X estándar; prueba ls -leO@en su lugar. Además, ¿en qué volumen está el archivo? Intente mountver con qué atributos está montado el volumen.
@GordonDavisson, parece que estás en el camino correcto. ls -leo@ dice que ese archivo es el único con el atributo "uchg", que me suena mucho a "inmutable".
¡Bienvenido a Ask Different! Eliminaré las ediciones y convertiré esto en una pregunta y dejaré la respuesta para la sección de respuestas...

Respuestas (9)

Parece que el archivo está bloqueado para mí, por lo que aparece el atributo uchg. Debería poder usar el siguiente comando para eliminar el atributo bloqueado:

chflags nouchg file

o haga clic derecho en el archivo en el Finder, haga clic en "Obtener información" y luego desmarque la casilla de verificación "Bloqueado"

¡Decir ah! ¡Parece que respondiste tu propia pregunta justo cuando estaba publicando esta respuesta!
¡Muchas gracias! ¡No me había fijado en el icono del candado! A veces tengo que usar Finder en lugar de apegarme a la terminal: P

Para las personas que se topan con esto en una era OS X 10.11+ (El Capitan o más reciente): Apple ha agregado una capa completamente nueva de seguridad en OS X. Le han quitado algunos privilegios a la raíz. El archivo que intenta modificar tiene una restrictedbandera. Solo restrictedlos procesos firmados por Apple podrán modificar estos archivos. Sin embargo, puede deshabilitar este sistema de seguridad iniciando en modo de recuperación y deshabilitándolo en una Terminal haciendo lo siguiente: csrutil disable.

Alternativamente, también puede simplemente iniciar Terminal en modo de recuperación y eliminar el archivo allí. O incluso intente arrancar en un entorno Linux con soporte HFS+ (al menos si aún no está en APFS) para cambiar el archivo.

¿Qué significa csr en csrutil?
Creo que fue Benjamin Franklin quien dijo: "Aquellos que sacrifican la facilidad de uso por seguridad no merecen ninguno". O algo.
¿Quiere decir iniciar la computadora en modo de recuperación?
Pruebe la otra respuesta primero.
FYI puede determinar si un archivo tiene la restrictedbandera con/bin/ls -lO
Las personas hacen sacrificios inapropiados para obtener una seguridad insuficiente debido a ideas (e implementaciones) de seguridad poco claras. Por ejemplo, el sistema operativo otorga al código todas las capacidades del usuario . Entonces, si hay un virus dentro de una utilidad o biblioteca utilizada por root, puede hacer cualquier cosa... por lo que restringen lo que puede hacer root.

Tratar:

chflags -f -R nouchg directory

en un directorio de nivel superior para detener este problema.

FWIW: tuve este problema zsh: locking failed for /Users/me/.zhistory: operation not permitted: reading anywayy al ejecutar este comando en mi directorio de inicio lo solucioné

Tenía un archivo que no podía eliminar en la 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

Lo que funcionó para mí fue abrir Finder y eliminar todo el directorio contenedor. Según tengo entendido, Finder elimina los directorios como una unidad sin tener en cuenta por completo su contenido, por lo que no está sujeto a las mismas restricciones que el archivo rm -rf.

También tuve este problema y descubrí que la carpeta en la que estaba el archivo estaba bloqueada. Así que asegúrate de que eso no sea cierto. Haga "obtener información" sobre la carpeta en el buscador y asegúrese de que la casilla de verificación bloqueada no esté marcada.

Bajo OS 10.15 esto funcionó para mí:

  1. Modo de recuperación: comando + R
  2. Utilidades -> Terminal
  3. rm -r /path/to/file/or/dir/to/remove (El -r solo funcionó para mí, si lo necesita, rm -rf force mode)
  4. Reiniciar
-fno fuerza nada, solo responde algunas preguntas de permiso yautomáticamente.

Una respuesta anterior decía usar:

chflags -f -R nouchg directory

Hay dos atributos diferentes que impiden cambiar un archivo. "uchg" evita que el usuario cambie el archivo; "schg" evita que el sistema realice un cambio. Use ls -le0@ para ver cuál es su problema, o use apple-I: si "bloqueado" está marcado pero no atenuado, entonces "uchg" está configurado. Si "bloqueado" está marcado Y atenuado, entonces "schg" está configurado.) Si está configurado "uchg", la respuesta anterior funcionará. Si se establece "schg", entonces haga esto en su lugar:

chflags -f -R noschg directory

Antes de usar comandos arcanos, confirma tus preferencias del sistema

Es posible que la terminal no tenga permiso para acceder a su archivo present working directory.

  1. Anote su ruta (por ejemplo, en Terminal, escriba pwd).
  2. VisitarSystem Preferences > Security & Privacy > Privacy > Files and Folders
  3. Confirme que hay una marca de verificación junto a los volúmenes y directorios que aparecen en su ruta.

Si la Terminal tiene permisos y el comando aún recibe un error, verifique las soluciones proporcionadas en otras respuestas.

Ese era mi problema - gracias! VSCode y la terminal interna no tenían permisos.
Mac OS 10.13.6 (High Sierra): sin "Archivos" en Privacidad.

Me doy cuenta de que este es un tema muy antiguo, pero no veo que este hilo aborde mi síntoma, así que pensé en publicar otra opinión.

Esto me sucedió con una unidad externa que funcionaba perfectamente en un Snow Leopard iMac, que se actualizó a El Capitan en el camino. A principios de este año, tomé esa unidad y la puse en una nueva caja de Windows 10 que ejecutaba Paragon HFS para Windows. Copié cientos de GB de archivos DESDE Windows A HFS+ en ese disco y lo volví a conectar al iMac. Todo funcionó bien, excepto un script de shell que tenía que almacenaba archivos para la copia de seguridad y encontró este problema uchg.

En resumen: los archivos y carpetas creados en El Capitan o Windows 10 con Paragon HFS, cuando se mueven de nuevo a un cuadro de Snow Leopard, el cuadro de radio "bloqueado" NO se marcará cuando seleccione Get Infoen el Finder. Sin embargo, las sugerencias de otros funcionaron bien para mí:

  • verifique que ese sea el problema ejecutando ls -leO@(eso es mayúscula) en un archivo sospechoso
  • como raíz, ejecute chflags -R nouchgen el directorio principal (no hay -f en Snow Leopard)

Funcionará, pero no espere exactamente las mismas señales visuales si su disco ha pasado de un sistema operativo a otro o si usa Paragon HFS.

chflags -f -R nouchg directorio funciona gracias