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.