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.