¿Por qué chown informa "Operación no permitida" en OS X?


65

Estoy tratando de hacer lo siguiente en mi Mac (10.6.7):

sudo chown myusername:wheel ./entries

pero Unix / Mac devuelve "Operación no permitida". Cuando ls -lashel archivo culpable, se ve de la siguiente manera:

8 -rwxrwxrwx   1 myusername  staff   394B Apr 26 23:26 entries

Lo he intentado sudoy sudo su; nada funciona. Alguna idea de lo que pasa?

Estoy tratando de chmodarchivos que he copiado de mi antiguo cuadro de Ubuntu. La mayoría de los archivos se han chmodeditado con éxito de forma recursiva; este está atascado y no entiendo por qué.


1
Has intentado sudo chgrp wheel ./entries?
ardilla

1
Haga una verificación del sistema de archivos. Abra la Utilidad de Discos, seleccione su volumen y haga clic en Verificar Disco , luego, si es necesario, Repare Disco .
Daniel Beck

Asegúrese de que el archivo no esté bloqueado en el Finder (no hay insignia de bloqueo en el icono). Para cambiarlo, abra el cuadro de diálogo Obtener información y desactive Bloqueado .
Daniel Beck

Si es un volumen "externo" (es decir, no el volumen del sistema), es posible que deba eliminar la opción "Ignorar la propiedad de este volumen". (Consulte en la parte inferior de la ventana Obtener información el volumen en sí).
mivk

Respuestas:


85

Sí, Mac tiene muchas mejoras para Unix en el área de archivos. Ignorando todo el tema de la bifurcación de recursos que ya no se usa mucho, hay:

  • los permisos estándar de Unix, ugo rwx etc. Se aplican herramientas normales de Unix.
  • ACL , visible ls -ley modificable con chmod [ -a | +a | =a ].
  • marcas de archivo visibles con ls -lO(mayúscula, no cero) y modificables con chflags.
  • atributos extendidos , visibles con ls -l@(solo claves de atributos) y visibles y modificables con xattr. (Úselo xattr -hcomo ayuda si man xattrno le da nada).
  • Comenzando con OS X 10.11 "El Capitan", la Protección de integridad del sistema (SIP) protege aún más algunos archivos de los cambios de los procesos normales, incluso cuando se usa sudopara ejecutarse como root. Los archivos protegidos por SIP se mostrarán ls -lOcon el restrictedindicador y / o ls -l@con el com.apple.rootlessatributo.

Se le pueden negar las operaciones en un archivo debido a los permisos de Unix, las ACL, los indicadores de archivo o SIP. Para desbloquear completamente un archivo:

sudo chmod -N file        # Remove ACLs from file
sudo chmod ugo+rw file    # Give everyone read-write permission to file
sudo chflags nouchg file  # Clear the user immutable flag from file
sudo chflags norestricted file  # Remove the SIP protection from file
sudo xattr -d com.apple.rootless file # Remove SIP protection from file

Si la Protección de integridad del sistema (SIP) está habilitada sudo chflags norestrictedy sudo xattr -d com.apple.rootlesstambién devolverá un error "Operación no permitida". Para borrar el indicador y / o el atributo, debe iniciar en MacOS Recovery y ejecutar los comandos desde la Terminal (es posible que primero deba usar la Utilidad de Discos para desbloquear y montar su unidad de inicio, luego recuerde que sus archivos estarán debajo /Volumes/Macintosh HDo sea cual sea su inicio unidad se llama) o deshabilite SIP por completo y luego reinicie y los comandos deberían funcionar. Sin embargo, tenga en cuenta que las futuras actualizaciones del sistema operativo probablemente restablecerán el restrictedindicador y el com.apple.rootlessatributo a cualquier archivo del que lo haya eliminado.

No se recomienda deshabilitar SIP, ya que elimina mucha protección contra malware y daños accidentales, además no es necesario cuando simplemente puede eliminar la protección por archivo. Si deshabilita SIP, vuelva a habilitarlo cuando haya terminado de hacer cambios.

Tenga en cuenta que si ls -lOmuestra que el schgindicador está configurado, debe ingresar al modo de usuario único para desactivarlo. No voy a entrar en eso aquí, ya que hay preguntas más importantes sobre por qué el archivo tiene ese indicador establecido y por qué está tratando de meterse con él y cuáles serán las consecuencias.


77
Además de esto, otras banderas pueden evitar que cambie sus archivos. En mi guión pusesudo chflags -R nouchg,noschg,nouappnd,nosappnd,noopaque,dump .
djjeck

1
Nota: si algo tiene la bandera "inmutable", la casilla de verificación Bloqueado en Obtener información estará marcada y atenuada. "sudo chflags nouchg" lo arregla.
Foo Bar

1
No podía hacer el -Ny ugo+rwdos a la vez (tengo Failed to clear ACL on file ugo+rw: No such file or directory) pero el funcionamiento de ellos individualmente funcionó bien. Si se desea recursivo, -Rdebe ser el primer argumento.
owenfi

3
Tenga en cuenta que la Protección de integridad del sistema (sin raíz) también puede causar esto en El Capitan y versiones posteriores. Para resolver eso, inicie en Modo de recuperación ( Cmd-R), abra Terminal y ejecute csrutil disable, luego reinicie (para volver a habilitar, use csrutil enable).
Erwin Wessels

