Como evitar que o proprietário do arquivo altere / exclua seu próprio arquivo? Linux CentOS

1

Esta NÃO é a sua pergunta padrão "como funciona a permissão"!

Estou pensando que a resposta provavelmente envolverá a ACL, mas não sei exatamente como.

Eu mexi com permissões padrão, guid, sticky bit, etc. Não funciona.

O que eu quero: O usuário fará upload de arquivos. O usuário terá a capacidade de alterar as permissões nos arquivos para permitir a execução. Mas o usuário não poderá alterar o conteúdo do arquivo depois de criado. E o usuário não poderá excluir o arquivo.

Por favor me ajude! Eu tenho arrancado meu cabelo por horas!

EDITAR:

Obrigado pelas respostas, mas até agora elas não parecem abordar como esse trabalho funciona automaticamente para arquivos recém-criados.

Possível solução:

find -mtime -1 -exec chattr +i '{}' \+

2ª solução possível:

inotifywait -m -e create --format %f .

Agora eu só preciso descobrir isso para chattr.

    
por Buttle Butkus 15.11.2012 / 07:05

4 respostas

4

Você pode tentar usar o 'chattr'

Exemplo:

[email protected]:~$ sudo chattr +i plik.txt 
[email protected]:~$ rm plik.txt 
rm: remove write-protected regular empty file 'plik.txt'? y
rm: cannot remove 'plik.txt': Operation not permitted
[email protected]:~$ chattr -i plik.txt 
chattr: Operation not permitted while setting flags on plik.txt
    
por 15.11.2012 / 07:33
2

Use atributos

sudo chattr +i /path/to/file

Remover sinalizador "imutável" com

sudo chattr -i /path/to/file

Isso impedirá que você altere a permissão no arquivo. Então, você precisará de alguma forma para (como root) adicionar permissão de execução ou o que for solicitado pelo usuário. Além disso, os atributos não são adicionados por padrão; você tem que colocar algo que faça isso.

Eu vou deixar essa parte como um exercício para o leitor.

    
por 15.11.2012 / 07:14
1

O SELinux pode ser uma maneira de resolvê-lo - associe o tipo único a todos os usuários que tiverem essa "capacidade reduzida". Definir política SELinux para permitir a criação de arquivos neste diretório para os tipos de usuário, mas não a modificação, etc Em teoria - deve funcionar. Veja Tutorial do SELinux do Gentoo , em particular sobre:

allow auditd_t <type>:file { <permission> };

então confira mais sobre as permissões disponíveis

    
por 06.04.2015 / 08:14
1

Use o inotify ou outro mecanismo de observação de sua escolha para localizar e localizar novos arquivos no diretório de upload e movê-los para um novo diretório, para o qual o usuário inicial não possui permissões.

    
por 06.04.2015 / 08:28