Criando usuário com acesso a leitura + postagem e sem direito de deletar arquivos

Publicado por Rodrigo de Lima Américo em 26/07/2012

[ Hits: 5.406 ]

 


Criando usuário com acesso a leitura + postagem e sem direito de deletar arquivos



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.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Montando um host FTP em um diretório local

FTP no NetBeans de uma forma simples

Instalação do Proftpd no CentOS

Check FTP - Escaneie e encontre FTPs acessívels pela rede

Baixando arquivos de FTP recursivamente

  

Comentários
[1] Comentário enviado por hugoeustaquio em 26/07/2012 - 13:08h

Desculpe observar, mas qualquer um pode editar o próprio script executado pelo sistema, já que ele tem a permissão 777.
Sugiro trocar por "chmod +x" até pra dar bom exemplo por aqui :-)

Você testou pra ver o que acontece se a pessoa renomear o arquivo? Se renomear para um diretório oculto (começando com ".")? O que acontece se o criador do arquivo tornar a permissão do mesmo deletável para "outros" já que o mesmo sabe que seu script apenas fará que ele deixe de ser o proprietário?



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts