Estou escrevendo esta dica, pois tive este problema e não encontrei nenhum artigo referente a isso, mas com pesquisas em diversos sites referentes à permissão de arquivos, consegui resolver meu problema, minha estrutura era a que vou descrever abaixo.
Tinha um servidor de FTP onde cada um tinha um usuário com permissão total e não tínhamos o usuário "anonymous" liberado. Foi solicitado a mim, criar um local onde existisse um
user que seria liberado para os clientes onde o mesmo poderia ler e postar arquivos, mas não teria permissão de excluir os mesmos, e outro usuário teria que ter acesso completo aos mesmos arquivos.
As etapas
Criar os usuários "cliente" e "adm", alterar dentro do
passwd o local padrão onde o usuário "adm" iria entrar ao logar-se no sistema.
No caso, alterei para a mesma pasta do usuário "cliente":
cliente:x:621:622::/home/cliente:/bin/bash
adm:x:622:623::/home/cliente:/bin/bash
Por padrão, o usuário "adm" não tem acesso a esta Home, por isso teremos que dar essa permissão. No momento da permissão, vamos utilizar o recurso de
stick bit (que é uma permissão onde apenas o dono do arquivo pode apagá-lo, independente das outras permissões).
Com o comando abaixo, daremos permissão total para qualquer usuário, mas apenas o dono do arquivo poderá deletá-lo:
# chmod -R 1777 /home/cliente
Neste caso, quando o usuário cliente postar algo, o dono será ele mesmo, como todos utilizaram o mesmo usuário, agora temos que rodar um script que altere o dono do arquivo.
Logo, sempre após este script ser executado, o dono do arquivo será alterado e o usuário
cliente não poderá mais excluir o mesmo.
No meu caso, coloquei um script dentro de
/etc/cron.hourly, com o seguinte conteúdo:
#!/bin/sh
cd /home/# Entra na pasta /home
chown -R adm cliente# Faz que o usuário adm seja dono de todos os arquivos e pastas dentro do diretório cliente
Logo após, dei permissão para o mesmo ser executado pelo sistema com o comando:
# chmod 777 "arquivo criado"
Resumindo, o script é executado de hora em hora, logo quando o usuário cliente postar um arquivo, ele poderá apagar o mesmo até o fim daquela hora.
Para mim, de hora em hora estava de bom tamanho, mas pode ser colocado conforme a necessidade de cada um.
Espero ter ajudado.