Gracias ... No tenía idea de las marcas de archivo. Ahora entiendo por qué decíaoverride rwxrwxrwx huttarl/staff uchg for green.html?
LarsH

18

Yo tuve el mismo problema. Resulta que los archivos ofensivos fueron marcados como "Bloqueados" por el sistema operativo. Encontré esta solución y resolvió los problemas en segundos:

http://explanatorygap.net/2005/07/10/unlocking-files-recursively-from-the-command-line/

Parece que el rmcomando ha cambiado en Tiger de modo que si lo usa rm -Rfcon privilegios elevados, desbloqueará automáticamente los archivos.

En OS X antes de Tiger: find /Volumes/Transit -flags +uchg -print0 | xargs -0 chflags nouchg

En OS X después de Tiger: sudo rm -Rf foldername/

Además, incluso después de OS X 10.4, puede haber indicadores de metadatos de archivo como uchgy uappnd, que impiden cualquier modificación de los permisos o la propiedad del archivo. chflagsPuede quitar las banderas. Aquí se encuentran algunos de los atributos / metadatos del archivo y cómo son manejados por diferentes herramientas de copia .


sudo rm -Rf foldername/funciona perfectamente en OSX Mountain Lion
Aryo

55
@Aryo: rmelimina el directorio. ¿Hay alguna manera de desbloquear todo sin eliminarlo? Cuando miro uchgno está configurado, y puedo encenderlo y apagarlo nuevamente como se esperaba (con chflags [no]uchg), pero eso no tiene ningún efecto en el ícono de bloqueo en el Finder o en mi capacidad chown.
orome

12

Tuve el mismo problema con el Crashplan.app.

Todas las soluciones enumeradas aquí no me ayudarían, pero esta hizo el truco: http://forums.macrumors.com/showthread.php?t=1546163

Debe cambiar el sistema y las marcas inmutables del usuario:

Haga esto para ver qué indicadores están activos en su archivo / carpeta:

ls -lhdO MyFile

La respuesta podría verse así:

drwxrwxr-x 3 root admin schg,uchg 102B Apr 8 2013 MyFile

schg , uchg son esas banderas inmutables. Uno para el sistema y otro para el usuario. Para eliminarlos, haga lo siguiente:

chflags noschg CrashPlan.app # this removes system immutable flag
chflags nouchg CrashPlan.app # this removes the user immutable flags

¡Entonces, al menos para mí, el archivo está desbloqueado y puedes eliminarlo!


Impresionante, tuve que chflagsusar sudo, pero tiene sentido
Felipe

Tuve el mismo problema con CrashPlan.app (tuve drwxrwxr-x@ 3 _BGMXPCHelper admin schg 96B 9 Jan 2018 CrashPlan.app), y esta fue la única solución que me permitió eliminarlo, ¡gracias!
webeno

12

En OS X 10.11 (El Capitan), esto también puede ser causado por la nueva función Rootless . Vea esta respuesta para una explicación.

En resumen, para ciertos directorios importantes, no hay manera de modificarlos - si se utiliza sudo, chowno chmod. Esto afecta el /usrdirectorio (aunque puede modificarlo /usr/local).

Para modificar un directorio protegido por Rootless, debe deshabilitar Rootless . Y, por supuesto, vuelva a habilitarlo después de realizar sus modificaciones, ya que es una mejora de seguridad importante.


1
Guau. Eso me volvió loco. De alguna manera, necesitaba copiar algo en / usr / lib que de otro modo no se encontraba en / usr / local / lib (no me pregunten por qué). Y eso hizo el truco.
qwerty_so

44
En realidad, no tiene que deshabilitar Rootless por completo, solo puede iniciar en modo Recuperación (lo que tendría que hacer de todos modos para deshabilitar Rootless) y realizar los cambios que desee desde la Terminal allí.
Old Pro

6

Después de muchas dificultades, esto es lo que tuve que hacer para solucionar el problema:

  • Movió el archivo a ~/Desktop
  • sudo chown myusername:staff ./entries
  • Mover el archivo a su ubicación original no funcionó (operación no permitida, de nuevo), así que ...
  • sudo rm ./entries
  • sudo mv ~/Desktop/entries ./entries

4

Tuve el mismo problema, sobre mi carpeta de inicio. Al final, solo utilicé el buscador de esta manera:

Vaya -> Computadora -> su disco -> Usuarios -> su nombre de usuario -> haga clic derecho -> Obtener información

Descubrí que estaba bloqueado, probablemente lo hice en el pasado y lo olvidé. Desmarque la casilla de verificación bloqueada, problema solucionado.

Puedo recomendar usar 'Obtener información' del buscador para abordar este tipo de problemas.

(OS X 10.8.3)


Esto me ayudó a desbloquear .isodesde la caja virtual glitchy.
Nakilon

1

Asegúrese de que tanto el archivo como su carpeta principal estén desbloqueados

Estaba enfrentando un problema similar al intentar eliminar un archivo de firma de correo electrónico de Mac Mail. No pude eliminarlo hasta que desbloqueé el archivo y su carpeta principal.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.