Você pode usar bindfs
como:
$ ls -ld dir
drwxr-xr-t 2 stephane stephane 4096 Aug 12 12:28 dir/
Esse diretório é de propriedade de stephane, com group stephane (stephane sendo seu único membro). Observe também o t
que impede os usuários de renomear ou remover entradas que não são de sua propriedade.
$ sudo bindfs -u root -p u=rwD,g=r,dg=rwx,o=rD dir dir
Nós bindfs
dir
com propriedade e permissões fixas para arquivos e diretórios. Todos os arquivos aparecem pertencentes a root
(embora, abaixo, no diretório real, eles ainda sejam de propriedade de stephane).
Os diretórios recebem drwxrwxr-x root stephane
de permissões, enquanto outros tipos de arquivos recebem -rw-r--r-- root stephane
.
$ ls -ld dir
drwxrwxr-t 2 root stephane 4096 Aug 12 12:28 dir
Agora, a criação de um arquivo funciona porque o diretório é gravável:
$ echo test > dir/file
$ ls -ld dir/file
-rw-r--r-- 1 root stephane 5 Aug 12 12:29 dir/file
No entanto, não é possível fazer um segundo write open()
nesse arquivo, pois não temos permissão nele:
$ echo test > dir/file
zsh: permission denied: dir/file
(observe que o acréscimo não é permitido lá (como não faz parte dos seus requisitos iniciais)).
Uma limitação: embora não seja possível remover ou renomear as entradas em dir
devido ao t
bit, os novos diretórios que você criar lá não terão esse t
, então você poderá para renomear ou excluir entradas lá.