Servidor Samba: Lixeira

Enviado por Giovanni No dia 20 de abril de 2008 às 7:04 Linux
Enviar por E-Mail Enviar por E-Mail Imprimir Imprimir

Lançamentos Submarino

Motorola i856W Motorokr Branco
Motorola i856W Motorokr Branco
 R$ 749,00 
Veja mais
[ Compare Preços ]
Samsung S5230 Star Rosa GSM TouchScreen Câm3.2MP Fone Rádio FM MP3 1GB
Samsung S5230 Star Rosa GSM TouchScreen Câm3.2MP Fone Rádio FM MP3 1GB
 R$ 599,00 
Veja mais
[ Compare Preços ]
Sony Ericsson W705 Red GSM Wi-Fi 3G Câm 3.2MP MP3 RádioFM Bluetooth
Sony Ericsson W705 Red GSM Wi-Fi 3G Câm 3.2MP MP3 RádioFM Bluetooth
 R$ 849,00 
Veja mais
[ Compare Preços ]

Vitrine Submarino 3.4

Um recurso que muitos administradores de sistemas sonham em implementar em seus servidores, é uma lixeira de rede. O funcionamento básico dela seria armazenar arquivos que usuários apaguem via rede, evitando com isso que o administrador tenha que ficar rodando rollbacks sempre que alguém comete um erro e toca fogo em um arquivo "importante".

Afinal, para todos os usuários, todos os arquivos deletados são "importantes". Ele nunca deleta algo de que não preciso. Incrível.

Mas, para que o administrador possa dormir tranqüilo, há um meio simples de se fazer esta implementação.


Eu subentendo que você já está com o Samba instalado e rodando perfeitamente e que quer habilitar a lixeira nele. Para tal, antes de qualquer coisa, veja se os arquivo "recycle.so" está no diretório /usr/lib/samba/vfs, pois sem este arquivo este tutorial não servirá para nada.

Implementando a lixeira na rede

Crie um diretório que será a lixeira para sua rede Samba:

PERL:
  1. mkdir -p /var/spool/samba/lixeira

O nome do diretório é você que irá definir. Caso você queira que os seus usuários tenham acesso à lixeira (não recomendo por questões de segurança), basta dar permissão global neste diretório e criar links simbólicos diretamente para o diretório escolhido.

Agora que você já criou o local em que será a sua lixeira, está na hora de sujar as mãos com um pouquinho de código.

Edite o arquivo /etc/samba/smb.conf e acrescente as linhas abaixo na sessão [Global] se a lixeira for ser utilizada para todos os volumes compartilhados ou, então, apenas em um dos seus [compartilhamentos]:

PERL:
  1. vfs objects = recycle
  2. recycle:facility = LOCAL1
  3. recycle:priority = NOTICE
  4. recycle:maxsize = 0
  5. recycle:repository = /var/spool/samba/lixeira/%U
  6. recycle:directory_mode = 0777
  7. recycle:subdir_mode = 0777
  8. recycle:keeptree = Yes
  9. recycle:touch = True
  10. recycle:exclude = *.tmp, *.temp, *.log, *.ldb, *.o, *.obj, ~*.*, *.bak
  11. recycle:exclude_dir = tmp, temp, cache
  12. recycle:versions = Yes
  13. recycle:noversions = .doc|.xls|.ppt|*.dcl

Algumas explicações sobre o que foi feito acima:

PERL:
  1. recycle:facility = LOCAL1
  2. recycle:priority = NOTICE

Isso significa que um arquivo de log será usado para registrar a movimentação da sua lixeira.

Esse log gravado por meio do syslogd do seu sistema e você vai ter que configurá-lo manualmente.

Quando tentei fazer isso pela última vez eu não consegui. Os logs não eram criados. Acredito eu que o módulo "recycle", apesar de ter a opção, não gere os logs.

PERL:
  1. recycle:maxsize = 0

Nesta linha de código voce limita o tamanho de cada arquivo que poderá ser armazenado na lixeira. O número zero, como no exemplo, significa que não tem limite.

PERL:
  1. recycle:repository = /var/spool/samba/lixeira/%U

Neste código, você informa ao Samba em qual endereço está a sua lixeira. A tag %U é o nome do seu usuário. Com isso, você garante que todos os arquivos deletados pelo usuário A só estarão acessíveis a ele mesmo.

PERL:
  1. recycle:directory_mode = 0777
  2. recycle:subdir_mode = 0777
  3. recycle:keeptree = Yes
  4. recycle:touch = True

Aqui você determina as permissões dos diretórios. Além disso, aqui você define também se o Samba deverá guardar o nome do diretório de onde o arquivo fora excluído (keeptree) e se a data do arquivo deletado vai ser alterada para a data da exclusão (touch).

PERL:
  1. recycle:exclude = *.tmp, *.temp, *.log, *.ldb, *.o, *.obj, ~*.*, *.bak, *.iso
  2. recycle:exclude_dir = tmp, temp, cache

Aqui é algo que é necessária uma dose de atenção e cautela. Você está definindo aquilo que não será armazenado na lixeira em hipótese alguma. Significa dizer que o que estiver ali nestas regras, será deletado de vez sem passar pela lixeira. Use este recurso com cautela para não ter dores de cabeça no futuro.

PERL:
  1. recycle:versions = Yes
  2. recycle:noversions = .doc|.xls|.ppt

Aqui este código faz o seguinte:

versions: verifica a existência do arquivo na lixeira, e caso exista um arquivo com o mesmo nome, ele cria uma cópia dele e armazena ambos. Assim sucessivamente, enquanto o seu usuário não parar de deletar arquivos de mesmo nome.

noversion: este é exatamente o contrário do anterior. Tudo o que estiver neste parâmetro irá sobrescrever o anterior. Significa dizer que se o usuário excluir mais de um arquivo com o mesmo nome, somente o último estará lá, guardadinho para ele. E baubau para o primeiro.

That's All Folks

Bem, espero que este artigo tenha alguma serventia. Eu senti muita falta de algo assim quando precisei fazer uma implementação desta em um cliente, e não encontrei nada muito simples pela Internet. Este script já tenho aqui guardadinho há algum tempo, e resolvi postá-lo, pois, com certeza, existem outras pessoas com esse mesmo problema, visto que há pouquíssima informação sobre o assunto.

Nota: Não me responsabilizo por nenhuma alteração indevida no seu sistema. Faça-o por sua conta e risco. Faça sempre backups antes de quaisquer alterações.

Popularidade: 11%


Comentários

Deixe o seu comentário







 
       
Copyright 2008 - 2009 © Buteco de Bits
Todos os Direitos Reservados.