Sim, Mac tem muitos melhoramentos a Unix na área dos ficheiros. Ignorando toda a coisa garfo de recurso que já não é muito utilizada, existem:
- as permissões padrão Unix
ugo rwx e assim por diante. Aplicam-se as ferramentas Unix normais.
- ACL‘s, visualizáveis com
ls -le e modificáveis com chmod [-a | +a | =a].
- ** bandeiras de ficheiros*** visualizáveis com
ls -lO& (Capital oh, não zero) e mutáveis com chflags.
- ** atributos ampliados** , visualizável com
ls -l@ (apenas chaves de atributos) e visualizável e mutável com xattr. (Use xattr -h& para ajuda se man xattr não lhe der nada.)
- A partir do OS X 10.11 “El Capitan”, * System Integrity Protection ** (SIP) protege ainda mais alguns ficheiros de alterações de processos ordinários, mesmo quando usa
sudo para correr como root. Os ficheiros protegidos pelo SIP serão listados por ls -lO como tendo a bandeira restricted e/ou ser listados por ls -l@ como tendo o atributo com.apple.rootless.
& podem ser-lhe negadas operações num ficheiro devido a permissões Unix, ACLs, bandeiras de ficheiro, ou SIP. Para desbloquear completamente um ficheiro:
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
Se a Protecção de Integridade do Sistema (SIP) estiver activada, sudo chflags norestricted e sudo xattr -d com.apple.rootless devolverá também um erro “Operação não permitida”. Para limpar a bandeira e/ou atributo é necessário arrancar em macOS Recovery e executar os comandos a partir do Terminal (poderá ter de usar primeiro o Disk Utility para desbloquear e montar a sua unidade de arranque, depois lembre-se que os seus ficheiros estarão abaixo de /Volumes/Macintosh HD ou qualquer que seja o nome da sua unidade de arranque) ou desactivar completamente o SIP e depois reiniciar e os comandos deverão então funcionar. Esteja ciente, contudo, de que futuras actualizações do SO irão provavelmente restaurar a bandeira restricted e o atributo com.apple.rootless a quaisquer ficheiros de onde o tenha removido.
_ Desactivar o SIP não é recomendado _ pois remove muita protecção contra malware e danos acidentais, além de não ser necessário quando se pode simplesmente remover a protecção numa base por ficheiro. Se desactivar o SIP, volte a activá-lo quando terminar de fazer alterações.
Note que se ls -lO mostra que a bandeira schg está definida, tem de entrar em modo de utilizador único para a desactivar. Não vou entrar nisso aqui, pois há questões maiores sobre a razão pela qual o ficheiro tem essa bandeira definida e porque se está a tentar mexer com ela e quais serão as consequências.