Cómo configurar Samba con Papelera de Reciclaje.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2007 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

En algunas circunstancias, es necesario añadir una Papelera de Reciclaje (Recycle Bin) para evitar la eliminación permanente del contenido de un directorio compartido a través de Samba. Es particularmente útil para los directorios personales de los usuario.

Este documento considera que usted ya ha leído previamente, a detalle y en su totalidad el manual «Cómo configurar Samba básico». y que ha configurado exitosamente Samba como servidor de archivos.

Procedimientos

La Papelera de Reciclaje se activa añadiendo al recurso a compartir los parámetros vfs objects y recycle:repository del modo ejemplificado a continuación:

[homes]
   comment = Home Directories
   browseable = no
   writable = yes
   vfs objects = recycle
   recycle:repository = Recycle Bin

Lo anterior creara el objeto recycle, que almacenará los contenidos eliminados desde el cliente en un subdirectorio denominado Recycle Bin, el cual es creado si éste no existiera. Si el contenido de Recycle Bin es eliminado, éste se hará de forma permanente.

En el caso de directorios compartidos que sean accedidos por distintos usuarios, el subdirectorio Recycle Bin se crea con permisos de acceso solo para el primer usuario que elimine contenido. Lo correcto es solo utilizarlo en directorios compartidos que solo sean utilizados por un solo usuario. De ser necesario, se puede cambiar el permiso de acceso del subdirectorio Recycle Bin con el mandato chmod de 0700 a 1777 para permitir a otros usuarios utilizar éste, tomando en cuenta que de esta forma el contenido conservará los privilegios de cada usuario y los contenidos solo podrán ser eliminados permanentemente por sus propietarios correspondientes.

Se pueden añadir más opciones para lograr un comportamiento más similar al de una Papelera de Reciclaje normal en Windows. El parámetro recycle:versions define que si hay dos o más archivos con el mismo nombre y estos son enviados a la Papelera de Reciclaje, se mantendrán todos donde los archivo más recientes tendrán un nombre con el esquema «Copy #x of nombre-archivo» (es decir, Copia #x del nombre-archivo). El parámetro recycle:keeptree define que si se elimina un directorio con subdirectorios y contenido, se mantendrá la estructura de éstos.

[homes]
   comment = Home Directories
   browseable = no
   writable = yes
   vfs objects = recycle
   recycle:repository = Recycle Bin
   recycle:versions = Yes
   recycle:keeptree = Yes

Se puede definir además que se excluyan archivos (recycle:exclude) y directorios (recycle:exclude_dir) de ser enviado a la Papelera de Reciclaje cierto tipo de contenido y sea eliminado de forma permanente de inmediato. Las listas para archivos y directorios son separadas por tuberías (|) y aceptan comodines (* y ?). En el siguiente ejemplo se excluyen los archivos con extensiones *.tmp, *.temp, *.o, *.obj, ~$*, *.~??, *.log, *.trace y *.TMP y los directorios /tmp, /temp y /cache.

[homes]
   comment = Home Directories
   browseable = no
   writable = yes
   vfs objects = recycle
   recycle:repository = Recycle Bin
   recycle:versions = Yes
   recycle:keeptree = Yes
   recycle:exclude = *.tmp|*.temp|*.o|*.obj|~$*|*.~??|*.log|*.trace|*.TMP
   recycle:excludedir = /tmp|/temp|/cache

Si no se quiere que se guarden versiones distintas de archivos con el mismo nombre, para algunas extensiones, es posible hacerlo definiendo el parámetro recycle:noversions y una lista de extensiones de archivos separados por tuberías (|). En el siguiente ejemplo, se indica que no se guarden diferentes versiones de archivos con el mismo nombre que tengan las extensiones *.doc, *.ppt, *.dat y *.ini.

[homes]
   comment = Home Directories
   browseable = no
   writable = yes
   vfs objects = recycle
   recycle:repository = Recycle Bin
   recycle:versions = Yes
   recycle:keeptree = Yes
   recycle:exclude = *.tmp|*.temp|*.o|*.obj|~$*|*.~??|*.log|*.trace|*.TMP
   recycle:excludedir = /tmp|/temp|/cache
   recycle:noversions = *.doc|*.ppt|*.dat|*.ini

También es posible definir un mínimo y un máximo de tamaño en bytes a través de los parámetros recycle:minsize, que define un tamaño mínimo y recycle:maxsize, que define un tamaño máximo. Cualquier archivo que esté fuera de estos límites establecidos, será eliminado permanentemente de forma inmediata. En el siguiente ejemplo se define que solo podrán ser enviados a la Papelera de Reciclaje los archivos que tengan un tamaño mínimo de 10 bytes y un tamaño máximo de 5120 bytes (5 MB)

