A maioria dos derivados unix pode copiar ACLs de um arquivo para outro com:
getfacl filename1 | setfacl -f - filename2
Infelizmente, o Mac OS X não possui os comandos getfacl e setfacl, pois eles transferiram o tratamento da ACL para o chmod. O chmod -E aceita uma lista de ACLs no stdin, mas não encontrei um comando que cuspisse as ACLs em um formato adequado no stdout. O melhor que inventei é:
ls -led filename1 | tail +2 | sed 's/^ *[0-9][0-9]*: *//' | chmod -E filename2
Existe uma solução mais robusta?
Pergunta de bônus: existe uma boa maneira de fazer isso no Python, sem usar nenhum módulo que não seja fornecido com o 10.6?
mac-osx
access-control-list
chmod
MagerValp
fonte
fonte
getfacl
/setfacl
. Bastante notável. github.com/jvscode/getfacl tem 10 anos e não consegui fazê-lo funcionar. serverfault.com/a/303752/104173 parece complicado, e não estou claro se ele tenta substituir aget/setfacl
funcionalidade. Entendo que o macOS não é uma plataforma de servidor, mas ainda pode sofrer invasões de segurança. Vale a pena reiniciar esta conversa em apple.stackexchange.com ?Respostas:
ls -e
Imprima a lista de controle de acesso (ACL) associada ao arquivo, se presente, na saída longa (-l).isso dá um resultado como ...
Pessoalmente, tenho "exportações" no meu
~/.bash_profile
que tornam isso
chmod
possível ...sudo chmod + a "permitir localadmin $ DIR_ALL" / APPBUNDLE
Na
chmod
página de manual, há essa informação ... que sugere que pode ser realmente possível fazer algo como você descreve."As ACLs são manipuladas usando extensões da gramática do modo simbólico. Cada arquivo tem uma ACL, contendo uma lista ordenada de entradas. Cada entrada refere-se a um usuário ou grupo e concede ou nega um conjunto de permissões. Nos casos em que um usuário e um Se o grupo existe com o mesmo nome, o nome do usuário / grupo pode ser prefixado com "usuário:" ou "grupo:" para especificar o tipo de nome ".
Além disso, vou gritar para o BatchMod , um veterano , mas um presente para as ACLs e para o TinkerToolSystem .
fonte
sudo chmod +a "localadmin allow $DIR_ALL" /APPBUNDLE
(alternando o nome do usuário e oallow
) #Você deve conseguir
stat
formatar sua saída de maneira adequada.fonte
Talvez dê uma olhada em https://github.com/jvscode/getfacl .
fonte
setfacl
(apenasgetfacl
) e agetfacl
funcionalidade parece ser bastante limitada. Infelizmente, não encontrei uma solução melhor.