Problema de permissões herdadas simples

1

Isso deve ser simples, mas não estou conseguindo que funcione no teste.

Um aplicativo de torrent que estou usando (baseado em CLI) ainda não tem a capacidade de definir o usuário / grupo / permissões dos arquivos que ele baixa. Também gosta de definir as permissões dos arquivos de uma forma que eles não podem ser modificados muito.

Eu gostaria de usar set-uid e set-group-id para resolver isso.

Dado um caminho de algo como isto: / Volumes / torrents / movies

Eu gostaria que o diretório "movies" permitisse a todos os usuários no sistema acesso total de leitura e gravação. Os arquivos não devem ser executáveis, mas é claro que os diretórios precisarão estar abertos para que eles sejam abertos. Eu confio em todos os usuários deste sistema, embora eu me abstenha de executar bits nos arquivos para evitar erros acidentais.

Qualquer coisa salva / armazenada em "filmes" deve herdar o usuário / grupo / permissões de filmes e chegar a todos os subdiretórios e arquivos. Com isso, eu não deveria ter que me preocupar com a falta de recursos de configuração de permissões do aplicativo. Se filmes são configurados para rw para foo: bar e user the_user vem junto e coloca um arquivo em filmes, eu esperaria que os arquivos se tornassem rw foo: bar.

Obrigado. Eu tentei isso de algumas maneiras diferentes, e estou chegando perto. Eu raramente uso set-uid e set-group-id ou os bits pegajosos.

    
por user17245 05.07.2010 / 01:45

3 respostas

1

O máximo que você pode fazer é tornar o diretório setgid, o que fará com que arquivos e diretórios criados nele adquiram o proprietário do grupo do diretório. No entanto, o bit setgid não será herdado, o que significa que qualquer coisa além da primeira camada não terá a propriedade do grupo aplicada. A única maneira de resolver isso é usar o cron ou o incron para aplicar as alterações de permissões conforme apropriado.

    
por 05.07.2010 / 01:53
1

Suponho que, com base nas suas perguntas anteriores e na pasta "/ Volumes", você mencionou que está usando o Mac OS X.

Recebi uma dica do presente artigo que mostra como criar um AppleScript e anexá-lo como uma ação de pasta que define permissões em todos os arquivos soltos na pasta. Aqui está o script que testei agora:

on adding folder items to this_folder after receiving added_items
    tell application "Finder"
        set fold_name to the name of this_folder
        try
            repeat with i from 1 to number of items in added_items
                set new_item to item i of added_items
                set the item_path to the quoted form of the POSIX path of new_item
                do shell script ("/bin/chmod -R a+rw " & item_path)
            end repeat
        end try
    end tell
end adding folder items to

Digite isto no Editor AppleScript e salve-o em / Library / Scripts / Folder Actions Scripts. Em seguida, clique com o botão direito do mouse na pasta e escolha "Configuração das ações da pasta ..." (ou "Anexar uma ação de pasta" para o Leopard ou anterior). Anexe seu script e teste-o. Solte um item na pasta e ele deverá recursivamente chmod tudo para permitir leitura / gravação para todos.

Isso funciona se você soltar qualquer coisa diretamente na pasta, incluindo outra pasta: todo o conteúdo é recursivamente atualizado. No entanto, se você soltar arquivos em uma subpasta já existente, a ação da pasta não será chamada. Eu não descobri uma maneira de consertar isso.

    
por 05.07.2010 / 04:11
0

A página da Wikipédia vinculada em outra resposta contradiz a resposta em si: o bit set-GID é normalmente herdado. Isso é certamente verdade no Linux e acredito no Solaris. No entanto, isso não parece ser verdade no Mac OS X. O manual page parece falar mais sobre as ACLs do que as permissões normais, então talvez você tenha alguma sorte com as permissões file_inherity e directory_inherit em combinação com as tradicionais.

    
por 07.02.2011 / 09:10