Concedendo ao usuário a capacidade de excluir um arquivo sem conceder permissões de gravação ao diretório

3

Atualmente, tenho usuários chroot cujos diretórios pessoais contêm um diretório 'upload' e um diretório 'download'.

Originalmente, as permissões no diretório de upload, onde

chown user:sftpadmin upload
chmod 370 upload

e as permissões no diretório de download, onde

chown user:sftpadmin download
chmod 570 dowload

A finalidade do grupo sftpadmins é que as contas de serviço que são membros desse grupo possam colocar / recuperar arquivos para o usuário dos respectivos diretórios.

Agora, temos uma solicitação para permitir que os usuários excluam arquivos no diretório de download após concluí-los. No entanto, a única opção que posso fazer para conseguir isso é definir as permissões no diretório de download para

chmod 770 download

No entanto, isso permitiria aos usuários do chroot a capacidade de gravar qualquer arquivo nesse diretório, o que eu gostaria de evitar.

Existe alguma combinação de permissões que eu possa definir que permita a eles ler, baixar e excluir os arquivos no diretório, sem permitir que eles gravem arquivos no diretório de download?

Seria algo parecido com:

  • Permitir que o usuário remova (exclua) um arquivo
  • Não permitirá que o usuário altere o arquivo.
  • Não permitirá que o usuário adicione um arquivo ao diretório.
por cy10n 09.05.2017 / 20:30

2 respostas

1

Bem, isso depende:

Não é possível com permissões padrão posix, já que a exclusão de um arquivo precisa da mesma permissão que a adição de: permissão de gravação no diretório que o contém.

Se, no entanto, seu sistema de arquivos suportar listas de controle de acesso do NFSv4 (por exemplo, ZFS), é possível, pois existem entradas de controle distintas "write-data" (- > create files) e delete-child. Você só precisa configurar a entrada "allow delete-child" no diretório para o usuário em particular, mas não a entrada "allow write-data" (ou ao invés disso: set "deny write-data").

Veja link para uma descrição detalhada

    
por 11.05.2017 / 09:26
0

Basicamente, sim, é uma combinação de privilégios que:

  • permitirá remover um arquivo,
  • não permitirá alterar o arquivo.

A remoção e a adição de arquivos são definidas por permissões de diretório, mas os arquivos de modificação são definidos por permissões de arquivo.

Exemplo:

➜ example mkdir -pv sample ➜ example touch sample/file.txt ➜ example chmod 0700 sample; chmod 0400 sample/file.txt ➜ example echo 'sample' > sample/file.txt zsh: permission denied: sample/file.txt ➜ example rm -f sample/file.txt ➜ example

    
por 10.05.2017 / 00:44