Como alterar recursivamente o compartilhamento / permissão de uma pasta no Mac OS X

54

Existe alguma ferramenta ou script do Mac OS X que permita alterar recursivamente as propriedades de compartilhamento / permissão de arquivos e subpastas em uma pasta? Por exemplo, para permitir que todos ou um usuário específico possam ler e escrever, somente leitura ou somente gravação.

puri
fonte

Respostas:

74

Experimente o comando chmod. Por exemplo, se você tiver um nome de diretório mydir, o comando a seguir ativará a leitura / gravação desse mydir recursivamente.

$ chmod -R +rw mydir

Para maiores informações:

$ man chmod
Hai Vu
fonte
18
Boa resposta, mau exemplo. Ao adicionar acesso de leitura e / ou gravação a pastas, você também precisa adicionar acesso de execução ("x", também conhecido como pesquisa), ou então o r / w é meio inútil. Por outro lado, geralmente você não deseja adicionar execução aos arquivos. Ao fazer uma alteração recursiva, você está operando em uma mistura de arquivos e pastas. A resposta é usar o recurso "execução inteligente" do chmod (capital X): chmod -R +rwX mydiradicionará execução somente quando fizer sentido.
9789 Gordon Davisson
Gordon: Ótima observação. No entanto, um diretório normalmente tem o x ativado, a menos que o usuário faça algo interessante para desativá-lo.
Hai Vu
11
Depende das permissões iniciais. Se você der uma olhada em uma pasta inicial do Mac com configuração padrão, por exemplo, verá na maioria das pastas (área de trabalho, documentos, biblioteca, etc) que o proprietário tem acesso total (rwx) a tudo, exceto ao grupo e outros não tem acesso (não lê, grava ou executa). Se você estiver adicionando leitura ou gravação para grupo ou outras pessoas a uma dessas pastas, também será necessário adicionar execute.
9789 Gordon Davisson
11
Não funciona para mim, apenas se aplica à pasta principal, não às subpastas.
Delphirules
29

Selecione a pasta raiz com a qual você gostaria de trabalhar e abra o Inspetor (CMD-i ou clique com o botão direito e "Mostrar informações"). O painel inferior é onde você pode gerenciar permissões.

Adicione e remova permissões para a lista lá. Para aplicar as mesmas permissões recursivamente a todas as subpastas, clique na engrenagem e selecione "Aplicar a itens fechados ..."

Nota: Notei que "Aplicar a itens fechados ..." fica acinzentado quando o pequeno ícone de cadeado na parte inferior direita da janela está bloqueado. Se for esse o caso, basta clicar no cadeado para desbloqueá-lo, inserindo suas credenciais e tente novamente com "Aplicar a itens fechados ..."

gregsabo
fonte
Embora geralmente seja útil, ele não realiza o que é solicitado. Ele substitui as permissões nos subdiretórios, em vez de, por exemplo, adicionar um usuário a todos eles, independentemente das permissões anteriores.
Daniel Beck
@DanielBeck você está errado, aplica-se todos os elementos de permissões, chmod e chown esta é a maneira correta 'mac' para fazê-lo
Rob
Eu apenas tentei esta resposta (em uma pasta de teste) e ela não funcionou corretamente: como uma pasta normalmente é 'executável', esse bit também foi definido em todos os arquivos fechados, o que está errado. Eu só queria mudar de usuário e grupo.
flow
12

Você deseja usar os comandos chmode chown.

Se bem me lembro, você pode alterar as permissões assim:

chmod -R +a "joshhunt allow read" /some/file/or/folder/
chmod -R +a "Guest deny read" /some/other/folder/
chmod -R +a "Guest deny write" /some/other/folder/

Para mais detalhes sobre esses comandos, consulte suas respectivas páginas de manual no Terminal:

man chmod
man chown
Josh Hunt
fonte
11
Melhor maneira para ao tentar especificar permissões de um usuário específico
megalucio