Samba supports the execution of Windows logon scripts, which are scripts (.BAT or .CMD) that are executed on the client when a user logs on to a Windows domain. Note that these scripts are stored on the Unix side, but are transported across the network to the client side and executed once a user logs on. These scripts are invaluable for dynamically setting up network configurations for users when they log on. The downside is that because they run on Windows, they must use the Windows network configuration commands.
If you would like more information on NET commands, we recommend the following O'Reilly handbooks:
Windows NT in a Nutshell,
Windows 95 in a Nutshell, and
Windows 98 in a Nutshell.
You can instruct Samba to use a logon script with the
logon
script
option, as follows:
[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
Note that this example uses the
%U
variable, which will individualize the script based on the user that is logging in. It is common to customize logon scripts based on the user or machine name that is logging onto the domain. These scripts can then be used to configure individual settings for users or clients.
Each logon script should be stored at the base of the
[netlogon]
share. For example, if the base of the
[netlogon]
share is
/export/samba/logon and the logon script is
jeff.bat, the file should be located at
/export/samba/logon/jeff.bat. When a user logs on to a domain that contains a startup script, he or she will see a small dialog that informs them that the script is executing, as well as any output the script generates in an MS-DOS-like box.
One warning: because these scripts are loaded by Windows and executed on the Windows side, they must consist of DOS formatted carriage-return/linefeed characters instead of Unix carriage returns. It's best to use a DOS- or Windows-based editor to create them.
Here is an example of a logon script that sets the current time to match that of the Samba server and maps two network drives,
h
and
i
, to individual shares on the server:
# 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