Inicio / Wikis / Tutoriales / Usando Samba - Scripts de Entrada

Usando Samba - Scripts de Entrada

(11 opiniones)
Tutorial creado por Robert Eckstein, David Collier-Brown, Peter Kelly. Extraido de: http://es.tldp.org/Manuales-LuCAS/USANDO-SAMBA/usando-samba-html/node1.html
20 de Febrero de 2006
Unix

42 - Scripts de Entrada

Samba soporta la ejecución de scripts de entrada, que son scripts (.BAT o .CMD) que se ejecutan en el cliente cuando un usuario se conecta a un dominio Windows NT. Fíjate en que estos scripts se almacenan en el equipo Unix, pero son transportados a través de la red hasta el cliente y ejecutados una vez que el usuario se conecta. Tienen un valor incalculable como herramientas para configurar opciones de red para los usuarios cuando se conectan. El problema es que, como funcionan en Windows, deben usar los comandos de configuración de red de Windows.

AVISO: Si deseas mas información sobre los comandos NET, te recomendamos el libro de Eric Pearce's 'Windows NT in a NutShell', publicado por O'Reilly.
Puedes indicar a Samba que utilice un script de entrada con la opción logon script, por ejemplo:

[global]
   domain logons = yes
   security = user
   workgroup = SIMPLE
   os level = 34
   local master = yes
   preferred master = yes
   domain master = yes
   logon script = %U.bat
 
 [netlogon]
   comment = The domain logon service
   path = /export/samba/logon
   public = no
   writeable = no
   browsable = no
 

Fíjate en que en este ejemplo se usa la variable %U, que va a individualizar el script basándose en el usuario que se está conectando. Es una práctica común personalizar los scripts basándose en el nombre de usuario o del equipo que se está conectando. Estos scripts pueden usarse para configurar parámetros individuales para los usuarios o para los equipos cliente.

Cada script de entrada ha de ser grabado en la raíz del recurso [netlogon]. Por ejemplo, si la raíz del recurso [netlogon] es /export/samba/logon y el script de entrada es jeff.bat, el fichero debe estar grabado en /export/samba/logon/jeff.bat. Cuando un usuario se conecte a un dominio que contenga scripts de entrada, verá una pequeña ventana de dialogo que le informa de que el script se está ejecutando, y también verá en una ventana tipo DOS todas las salidas que genere ese script.

Un aviso: Debido a que estos scripts son cargados por Windows y ejecutados en el lado del cliente Windows, su formato ha de corresponder con caracteres de retorno de carro y nueva línea de DOS y no con los caracteres estándar de retorno de carro de Unix. Es mejor utilizar un editor basado en DOS o Windows para escribirlos.

El siguiente es un ejemplo de un script que establece la hora del equipo cliente para que coincida con la hora del servidor Samba y crea dos unidades de red h e i, que apuntan a distintos recursos compartidos en el servidor:

# Reset the current time to that shown by the server.
 # We must have the "time server = yes" option in the
 # smb.conf for this to work.
   echo Setting Current Time...
   net time \\hydra /set /yes
 
 # Here we map network drives to shares on the Samba
 # server echo Mapping Network Drives to Samba Server Hydra...
   net use h: \\hydra\data
   net use i: \\hydra\network
 

Perfiles Itinerantes

En Windows 95 y NT cada usuario puede tener su propio perfil. Un perfil reúne información como: la apariencia del escritorio, las aplicaciones que aparecen en los menús de Inicio, el fondo, y otros elementos similares. Si este perfil se almacena en un disco local, se llama perfil local, porque describe el entorno del usuario en una sólo equipo. Por otro lado, si se almacena en un servidor, el usuario puede descargarlo a cualquier equipo cliente que se conecte a ese servidor. Este último recibe el nombre de perfil itinerante porque el usuario puede ir cambiando de equipo en equipo y seguir usando el mismo perfil. Estos perfiles son muy interesantes cuando un usuario puede estarse conectando desde su despacho un día y desde un portátil al día siguiente. La figura 6-6 ilustra la diferencia entre los perfiles locales e itinerantes.

Figure: Perfiles locales frente a Perfiles Itinerantes.

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

Samba proporciona perfiles itinerantes si está configurado para accesos por dominio y le proporcionas una serie de directorios establecidos por la opción logon path. Esta opción se utiliza normalmente combinada con alguna de las variables de usuario, por ejemplo:

[global]
   domain logons = yes
   security = user
   workgroup = SIMPLE
   os level = 34
   local master = yes
   preferred master = yes
   domain master = yes
   logon path = \\hydra\profile\%U
 

