Servidor Samba: Lixeira
Lançamentos Submarino
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.
Popularidade: 11%
Comentários
Deixe o seu comentário















Receba as atualizações por E-Mail.
Palavras-Chave:
