Estou no Mac. Quero fazer com que todos os novos arquivos / pastas criados em uma pasta específica tenham as mesmas permissões (não grupo, que já foram resolvidas) como as do diretório pai. No Linux, eu normalmente usaria o setfacl, mas parece que o chmod no Mac pode fazer o que estou procurando. Eu li a página de manual do chmod, mas ainda não consigo descobrir como formatar corretamente o comando para obter o que quero.
23
Respostas:
Primeiro, um pouco de plano de fundo para explicar o que está acontecendo: os arquivos no OS X podem ter dois tipos bem diferentes de configurações de permissão aplicadas a eles: POSIX e ACLs.
Os arquivos sempre (bem, quase sempre) têm permissões POSIX aplicadas, consistindo em um proprietário, grupo e outros (com alguma combinação de leitura, gravação e execução para cada um deles). Não há como controlar a herança de permissões POSIX: os novos itens sempre pertencem a qualquer usuário que os criou, a atribuição do grupo é herdada da pasta em que estão e o acesso é determinado pelo umask (que é quase sempre: proprietário obtém acesso total, grupo e outros somente leitura + execução para pastas). Portanto, as permissões POSIX não funcionarão para o que você está tentando fazer.
Os arquivos também podem ter uma lista de controle de acesso (ACL) aplicada. Esta é uma lista de entradas de controle de acesso (ACEs), cada uma das quais se aplica a um usuário ou grupo, especifica os tipos de acesso (em grande detalhe), se eles estão sendo permitidos ou negados e se a ACE também deve ser copiada para itens criados dentro da pasta. Essa última parte é a parte que torna isso útil para você; você precisa criar uma ACE na pasta que especifica o grupo que você deseja, os tipos de acesso que você deseja e a herança completa.
O chmod no OS X pode manipular ACEs com as opções de permissões + a, -a, etc. Se eu entendo o que você deseja, você usaria isso (com o nome do grupo e o caminho da pasta substituídos) para criar o ACE:
Observe que a herança não é "ativa", ou seja, não se aplica aos itens criados antes de você atribuir o ACE, e não se aplica aos itens criados em outro lugar e depois movidos para a pasta. Você pode aplicá-lo ao conteúdo existente usando -R (
chmod -R +a ...
). Não conheço uma maneira (exceto as ferramentas administrativas de servidor da Apple) de forçar a herança aos itens movidos para a pasta.fonte
ls -l
mostra apenas permissões POSIX (embora o "+" após as permissões indique que há uma ACL presente). Usels -le
para mostrar ACLs também.chmod +a ...
comando, então criei um abc.txt na pasta Comutado para outro usuário e edite com o TextEdit, o arquivo é indicado como Bloqueado e não é editável.Tente adicionar
-R
ao comando @ gordon, assim:A
-R
opção irá (como observado aqui ):Alterar as hierarquias de arquivos parece ser o que você está procurando (para novos arquivos, diretórios etc.).
Você também pode conferir esta postagem Apple.SE , que cobre uma situação um pouco semelhante à sua (exceto em relação a um diretório compartilhado), que exigia uma
sudo
tacha na frente.fonte
Este (-R) não é o que a maioria das pessoas procura fazer; na maioria das vezes eles preferem alterar a ACL no diretório superior e fazer algo mágico para forçar todos os objetos contidos a herdarem sinalizadores de acordo com a ACL especificada na raiz dessa subárvore. Isso é muito mais elegante, pois as ACLs nos objetos classificam essas ACEs herdadas de acordo com a política.
E sim, eu tive que escrever um script python para fazer isso, também não achei nada apropriado.
fonte
chmod + ai, i = herda regras de acl
fonte
Em um Mac, tente usar o PathFinder , facilita a configuração do ACL e do POSIX. Se você estiver hospedando o WordPress em um servidor Mac, também precisará definir
define('FS_METHOD', 'direct');
o arquivo wp-config.php para que a instalação de plugins e a atualização não solicitem detalhes sobre o FTP.Então, basicamente, você mantém as permissões POSIX padrão e adiciona o usuário _www (não grupo) à ACL, depois clique em Propagar permissão na janela ACL.
fonte