Necesitamos crear un nuevo recurso para poder utilizar estos perfiles, que será un recurso de disco compartido básico accesible sólo por el usuario del proceso Samba (root). Este recurso ha de ser de escritura, pero no explorable. Además, debemos crear un directorio para cada usuario que desee conectarse (basándonos en lo que hemos establecido en la opción logon path del ejemplo anterior), que será accesible sólo por ese usuario. Para aumentar más la seguridad, usaremos las opciones directory mode y create mode para impedir a cualquiera que se conecte el ver o alterar los ficheros creados en esos directorios.

[profile]
   comment = User profiles
   path = /export/samba/profile
   create mode = 0600
   directory mode = 0700
   writable = yes
   browsable = no
 

Cuando un usuario se conecta, el cliente Windows va a crear un fichero user.dat o ntuser.dat (dependiendo del sistema operativo del cliente). Entonces el cliente envía en carpetas individuales el contenido del escritorio, el Menú Inicio, El Entorno de Red, y las carpetas de programa. Las siguientes veces que el usuario se conecte estas carpetas se descargarán del servidor y se activarán en el cliente con el que ese usuario se está conectando. Cuando se desconecte, estas carpetas se enviarán de nuevo al servidor hasta la próxima vez que el usuario se conecte. Si miras el directorio de una carpeta de perfil, verás lo siguiente:

# ls -al total 321 drwxrwxr-x 9 root simple Jul 21 20:44 .
 drwxrwxr-x 4 root simple Jul 22 14:32 ..
 drwxrwx--- 3 fred develope Jul 12 07:15 Application Data
 drwxrwx--- 3 fred develope Jul 12 07:15 Start Menú
 drwxrwx--- 2 fred develope Jul 12 07:15 cookies
 drwxrwx--- 2 fred develope Jul 12 07:15 desktop
 drwxrwx--- 7 fred develope Jul 12 07:15 history
 drwxrwx--- 2 fred develope Jul 12 07:15 nethood
 drwxrwx--- 2 fred develope Jul 19 21:05 recent
 -rw------- 1 fred develope Jul 21 21:59 user.dat
 

Los ficheros user.dat son ficheros binarios de configuración, creados automáticamente por Windows. Pueden ser editados con el Editor de Perfiles en un cliente Windows, pero puede ser complicado. Samba los soporta correctamente para todos los clientes incluido NT 5.0 beta, pero aún son relativamente nuevos.

AVISO: Pistas y Cómos para manejar los scripts de entrada están disponibles con la configuración de Samba, en docs/textdocs/DOMAIN.txt y docs/textdocs/PROFILES.txt.

Perfiles Obligatorios

Los usuarios también pueden tener perfiles obligatorios que son aquellos perfiles itinerantes que no pueden cambiar. Por ejemplo, con un perfil obligatorio, si el usuario añade una orden al Menú de Inicio el Martes, desaparecerá cuando se vuelva a conectar el Miércoles. El perfil obligatorio simplemente es un fichero user.dat que se ha renombrado a user.man y hecho de solo-lectura dentro del servidor Unix. Normalmente contiene instrucciones que el administrador quiere que se ejecuten obligatoriamente. Por ejemplo, si el administrador quiere crear una configuración de usuario fija puede hacer lo siguiente:

  • Crear un directorio de solo lectura dentro del servidor Samba.
  • Establecer la opción logon path en el fichero smb.conf para que apunte a ese directorio.
  • Conectarse como el usuario desde un cliente Windows 95/98 para que el cliente rellene el directorio.
  • Renombrar el fichero user.dat resultante a user.man.
  • Hacer el directorio y sus contenidos de solo lectura.

Estos perfiles no se usan con frecuencia. Por otro lado, los perfiles itinerantes son una de las prestaciones de Windows más deseables de cara a que Samba la soporte.

Opciones de los scripts de entrada

La tabla 6-10 resume las opciones más usadas con relación a los scripts de entrada para Windows:


Table: Opciones en los scripts de entrada.
Opción Parámetros Función Defecto Ámbito
logon script Cadena (Ruta DOS) Nombre del fichero ejecutable DOS/NT Ninguno Global
logon path Cadena (Servidor UNC y ruta) Situacion del perfil itinerante del usuario \\%N\%U\perfil Global
logon drive Cadena (Letra de unidad) Especifica la unidad de entrada para un directorio personal (Solo NT) Z: Global
logon home Cadena (Servidor UNC y ruta) Especifica la situacion de los directorios personales para los usuarios que se conecten al dominio \\%N\%U Global

logon script

