5.2.1 Ficheros Ocultos y Vetados.

Existen algunos casos en los que necesitamos asegurarnos de que un usuario no pueda acceder o ver determinados archivos. Otras veces, no queremos que un usuario pueda acceder al archivo -queremos ocultarlo cuando acceda a un directorio-. En sistemas Windows, un atributo de los ficheros permite ocultarlos en un listado de archivos. Con Unix, la manera tradicional de ocultar archivos en un directorio es precederlos de un punto (.). Esto evita que determinados archivos, como los de configuración, sean visibles ante la ejecución de un típico comando ls. Prohibir a un usuario el acceso a un fichero, sin embargo, implica trabajar con permisos sobre ficheros y/o directorios.

La primera opción de Samba que deberíamos discutir es la booleana hide dot files. Esta opción hace exactamente lo que dice. Cuando se establece a yes, la opción trata a los ficheros antecedidos por un punto (.) como ocultos. Si se establece a no, esos ficheros son siempre visualizados. Lo importante a recordar aquí es que los ficheros sólo están ocultos. Si el usuario ha seleccionado mostrar los ficheros ocultos (p.ej., usando la opción de menú Ver Archivos Ocultos en un cliente Windows 98), todavía serán visibles, independientemente del valor de ésta opción, como se ve en la Figura 5.2.

Figure: Archivos ocultos en el recurso [data].

\includegraphics[ width=0.80\textwidth]{img/sam-0502.ps}

En vez de simplemente ocultar los archivos que empiecen por un punto, puedes también especificar especificar un patrón de cadena para que Samba oculte determinados archivos, usando la opción hide files. Por ejemplo, supongamos que hemos especificado lo sigueinte en nuestro recurso de ejemplo [data]:

[data]
  path = /home/samba/data
  browseable = yes
  guest ok = yes
  writeable = yes
  case sensitive = no
  hide files = /*.java/*README*/

Cada entrada para ésta opción debe comenzar, terminar, o estar separada de otra con una barra (/), aunque sólo se liste un patrón. Esta convención permite que los espacios aparezcan en los nombres de archivos. En este ejemplo, el directorio compartido debería aparecer como ves en la Figura 5.3. De nuevo, advierte que hemos seleccionado la opción de ver archivos ocultos en nuestro cliente Windows.

Figure: Archivos ocultos en base a patrones de nombres de archivos.

\includegraphics[ width=0.80\textwidth]{img/sam-0503.ps}

Si queremos evitar que de ningún modo los usuarios puedan ver los archivos, podemos usar en su lugar la opción veto files. Esta opción, que usa la misma sintaxis que la opción hide files, especifica una lista de ficheros que nunca deberían ser vistos por el usuario. Por ejemplo, cambiemos el recurso [data] como sigue:

[data]
  path = /home/samba/data
  browseable = yes
  guest ok = yes
  writeable = yes
  case sensitive = no
  veto files = /*.java/*README*/

La sintaxis de esta opción es idéntica a la opción de configuración hide files: cada entrada debe comenzar, terminar o ser separada de otra entrada por una barra (/), aunque sólo halla un patrón. Haciendo esto, los ficheros hello.java y README simplemente desaparecerán del directorio, y el usuario no podrá acceder a ellos a través de SMB.

Hay otra cuestión que necesitamos controlar. ¿Qué ocurre si el usuario intenta borrar un directorio que contiene archivos vetados? Aquí es donde entra en juego la opción delete veto files. Si esta opción booleana se establece a yes, al usuario se le permitirá eliminar tanto los archivos normales como los que se encuentran vetados en el directorio, y el directorio mismo será eliminado. Si la opción se establece a no, el usuario no podrá eliminar los archivos vetados, y consecuentemente no serán eliminados. Desde la perspectiva del usuario, el usuario parecerá estar vacío, pero el directorio no podrá ser eliminado.

La directiva dont descend especifica una lista de directorios cuyos contenidos Samba no debería permitir que fueran visibles. Advierte que hemos dicho contenidos, no directorio. Los usuarios podrán entrar en el directorio, pero no podrán descender por el árbol del directorio -siempre verán una carpeta vacía-. Por ejemplo, usemos esta opción con una forma más básica del recurso definido al principio:

[data]
  path = /home/samba/data
  browseable = yes
  guest ok = yes
  writeable = yes
  case sensitive = no
  dont descend = config defaults

En adición, asumamos que el directorio /home/samba/data tiene los siguientes contenidos:

drwxr-xr-x 6 tom users 1024 Jun 13 09:24 .
drwxr-xr-x 8 root root 1024 Jun 10 17:53 ..
-rw-r--r-- 2 tom users 1024 Jun 9 11:43 README
drwxr-xr-x 3 tom users 1024 Jun 13 09:28 config
drwxr-xr-x 3 tom users 1024 Jun 13 09:28 defaults
drwxr-xr-x 3 tom users 1024 Jun 13 09:28 market

Si el usuario entonces conecta al recurso, él o ella deberían ver los directorios mostrados en la Figura 5.4. Sin embargo, los contenidos de los directorios /config y /defaults aparecerían vacíos para el usuario, aunque existieran otras carpetas o archivos en ellos. En adición, los usuarios no podrán escribir datos en la carpeta (lo cual evita la posibilidad de crear un archivo con el mismo nombre que uno ya existente, pero invisible). Si un usuario intentase hacerlo, él o ella recibiría un mensaje de 'Acceso Denegado'. dont descend es una opción administrativa, no de seguridad, y no es sustituta de una buena política de permisos de archivos.

Figure: Contenidos del recurso [data] con 'dont descend'.

\includegraphics[ width=0.80\textwidth]{img/sam-0504.ps}

TLDP-ES 03/11/2002