Permissões para novos arquivos no diretório compartilhado

31

Acabamos de receber um novo iMac usando o /Users/Shareddiretório para armazenar ativos de mídia (fotos, áudio, vídeo) que queremos acessíveis a todos os usuários na máquina. Depois de copiar todos os arquivos inicialmente, definimos as permissões desejadas e aplicamos as mesmas permissões a todo o conteúdo do diretório recursivamente. Isso está funcionando bem, exceto quando alguém cria um novo arquivo ou diretório, ele não tem as mesmas permissões e precisamos repetir todo o processo de permissões antes que todos possam acessá-lo.

Existe uma maneira de definir permissões para todos os novos arquivos / diretórios criados dentro desse diretório?

Daniel Standage
fonte
Os Atributos estendidos permitirão que você defina algumas permissões de acesso muito liberais, peça para que se propaguem dentro do diretório e continuem a fazê-lo em novas criações, mas durante toda a minha vida não consigo encontrar instruções. Só posso fazer isso em servidores OSX usando as Ferramentas de administração do servidor, o que suponho que não seja uma opção viável aqui?
Jason SALAZ
Não. Temos apenas acesso aos discos do SO que acompanham o iMac.
Daniel Standage
11
Se você está feliz trabalhando no Terminal, esta pode ser a resposta que você está procurando.
22611 boehj

Respostas:

32

Você não pode fazer isso com as permissões tradicionais do estilo POSIX, mas com entradas de controle de acesso herdáveis. Para permitir acesso de leitura + gravação para todo o grupo "equipe" para tudo em / Usuários / Compartilhado / realmente compartilhado, você usaria:

sudo chmod -R +a "staff allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Users/Shared/reallyshared

A file_inherit,directory_inheritparte significa que essa entrada de controle de acesso será adicionada automaticamente a novos arquivos e pastas criados dentro desta pasta, mas não se aplicará automaticamente a itens que já estão lá (foi por isso que adicionei o -Rsinalizador chmod- que o aplica a tudo o que estiver atualmente dentro a pasta) e não será aplicada a itens criados em outro lugar e depois movida para esta pasta (não sei como contornar isso, desculpe).

Gordon Davisson
fonte
Eu adoraria encontrar uma maneira de ter esse trabalho, mesmo para arquivos que são movidos para um diretório compartilhado. É frustrante ter arquivos em um diretório compartilhado que acabam não sendo totalmente compartilhados.
Radven
Isso ainda não permite que uma pasta seja gravada se as permissões posix não permitirem. Ou seja, eu crio esta pasta no Finder: drwxr-xr-x+ 2 User staff 68 Dec 15 14:10 untitled folderO + no final significa que a ACL estendida foi aplicada usando o comando acima, mas o Windows ainda diz que a permissão foi negada se eu tentar gravar um arquivo nessa pasta. Só chmod g+w untitled\ folderme permite escrever para ele. Pode ser porque eu instalei o Samba para solucionar a horrível nova implementação SMB do OSX.
Chris Dragão
@ ChrisDragon: parece que o samba não respeita adequadamente a ACL. Encontrei uma sugestão aqui para adicionar nt acl support = noà [Global]seção /etc/smb.conf, mas não tenho certeza se isso ainda é relevante nas versões atuais do samba.
Gordon Davisson
4

Outra abordagem é usar o Terminal (também conhecido como shell ou prompt de comando) para criar / editar (deve ser executado como superusuário, consulte sudo) o arquivo:
/etc/launchd-user.conf
adicionando a linha:
umask 000
save and reboot. Novos arquivos / pastas (incluindo arquivos alterados por salvar como) permitirão que todos leiam / gravem.

Isso funciona alterando as permissões de criação de arquivo padrão para programas, enquanto a abordagem da ACL funciona em termos de regras de acesso vinculadas a arquivos e pastas específicos.

Sem esse ajuste, os arquivos são criados, permitindo ao usuário: leitura e gravação, grupo e outros: somente leitura.

Se você estiver compartilhando entre vários computadores, precisará fazer isso em todos os computadores que usarão o compartilhamento.

Se você tiver arquivos e pastas existentes na área compartilhada, precisará torná-los todos legíveis / graváveis ​​por todos usando:
sudo chmod -R og+w <shared-folder-name>

O comando lê em inglês como modo de alteração, recursivo em todas as subpastas e arquivos, outras permissões de & grupo adicionam acesso de gravação, começando na pasta com.

Essa abordagem é mencionada nos fóruns para trabalhar com pelo menos 10.6 e ainda funciona com 10.7.

Outros fatores ainda afetam o acesso ao conteúdo. Por exemplo, as permissões definidas no painel de controle Compartilhamento, as permissões da pasta pessoal / ACLs e, ao usar o Terminal, qualquer umask em vigor para o shell.

Consultar permissões de arquivos umask e Posixpara detalhes sobre esses conceitos Unix. Nas redações, o diretório de palavras é linguagem do Unix, sinônimo de pasta. Você também encontrará os termos UID e GID: IDs de usuário e grupo, que definem a propriedade Posix dos programas em execução (processos). Observe que UIDs e GIDs são números que podem ser iguais ou diferentes para um determinado nome de usuário em computadores diferentes. Esses números são atribuídos a nomes na ordem em que as contas são criadas em um determinado computador, geralmente começando com o ID 501. As redes domésticas não possuem um mecanismo para harmonizar essas atribuições entre computadores. Portanto, em compartilhamentos de rede, um arquivo pode parecer pertencer a usuários diferentes, porque a associação do ID do usuário ao nome do usuário é determinada da perspectiva do computador que está acessando o arquivo. Portanto, os compartilhamentos sempre permitem que todos acessem arquivos em vários graus de todos. Em outras palavras, a permissão "other" do Posix é um limite indefinido de acesso, que varia de permitir um grau de acesso bastante previsível, mas aparentemente incerto, dependendo dos IDs de usuário atribuídos em computadores diferentes. Isso leva a variações aparentemente absurdas nas experiências, nas quais algumas redes, por exemplo, uma configuração com apenas uma conta de usuário criada em cada Mac, poderão compartilhar sem ajustes de permissões, porque todas as contas terão o mesmo UID (501, não seja qual for o nome das contas), enquanto outra rede que usa várias contas de usuário por Mac verá problemas imediatamente. Portanto, alguns grupos nunca lutam com isso, enquanto outros podem ver problemas que se desenvolvem ao longo do tempo ou problemas que aparecem / desaparecem espontaneamente,

É um mistério o motivo pelo qual a Apple deixou um defeito de usabilidade tão apático na configuração de um recurso de compartilhamento de arquivos tão fácil de ativar.

Em discos externos, esse problema é solucionado com a opção "Ignorar permissões neste volume". Pode haver um recurso semelhante ao compartilhamento de arquivos da apple, mas onde está.

Se você administrar sua própria configuração do serviço Samba, existem outros mecanismos para lidar com esses problemas, mas o Samba não é nada fácil de usar.

Fio
fonte
O /etc/launchd-user.conf foi descontinuado em favor do uso launchctl. Veja support.apple.com/pt-PT/HT201684
Jess Bowers,