Esta opción especifica un fichero Windows .BAT o .CMD con las líneas finalizadas por caracteres de retorno de carro/nueva línea que se ejecutara en el cliente una vez que el usuario se haya conectado al dominio. Cada script de entrada debe ser grabado en la raíz de un recurso de disco llamado [netlogon] (consulta la sección llamada Configurando Samba para Accesos por Dominios Windows). Esta opción a menudo usa las variables %U o %m (nombre de usuario o NetBIOS) para apuntar a un script individual. Por ejemplo:

logon script = %U.bat
 

ejecutará un script basado en el nombre del usuario y que está almacenado en la raíz del recurso [netlogon]. Si el usuario que se conecta es fred y la ruta del recurso [netlogon] apunta al directorio /export/samba/netlogon, el script deberá ser /export/samba/netlogon/fred.bat. Debido a que estos scripts son cargados por Windows y ejecutados en el lado del cliente Windows, su formato ha de corresponder con caracteres de retorno de carro y nueva línea de DOS y no con los caracteres estándar de retorno de carro de Unix.

logon path

Esta opción proporciona la situación de los perfiles itinerantes. Cuando el usuario se conecta, un perfil itinerante se descargará del servidor al cliente y se activará cuando el usuario se conecte. Cuando se desconecte, estos elementos se enviarán de nuevo al servidor hasta la próxima vez que el usuario se conecte.

Es mucho más seguro crear un recurso separado para almacenar los perfiles de usuario:

logon path = \\hydra\profile\%U
 

Para mas información, consulta la sección Scripts de Entrada en este mismo capitulo.

logon drive

Esta opción establece la letra de unidad en un cliente NT que se asignara al directorio de usuario que se establece en la opción logon home. Fíjate en que esta opción sólo funcionará con clientes Windows NT. Por ejemplo:

logon home = I:
 

Siempre deberás usar letras de unidad que no interfieran con unidades de disco fijo presentes en el equipo cliente. El valor por defecto es Z: , que es una buena elección porque se encuentra lo mas alejada posible de A:, C: y D:

logon home

Esta opción establece la ubicación del directorio personal de un usuario que utilizará el comando DOS NET. Por ejemplo, si quieres establecer el directorio personal como un recurso en el servidor Samba, usaras:

logon home = \\hydra\%U
 

Fíjate en que esto funciona bien con el servicio [homes], así que puedes establecer cualquier directorio que desees. Los directorios personales pueden ser mapeados a una unidad con un script de entrada usando el siguiente comando:

NET USE I: /HOME
 

Además, puedes usar, dentro del Administrador de usuarios de NT, la opción Perfiles de Usuario que está dentro de las propiedades del usuario para comprobar que el directorio personal se ha establecido automáticamente.

Otros scripts de conexión

Desde que un usuario se conecta con éxito a un recurso Samba, puedes querer que el servidor Samba ejecute un programa para preparar el recurso para su uso. Samba permite scripts que se ejecutaran antes y después de que alguien se conecte al recurso. No necesitas usar dominios Windows para utilizar esta opción. La Tabla 6-11 te presenta alguna de las opciones de configuración proporcionadas para configurar usuarios.


Table: Opciones de configuración de usuarios.
Opción Parámetros Función Valor Defecto Ámbito
root preexec Cadena (Comando Unix) Establece una orden a ejecutar, como root, antes de la conexion al recurso Ninguno Recurso
preexec (exec) Cadena (Comando Unix) Establece una orden a ejecutar, como usuario, antes de la conexion al recurso Ninguno Recurso
postexec Cadena (Comando Unix) Establece una orden a ejecutar, como usuario, despues de la desconexion al recurso Ninguno Recurso
root postexec Cadena (Comando Unix) Establece una orden a ejecutar, como root, despues de la desconexion al recurso Ninguno Recurso

root preexec

Esta opción establece un comando Unix que se ejecutará como el usuario root antes de que se complete cualquier conexión al recurso. Has de usar esta opción específicamente para realizar acciones que requieran privilegios de root. Por ejemplo, root preexec puede ser utilizada para montar CD-ROMs para un recurso que lo hagan disponible para los clientes, o para crear directorios. Si no se establece la opción root preexec no hay acción por defecto. Vamos a ver un ejemplo de cómo puedes usar el comando para montar un CD-ROM.

[homes]
   browseable = no
   writeable = yes
   root preexec = /etc/mount /dev/cdrom2
 

Recuerda que estos comandos se ejecutarán como usuario root. Por tanto, para garantizar la seguridad, los usuarios nunca deberán ser capaces de modificar el destino del comando root preexec.

preexec

