Não existe tal flag com o Linux chattr
. Você pode tornar o arquivo imutável ou somente anexado (em qualquer um dos casos, as permissões e a propriedade do arquivo serão bloqueadas) ou permitir que o proprietário do arquivo e o root alterem as permissões. (O atributo imutável em um diretório impede a criação ou a remoção de arquivos, mas não a alteração dos metadados das entradas.)
Se a alteração da propriedade do arquivo for aceitável, faça-o e use listas de controle de acesso (ou propriedade de grupo) para fornecer a quem precisa dele acesso de leitura e gravação ao arquivo. Se esta é uma questão social em que suas raízes não podem ser confiáveis, não acho que você encontrará um problema técnico satisfatório.
Não é permitido ao proprietário de um arquivo alterar as permissões na categoria de controle de acesso obrigatório , que não é algo unix tradicionalmente suporta. Existem vários frameworks MAC no Linux, e os dois principais são SELinux e AppArmor ; Eu não sei se eles permitem o que você está tentando fazer.
Se este for um problema geral, você pode procurar usar um banco de dados para armazenamento. Normalmente, você pode conceder permissão a alguém para ler e gravar em uma tabela sem permitir que ela controle as permissões.
Um passo menos drástico do que mudar para um banco de dados seria mover os arquivos para um sistema de arquivos diferente (isso pode ou não ser viável em sua configuração). Você poderia então usar links simbólicos no lugar onde os arquivos devem existir, e esperar que os trocadores de permissão não sejam sofisticados o suficiente para procurar no lugar onde estão os arquivos reais (talvez isso poderia ser feito somente para leitura?).
Um sistema de arquivos FUSE que espelha o conteúdo do arquivo, mas altera os metadados, é outra possibilidade. Uma existente é bindfs , que pode reescrever permissões ( -o perms=…
) e pode ignorar chmods ( -o chmod-ignore
).