É possível, usando o esquema de permissão linux, permitir aos usuários criar arquivos, mas não editá-los ou excluí-los posteriormente? Quero dizer, temos uma pasta de entrega onde os usuários colocam artefatos lá e não queremos que esses artefatos sejam modificados após a entrega, ou seja, editados ou excluídos.
linux
permissions
synchronization
Gilles 'SO- parar de ser mau'
fonte
fonte
Respostas:
Você não pode fazer isso: se o usuário puder criar arquivos, eles pertencerão a ele e ele poderá modificá-los e apagá-los.
Eu propunha um esquema simples para ter um diretório intermediário (onde o usuário pode fazer o que ele deseja) e um diretório recebido (não acessível ao usuário), com um pequeno programa privilegiado para mover arquivos do diretório intermediário para o recebido diretório. Mas é realmente complicado fazer o certo: entre outras coisas, você precisa cuidar 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 substituirá os arquivos existentes (rename(3)
é atômico, mas pode apagar o destino), não permitirá que o usuário mantenha um descritor de arquivo aberto e modifique o arquivo depois de movido (é melhor copiar do que mover). Em vez disso, vou recomendar uma solução robusta e existente:fonte
NÃO
Mas você tem outras opções sugeridas por @Fredrik no comentário à sua pergunta. Veja aqui.
fonte
Aqui está uma abordagem que deve, teoricamente, funcionar. É muito esforço desenvolver 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".
/mnt/delivery
e diz aos usuários para colocar seus arquivos lá.fonte
A resposta simples é executar um script em um determinado intervalo que você escolher (digamos a cada 15 minutos) que atribui novamente a propriedade de todos os arquivos no diretório "upload" a um usuário "admin" predeterminado e defina as permissões para "644". Isso permitirá que todos os usuários tenham acesso somente leitura a todos os arquivos no diretório de upload, incluindo aqueles que eles mesmos carregaram. Obviamente, você pode otimizar o script após a primeira execução para pesquisar apenas esses arquivos com datas criadas após a execução anterior do script (digamos nos últimos 17 minutos).
fonte