La próxima opción que se ejecuta antes de la entrada es preexec, algunas veces llamada simplemente exec. Es una orden que no necesita privilegios y que se ejecuta como el usuario especificado por la variable %u. Por ejemplo, un uso común de esta opción es llevar a cabo una entrada, por ejemplo:

[homes]
   preexec = echo "%u connected to %S from %m (%I)\" >>/tmp/.log
 

Ten en cuenta que cualquier información que el comando envíe a la salida estándar no será vista por el usuario, sino que será descartada. Si pretendes usar un script preexec asegúrate de que funciona perfectamente antes de hacer que Samba lo ejecute.

postexec

Una vez que el usuario se desconecta del recurso, se ejecuta el comando especificado en la opción postexec con los privilegios del usuario. Esta opción es esencialmente la misma que preexec. De nuevo, recordar que el comando se ejecuta como si lo hiciera el usuario representado por %u y cualquier información enviada a la salida estándar será ignorada.

root postexec

Después de ejecutar la opción postexec, se ejecuta root postexec, en caso de haber sido especificado. De nuevo, esta opción establece un comando Unix que se ejecutará como si lo hiciera el usuario root antes de desconectarse de un recurso. Debes usar esta opción únicamente para realizar operaciones que requieran privilegios de root.

Trabajando con NIS y NFS

Finalmente, Samba tiene la posibilidad de trabajar con NIS y NIS+. Si hay más de un servidor de ficheros, y cada uno de ellos ejecuta Samba, puede ser una buena idea que el usuario esté conectado al servidor que actualmente tiene los discos en los que está grabado su directorio personal. Normalmente no es buena idea enviar los ficheros a través de la red vía NFS al servidor Samba, para ser enviados de nuevo a través de la red hacia el cliente vía SMB. (por una razón: es lento - cerca de un 30% sobre la velocidad normal de Samba). Aun así, hay un par de opciones para decirle a Samba que NIS sabe cual es el servidor correcto y le indica en que mapa NIS está la información.

La tabla 6-12 presenta otras opciones de configuración especificas para configurar usuarios:


Table: Opciones de configuración de usuarios.
Opción Parámetros Función Defecto Ámbito
nis homedir Lógico Si su valor es yes, utiliza NIS en vez de /etc/passwd para buscar la ruta del directorio personal del usuario no Global
homedir map Cadena (nombre del mapa NIS)   Ninguno Global

nis homedir y nis homedir map

Estas opciones se utilizan con servidores Samba en redes donde los directorios Unix se utilizan a través de NFS, el automontador y NIS (las páginas amarillas).

La opción nis homedir especifica que se ha de buscar el directorio personal para el usuario a través de NIS. La opción homedir map le indica a Samba que mapa NIS mirar para buscar el servidor que contiene el directorio del usuario. Este servidor ha de ser un servidor Samba, para que el cliente pueda hacer una conexión a el, y los otros servidores Samba han de tener NIS instalado para que puedan hacer la búsqueda.

Por ejemplo, si el usuario joe pregunta por un recurso llamado [joe], y la opción nis homedir esta marcada como yes, Samba buscará en el fichero especificado por homedir map un directorio llamado joe. Si lo encuentra, Samba devolverá el nombre del equipo asociado al cliente. Entonces el cliente intentará conectarse a esa máquina y recuperar el recurso desde ella. Para activar las búsquedas NIS hacemos lo siguiente:

[globals]
   nis homedir = yes
   homedir map = amd.map
Valora este capítulo: (11 opiniones)
Autor y licencia de 'Usando Samba - Scripts de Entrada'
Robert Eckstein, David Collier-Brown, Peter Kelly Extraído de: http://es.tldp.org/Manuales-LuCAS/USANDO-SAMBA/usando-samba-html/node1.html GNU Free Documentation License
Licencia GNU Free Documentation License: http://www.es.gnu.org/licencias/fdles.html
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Opiniona sobre 'Usando Samba - Scripts de Entrada' (11)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este tutorial



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'Usando Samba - Scripts de Entrada'

Este documento describe la manera de usar el paquete Samba, que dota a Linux de... Más »
Un sistema invariante en el tiempo TI (Time-Invariant) tiene la propiedad de que cierta entrada... Más »
La convolución nos ayuda a determinar el efecto que tiene el sistema en la señal... Más »
Este documento pretende ser el punto de entrada de los hispanohablantes al mundo Linux, intentando... Más »
"Es nuestra experiencia lingüística, la inserción en ese diálogo interno con nosotros mismos, que es... Más »
¿Estás seguro de que deseas eliminar este capítulo?