[homes]
   comment = Home Directories
   browseable = no
   writable = yes
   hide dot files = Yes
   vfs objects = recycle
   recycle:repository = Recycle Bin
   recycle:versions = Yes
   recycle:keeptree = Yes
   recycle:exclude = *.tmp|*.temp|*.o|*.obj|~$*|*.~??|*.log|*.trace|*.TMP
   recycle:excludedir = /tmp|/temp|/cache
   recycle:noversions = *.doc|*.ppt|*.dat|*.ini
   recycle:minsize = 10
   recycle:maxsize = 5120

Aplicando los cambios.

Para hacer que los cambios hechos surtan efecto tras modificar la configuración, utilice:

service smb restart

Comprobaciones.

Con la finalizad de realizar pruebas, genere con el mandato echo del sistema un archivo denominado prueba.txt:

echo "archivo de pruebas" > prueba.txt

Si aún no existiera, genere al usuario fulano:

useradd fulano

Utilice el mandato smbpasswd y asigne 123qwe como clave de acceso al usuario fulano:

smbpasswd -a fulano

Acceda con smbclient hacia el servidor Samba con el usuario fulano:

smbclient //127.0.0.1/fulano -Ufulano%123qwe

Lo anterior debe devolver una salida similar a la siguiente:

Domain=[M064] OS=[Unix] Server=[Samba 3.2.0rc1-14.9.el5.al]
smb: > 

Utilizando el mandato put del intérprete SMB, suba el archivo prueba.txt al directorio personal de fulano:

smb: > put prueba.txt

Lo anterior debe devolver una salida similar a la siguiente:

smb: > put prueba.txt
putting file prueba.txt as prueba.txt (0,4 kb/s) (average 0,4 kb/s)
smb: > 

Visualice el contenido del directorio actual desde el intérprete SMB utilizando el mandato dirpara verificar que se ha subido el archivo prueba.txt:

smb: > dir

Lo anterior debe devolver una salida similar a la siguiente:

smb: > dir
  .                                   D        0  Wed Jun 18 20:44:39 2008
  ..                                  D        0  Wed Jun 18 20:04:14 2008
  .bashrc                             H      124  Wed Jun 18 20:04:14 2008
  .bash_profile                       H      176  Wed Jun 18 20:04:14 2008
  .bash_logout                        H       24  Wed Jun 18 20:04:14 2008
  prueba.txt                          A       19  Wed Jun 18 20:44:39 2008

		34173 blocks of size 524288. 12143 blocks available
smb: > 

Elimine el archivo prueba.txt utilizando el mandato del desde el intérprete SMB:

smb: > del prueba.txt
smb: > 

Visualice de nuevo el contenido del directorio con el mandato dir, lo cual debe devolver una salida similar a la siguiente donde ha desaparecido el archivo prueba.txt y ahora aparece el directorio Recycle Bin:

smb: > dir
  .                                   D        0  Wed Jun 18 20:52:49 2008
  ..                                  D        0  Wed Jun 18 20:04:14 2008
  .bashrc                             H      124  Wed Jun 18 20:04:14 2008
  .bash_profile                       H      176  Wed Jun 18 20:04:14 2008
  .bash_logout                        H       24  Wed Jun 18 20:04:14 2008
  .zshrc                              H      658  Wed Jun 18 20:04:14 2008
  .kde                               DH        0  Wed Jun 18 20:04:14 2008
  .emacs                              H      515  Wed Jun 18 20:04:14 2008
  Recycle Bin                         D        0  Wed Jun 18 20:52:49 2008

		34173 blocks of size 524288. 12143 blocks available
smb: > 

Acceda al directorio Recycle Bin utilizando el mandato cd:

smb: > smb: > cd "Recycle Bin"

Visualice el contenido con el mandato dir, lo cual debe devolver una salida similar a la siguiente donde se muestra que el archivo prueba.txt, que fue eliminado con el mandato del, ahora está dentro del directorio Recycle Bin.

smb: Recycle Bin> dir
  .                                   D        0  Wed Jun 18 20:52:49 2008
  ..                                  D        0  Wed Jun 18 20:52:49 2008
  prueba.txt                          A       19  Wed Jun 18 20:44:39 2008

		34173 blocks of size 524288. 12141 blocks available

Para salir del intérprete SMB utilice el mandato exit:

smb: Recycle Bin> exit