el sudo chown falla con la operación no permitida

8

He encontrado preguntas similares aquí, pero las respuestas proporcionadas a esas preguntas no resuelven mi problema.

Si lo hago:

sudo chown <username> main.m

Me sale un error de operación no permitida.

La solución general a los errores anteriores fue:

sudo chflags nouchg main.m

para borrar una bandera de bloqueo. Sin embargo, después de hacer esto, todavía no puedo cortar el archivo. También he intentado:

chflags noschg main.m

en modo de usuario único sin suerte: obtengo un error de operación no permitida.

Si alguien tiene alguna idea, me interesaría.

ericg
fuente
¿Qué es lo subyacente que estás tratando de hacer? Quizás haya una razón para que ese archivo tenga un bloqueo.
Tamara Wijsman
Por lo tanto, puedo usarlo como datos de prueba sin colocar el código en una herramienta auxiliar segura, lo que requiere un trabajo adicional para depurar, no es imposible, pero es lo suficientemente molesto que si puedo cambiar los atributos del archivo, por lo que no es necesaria una herramienta auxiliar segura, eso facilitaría un poco las cosas. Teniendo en cuenta que estos son solo datos de prueba que se crearon, ya no hay ninguna buena razón para que tenga un bloqueo.
ericg
1
¿En qué tipo de sistema de archivos está el archivo? No estás intentando usar chownen un sistema de archivos NTFS / FAT, ¿verdad?
Zoredache
@ericgorr: La mayor parte de eso está sobre mi cabeza; No sé qué es exactamente una herramienta auxiliar segura. Pero como usted dice, solo se crearon datos de prueba; ¿Has cerrado correctamente el archivo de prueba en tu código?
Tamara Wijsman
@ Tom una herramienta auxiliar es la forma en que OS X le otorga a una aplicación privilegios elevados mientras mantiene los privilegios, por lo que si una aplicación desea modificar un archivo seguro, por ejemplo, le dice a la herramienta auxiliar (autorizada) que modifique el archivo. Supongo que ericgorr quiere evitar elevar su aplicación o algo para evitar la depuración rigurosa que conlleva.
Vervious

Respuestas:

8

Archivos de Mac pueden estar protegidos en cuatro de tres maneras diferentes que yo sepa:

  1. Propietarios y permisos de Unix estándar como r / w / x para usuario / grupo / otros con los que ve ls -ly arregla con chown(1)y chmod(1).
  2. Señales de archivo como uchgy schgque ves con ls -lOy arreglas chflags(1).
  3. Los viejos metadatos de Finder "Bit de bloqueo" que ves con GetFileInfo filename. También puede ver la presencia de los metadatos del Finder, pero no su significado, con ls -l@. Puedes arreglarlo con SetFile(1). No importa, esto está asignado a la uchgbandera ahora.
  4. Listas de control de acceso (ACL) que puede ver ls -ley corregir con los argumentos relacionados con ACL chmod(1).

Entonces, veamos qué pasa con su archivo combinando todas esas banderas para ls:

ls -lO@e main.m

Parece que ya sabes cómo lidiar con # 1 y # 2.

Si ve una ACL (# 4), puede arreglarla con los argumentos relacionados con ACL chmod(1).

Si todavía está perplejo, actualice su Respuesta con la salida de ese lscomando combinado que sugerí anteriormente, para que podamos ver lo que está sucediendo.

Spiff
fuente
El problema parece ser con las ACL. Me parece interesante que sudo no tenga uno alrededor de esas cerraduras. Además, chmod -R -a # 0 * eliminó las ACL de la mayoría de los archivos en la jerarquía, pero no pudo eliminarlas de algunas; usar sudo con chmod no ayudó.
ericg