Como impedir que o usuário altere arquivos usando a permissão do linux

7

É possível, usando o esquema de permissão do Linux, permitir que os usuários criem arquivos, mas não os editem ou excluam posteriormente? Quer dizer, temos uma pasta de entrega onde os usuários colocam artefatos lá e não queremos que esses artefatos sejam modificados depois de entregues, ou seja, editados ou excluídos.

    
por Gilles 29.06.2011 / 21:42

3 respostas

2

Você não pode fazer isso: se o usuário puder criar arquivos, eles serão de sua propriedade e ele poderá modificá-los e apagá-los.

Eu ia propor um esquema simples para ter um diretório temporário (onde o usuário pode fazer o que ele quer) e um diretório de entrada (não acessível para o usuário), com um pequeno programa privilegiado para mover arquivos do diretório temporário para o diretório de entrada. Mas na verdade é complicado fazer o certo: entre outras coisas, você precisa tomar cuidado para que o programa privilegiado não mova arquivos em outros diretórios (cuidado com as condições de corrida, links simbólicos, ../ ), não sobrescrever arquivos existentes ( rename(3) é atômico, mas pode apagar o destino), não permite que o usuário mantenha um descritor de arquivo aberto e modifique o arquivo depois de movê-lo (então é melhor copiar do que mover). Em vez disso, recomendarei que você use uma solução robusta e existente:

  • Peça ao usuário que envie o arquivo por HTTP.
  • Peça ao usuário para se comprometer com um sistema de controle de versão. Ele também poderá criar novas versões.
por 30.06.2011 / 00:04
1

Is it possible, using linux permission scheme, to allow users create files but not edit or delete them at a later time?

NÃO

Mas você tem outras opções sugeridas por @Fredrik no comentário da sua pergunta. Veja aqui.

    
por 29.06.2011 / 22:50
0

Aqui está uma abordagem que, teoricamente, deveria funcionar. É muito esforço para eu desenvolver até mesmo uma prova de conceito; você pode rejeitá-lo pelo mesmo motivo. E, estritamente falando, isso não está "usando o esquema de permissão do Linux".

  • Obtenha um servidor de arquivos de código aberto.
  • Modifique-o para impor as regras que você deseja (isto é, os usuários podem criar arquivos em diretórios aos quais têm acesso de gravação, e pode gravar em um arquivo imediatamente após criá-lo, mas, depois disso, ninguém além do root pode abrir um arquivo para escrever ou desvinculá-lo).
  • Configure um host do servidor que esteja executando o software do servidor modificado. Teoricamente, pode ser seu anfitrião local; apenas certifique-se de que o diretório do qual ele está trabalhando não seja publicamente acessível.
  • O NFS monta seu /mnt/delivery e informa seus usuários para colocarem seus arquivos lá.
por 18.02.2015 / 21:02