Como alterar a propriedade dos arquivos quando colocados em pastas

0

Eu preciso de ajuda para configurar permissões de pasta padrão em um volume de 100 TB que tenha mais de 900 diretórios de usuário. Cada usuário tem um limite de cota fixa de 25 GB.

Todas as permissões dir de usuário são definidas como 755, portanto, cada usuário pode "ver" o espaço nomeado de cada usuário. Em seguida, configuramos um trio padrão de dirs no espaço de cada usuário. Os dirs padrão são nomeados e seus perms definidos da seguinte maneira:

% stat -c '%A %a %n' *
drws-wx-wx 4733 dropbox
drwx------ 700  private
drwxr-xr-x 755  public 

/private is set to 700, for user access only. Each user can store data that is for their eyes only in this dir;

/public is set to 755, so data can be shared with other users. The user can place files in the public dir so that other users can get to it and and make copies for their own use, but other users cannot write there; and

/dropbox is set to 4733, so it is set up to allow other users to drop files into it. The group sticky bit is turned on, so any file dropped into it will assume the GID of the dropbox folder.

Essas pastas funcionam muito bem, configuradas do jeito que estão, exceto por um problema que não consigo resolver. Pelo que li até agora, o que eu preciso fazer não parece possível, o que parece uma loucura para mim (eu REALMENTE preciso disso, e não posso ser o único que precisa dessa capacidade!).

ESTÁ A NECESSIDADE ========

Eu preciso configurar os perms de pasta padrão / de caixa de depósito para cada usuário, para que qualquer arquivo seja inserido na caixa de depósito de um usuário CHANGES OWNERSHIP para o usuário que possui a caixa de depósito.

=======================

Nas capacidades atuais do sistema, quando um arquivo é deixado no diretório / dropbox de outro usuário, a propriedade permanece com o usuário original. E como os bits de leitura ge estão desligados, o usuário original não tem mais acesso ao arquivo eliminado, uma vez que os perms de cada / caixa de depósito estão configurados para 733 (somente acesso de gravação para o grupo e outros). Como o arquivo permanece de propriedade do usuário originário, ele ainda é contado na cota desse usuário, mesmo que o arquivo não esteja mais na posse do usuário. As pessoas não podem "limpar" seus próprios 25 GB de espaço se os dados estiverem espalhados nas caixas de depósito de outros usuários.

Isso é MUITO ruim para nós devido à forma como a cota é gerenciada: apesar de darmos a cada usuário um "espaço" de 25 GB, o que realmente estamos fazendo é fornecer 25 GB de "dados" para cada usuário, independentemente de onde ele esteja. Isso significa que os dados pertencentes a um único usuário podem existir em todo o mapa, em vários diretórios / dropbox diferentes, tornando quase impossível para o próprio usuário gerenciar sua cota. Isso também dificulta a administração, porque é difícil encontrar todos os dados pertencentes a um único usuário em um volume deste tamanho.

Como um aparte interessante, os diretórios / public fazem exatamente o que eu preciso que aconteça com os diretórios / dropox, mas ao contrário: se um usuário entrar em um diretório / usuário público diferente, e pegar um arquivo e copiá-lo para sua própria pasta nomeada (ou em qualquer outro lugar, para esse assunto), a propriedade do arquivo é alterada para o ID do usuário que está fazendo a cópia, portanto é contado contra a cota desse novo usuário em vez do usuário original. Isso é perfeito.

Além disso, defini og sticky bit no diretório / dropbox, de modo que, quando algum arquivo é inserido nele, o GID do arquivo que está sendo removido é alterado para o GID da própria caixa de depósito. Isso é útil caso o usuário de destino não esteja no grupo exibido no arquivo. O grupo é alterado e o usuário receptor tem acesso ao arquivo.

Esse tipo de mudança que pode ser feito tão facilmente para alterar o GID em arquivos descartados é EXATAMENTE o que eu preciso que aconteça com a propriedade dos arquivos sendo movidos. Ligar o bit pegajoso para o usuário na pasta não funciona como ligar o bit pegajoso para o grupo - pelo que tenho visto, nenhuma alteração é efetuada em arquivos soltos em pastas / dropbox que têm o bit pegajoso do usuário ligado. / p>

Ambiente: Mac e Linux utilizando servidores de arquivos NFS. Os usuários usam tanto a GUI quanto a linha de comando para mover dados.

Muito obrigado por qualquer ajuda ou orientação.

    
por shudder 22.01.2016 / 22:22

1 resposta

0

Isso principalmente não pode ser feito, exceto em alguns sistemas baseados em BSD.

O setgid que você já está usando define o grupo de quaisquer arquivos ou diretórios recém-criados para o mesmo grupo que possui o diretório, mas setuid é ignorado nos diretórios e tem um significado diferente nos arquivos.

Do artigo da setterpid da wikipedia:

The setuid permission set on a directory is ignored on UNIX and Linux systems. FreeBSD can be configured to interpret it analogously to setgid, namely, to force all files and sub-directories to be owned by the top directory owner.

On systems derived from BSD, directories behave as if their setgid bit was always set, regardless of its actual value. As is stated in open(2), "When a new file is created it is given the group of the directory which contains it."

    
por 22.01.2016 / 22:42