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.408 ]

 


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

Como enviar arquivos para FTP

Servidor FTP ativo no CentOS com o vsftpd

Impedindo um usuário de apagar arquivos, apesar de poder gravá-los

Instalando e usando o lftp

Instalar OpenSSH no Debian Squeeze

  

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