Servidor Samba: Lixeira
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:
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]:
vfs objects = recycle
recycle:facility = LOCAL1
recycle:priority = NOTICE
recycle:maxsize = 0
recycle:repository = /var/spool/samba/lixeira/%U
recycle:directory_mode = 0777
recycle:subdir_mode = 0777
recycle:keeptree = Yes
recycle:touch = True
recycle:exclude = *.tmp, *.temp, *.log, *.ldb, *.o, *.obj, ~*.*, *.bak
recycle:exclude_dir = tmp, temp, cache
recycle:versions = Yes
recycle:noversions = .doc|.xls|.ppt|*.dcl
Algumas explicações sobre o que foi feito acima:
recycle:facility = LOCAL1
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.
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.
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.
recycle:directory_mode = 0777
recycle:subdir_mode = 0777
recycle:keeptree = Yes
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).
recycle:exclude = *.tmp, *.temp, *.log, *.ldb, *.o, *.obj, ~*.*, *.bak, *.iso
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.
recycle:versions = Yes
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.







Receba as atualizações por E-Mail.

Palavras-Chave: 









Parabéns pelo simples e direto tutorial sobre a lixeira.
O seu tuto, até agora, é o mais completo que encontrei. Estava procurando há muito tempo algum artigo que me explicasse com algum detalhe cada opção da Lixeira.
Parabéns, sei que já se fazem dois anos que ele fora escrito, mas é ótimo.
Parabéns de novo
[...] http://www.butecodebits.com.br/2008/04/20/servidor-samba-lixeira [...]
[...] Lixeira no Samba; [...]