Linux: Crie arquivos e direcotires, mas não os exclua

2

Eu tenho um processo que cria diretórios e arquivos dentro de um diretório de trabalho, ex:

/workingdir/file1
/workingdir/file2
/workingdir/dir1/file1
/workingdir/dir1/dir2/file1
/workingdir/dir1/file2

Eu preciso evitar apagar / substituir as pastas / arquivos criados para esse usuário, mas permitir a criação de pastas / subpastas / arquivos subseqüentes. Eu tento permissões, gid, acl sem sorte.

Qual é a maneira correta de fazer isso? (eu posso usar um cron job, se necessário)

    
por Peraz 02.10.2012 / 09:40

2 respostas

4

Você deve conseguir algo definindo atributos estendidos com chattr .

Use chattr +a em seus diretórios. Isso permitirá que eles sejam adicionados, mas impedirão que os arquivos sejam removidos.

Use chattr +i para tornar seus arquivos imutáveis - eles não podem ser alterados depois que isso for definido.

A file with the ‘a’ attribute set can only be open in append mode for writing. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.

A file with the ‘i’ attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.

    
por 02.10.2012 / 09:58
2

Isso não é possível com as permissões padrão do arquivo POSIX unix.

O melhor que você pode realizar é um diretório onde os usuários poderão excluir quaisquer arquivos que possuam, mas não os de outros usuários.

chmod 1775 /directory

UPDATE: Você pode ter mais controle sobre o SELinux ou o Apparmor, mas a partir dessa abordagem você tem que dar permissões para processos em arquivos.

UPDATE: Você tem a opção de usar o sinalizador somente de anexação do sistema para arquivos separados. Não em todos os sistemas de arquivos: chattr + um nome de arquivo

    
por 02.10.2012 / 09:51