2011-05-04 20:42:49 +0000 2011-05-04 20:42:49 +0000
69
69

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

Estoy intentando hacer lo siguiente en mi Mac (10.6.7):

sudo chown myusername:wheel ./entries

pero Unix/Mac devuelve “Operación no permitida”. Cuando ls -lash el archivo culpable, se ve como sigue:

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

He probado con sudo y sudo su; nada funciona. ¿Alguna idea de lo que pasa?

Estoy tratando de chmod archivos que he copiado de mi antigua caja de Ubuntu. La mayoría de los archivos se han chmod‘ed recursivamente con éxito; sólo este se ha quedado atascado y no entiendo por qué.

Respuestas (7)

91
91
91
2012-12-12 21:58:23 +0000

Sí, Mac tiene muchas mejoras con respecto a Unix en el área de archivos. Ignorando todo el asunto de resource fork que ya no se usa mucho, hay:

  • los permisos estándar de Unix ugo rwx y así sucesivamente. Se aplican las herramientas normales de Unix.
  • ACL‘s, visibles con ls -le y modificables con chmod [-a | +a | =a].
  • banderas de archivo visibles con ls -lO (mayúsculas, no cero) y modificables con chflags.
  • atributos extendidos , visibles con ls -l@ (sólo claves de atributos) y visibles y modificables con xattr. (Use xattr -h para la ayuda si man xattr no le da nada).
  • A partir de OS X 10.11 “El Capitan”, * System Integrity Protection ** (SIP) protege aún más algunos archivos de los cambios de los procesos ordinarios, incluso cuando se usa sudo para ejecutar como root. Los archivos protegidos por SIP serán listados por ls -lO como si tuvieran la bandera restricted y/o serán listados por ls -l@ como si tuvieran el atributo com.apple.rootless.

Se le pueden negar operaciones en un archivo debido a los permisos Unix, ACLs, banderas 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á activada, sudo chflags norestricted y sudo xattr -d com.apple.rootless también devolverán un error de “Operación no permitida”. Para borrar la bandera y/o el atributo necesita arrancar en Recuperación de macOS y ejecutar los comandos desde el Terminal (puede que tenga que usar primero la Utilidad de Discos para desbloquear y montar su unidad de arranque, entonces recuerde que sus archivos estarán bajo /Volumes/Macintosh HD o cualquiera que sea el nombre de su unidad de arranque) o deshabilitar SIP por completo y luego reiniciar y los comandos deberían entonces funcionar. Tenga en cuenta, sin embargo, que las futuras actualizaciones del sistema operativo probablemente restaurarán la bandera restricted y el atributo com.apple.rootless a cualquier archivo del que lo haya eliminado.

_ No se recomienda deshabilitar el SIP _ ya que elimina gran parte de la protección contra el malware y los daños accidentales, además de que no es necesario cuando se puede eliminar simplemente la protección por archivo. Si desactiva el SIP, vuelva a activarlo cuando termine de hacer los cambios.

Tenga en cuenta que si ls -lO muestra que la bandera schg está activada, tiene que entrar en el modo de usuario único para desactivarla. No voy a entrar en eso aquí, ya que hay preguntas más importantes acerca de por qué el archivo tiene esa bandera establecida y por qué estás tratando de jugar con ella y cuáles serán las consecuencias.

18
18
18
2011-06-08 17:47:37 +0000

Yo tenía el mismo problema. Resulta que los archivos ofensivos estaban marcados como “Bloqueados” por el SO. 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 comando rm ha cambiado en Tiger de tal manera que si usas rm -Rf con 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 banderas de metadatos de archivos como uchg y uappnd, que impiden cualquier modificación de los permisos o la propiedad de los archivos. chflags puede eliminar estos indicadores. Algunos de los atributos/metadatos de los archivos y cómo son manejados por las diferentes herramientas de copia son aquí .

12
12
12
2015-09-30 23:09:40 +0000

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

En resumen, para ciertos directorios importantes, no hay manera de modificarlos - ya sea que use sudo, chown o chmod. Esto afecta al directorio /usr, (aunque sí se puede modificar el /usr/local).

Para modificar un directorio protegido por Rootless, necesita desactivar Rootless . Y, por supuesto, volver a habilitarlo después de hacer sus modificaciones, porque es una importante mejora de seguridad.

12
12
12
2014-08-21 17:30:15 +0000

Tuve el mismo problema con el Crashplan.app.

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

Tienes que cambiar las banderas inmutables del sistema y del usuario:

Haz esto para ver qué banderas están activas en tu archivo/carpeta:

ls -lhdO MyFile

La respuesta puede ser así

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

schg , uchg son esas banderas inmutables. Una para el sistema y otra para el usuario. Para eliminarlos, haz 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 borrarlo.

5
5
5
2011-05-04 21:02:23 +0000

Después de mucho batallar, esto es lo que tuve que hacer para arreglar el problema:

  • Moví el archivo a ~/Desktop
  • sudo chown myusername:staff ./entries
  • Mover el archivo de vuelta a su ubicación original no funcionó (Operación no permitida, de nuevo), así que…
  • sudo rm ./entries
  • sudo mv ~/Desktop/entries ./entries
4
4
4
2013-09-19 22:49:53 +0000

Yo tenía el mismo problema, sobre mi carpeta de inicio. Al final he usado el finder así:

Ir -> Equipo -> su disco -> Usuarios -> su nombre de usuario -> clic derecho -> Obtener Información

Encontré que estaba bloqueado, probablemente lo hice en el pasado y lo olvidé. Desmarqué la casilla de bloqueo, problema solucionado.

Puedo recomendar el uso de ‘Get Info’ desde el finder para solucionar este tipo de problemas.

(OS X 10.8.3)

1
1
1
2015-03-23 15:28:32 +0000

Asegúrate de que tanto el archivo como su carpeta principal están desbloqueados

Me encontré con un problema similar al intentar eliminar un archivo de firma de correo electrónico de Mac Mail. No podía borrarlo hasta que no había desbloqueado tanto el archivo como su carpeta principal.