Permissões de arquivo

3

Alguns anos / versões atrás eu encontrei um script que levou o grupo de diretórios / permissões da pasta atual para sub-pastas de arquivos novos

Atualmente, quando importo Fotografias para 12.04 usando Shotwell, tenho que usar o terminal para emitir: chgrp photography * .JPG. Isso permite que outros membros do ubuntu do grupo 'photography' adicionem esses arquivos à sua versão do Shotwell.

Acho que modificar as Propriedades / Permissões da Pasta NÃO irá definir o Grupo em 'Aplicar Permissões a Arquivos Fechados'

    
por Simon Bateman 26.08.2012 / 13:28

2 respostas

4

Então, se eu entendi corretamente, você quer que os arquivos (fotos) que são colocados em uma pasta específica sejam atribuídos automaticamente a um grupo específico (fotografia).

Uma possível solução é definir a " permissão de setgid " na pasta pai, onde todas as imagens são armazenadas. A permissão setgid (veja, por exemplo, wikipedia ) garante que todos os arquivos e pastas criados em uma pasta com o bit setgid set obter o grupo dessa pasta (em vez do grupo definido pelo criador do arquivo).

Como isso não afeta arquivos e pastas que já foram criados dentro desse diretório, primeiro altere o grupo recursivamente usando

chgrp photography -R <your shotwell photo folder>

Agora defina o bit setgid nessa pasta. Para fazer isso, execute

chmod g+s <your shotwell photo folder>

Após os dois comandos, a pasta de foto shotwell e todo o seu conteúdo pertencem ao grupo "photography" e o setgid está definido:

ls -ld <your shotwell photo folder>
drwxrwsr-x 2 <your user> photography 4096 Aug 27 20:42 <your shotwell photo folder>

Observe os s em drwxrwsr-x . Isso "s" indica que o bit setgid está definido.

Agora, cada vez que as fotos são copiadas para a pasta shotwell, elas são automaticamente atribuídas ao grupo "fotografia".

Cuidado:
Se arquivos e pastas forem movidos para esse diretório (em vez de copiados). Seu grupo não é alterado. Isso é por causa da própria ferramenta. "mv" basicamente apenas renomeia o arquivo, mantendo suas propriedades e permissões originais, enquanto "cp" cria um novo arquivo no diretório de destino.

    
por ceage 27.08.2012 / 21:00
2

A solução setgid bit em resposta ceage funcionará perfeitamente (+1) se você tiver apenas um grupo de pessoas e todos tiverem as mesmas permissões nos arquivos, mas se você precisar de mais controle com muitos grupos, permissões diferentes ou até mesmo um regra do usuário, você pode usar o acl. Você pode dar uma olhada em man setfacl .

Por exemplo, no seu caso, você pode definir um acl para o grupo de fotografia:

setfacl -Rm d:g:photography:rwX,g:photography:rwX /photo_dir

    -R : recursive to all sub-folders and files
    -m: modify using arguments in command line (can be used from config files)
    d:g:photography:rwX: apply default (d:) permissions (rwX:) for photography group (g:group) on new files/directories
    g:photography:rwX: same as above on existent files/directories (no d:)

rwX: capital X defines x only for directories

Você pode verificar as permissões aplicadas com getfacl /photo_dir

Se você precisar de um segundo grupo com permissões somente leitura, por exemplo, defina outra acl e aplique-a da mesma maneira para o novo grupo com rX em vez de rwX . As ACLs podem ser definidas para diretórios inteiros ou arquivos individuais.

Isso será permanente e você não precisará redefinir as permissões quando adicionar excluir ou modificar imagens. Você define as ACLs uma vez e "esquece" sobre isso.

O usuário e o grupo vistos com ls -l não serão mais relevantes / suficientes para controlar o acesso ao arquivo (eles serão transformados em acl quando você executar o setfacl pela primeira vez) e haverá um "+" no final da permissão lista como drwxrws---+ 6 root.... .

    
por laurent 27.08.2012 / 22:47

Tags