GPOを使ってログインユーザに対しての詳細な設定を加えるのもいいのだが、
従来からある「ログオンスクリプト」を使っての制御もできるそうな。
*GPOで作ったら一部エラーで動かなくなった箇所があって、急遽これで対応した。。
スクリプトは「*.bat」バッチファイルや「*.vbs 」VBScriptファイルで構わない。
ファイルの配置場所は smb.conf の[netlogon]のpathで定義される。ここでは下記が指定されている。
[netlogon]
path = /opt/samba/var/locks/sysvol/sybyl.local/scripts
read only = No
ここにスクリプトファイルを配置する。
そして、ユーザデータに調整が必要で、「ActiveDirectoryユーザとコンピュータ」にてユーザのプロパティーから「プロファイル」タブにて設定します。
ここではログオンスクリプトとして「logon.bat」のみを記載しているが、その実態のファイルは
「\\c\netlogon」もしくはc.sybyl.localの「/opt/samba/var/locks/sysvol/sybyl.local/scripts」を基点に参照している
各ユーザのログオンスクリプトが何であるかは、「pdbedit」で確認できる。
[root@c ~]# /opt/samba/bin/pdbedit -u illya -v
Unix username: illya
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2388220492-3765384844-3310792403-1104
Primary Group SID: S-1-5-21-2388220492-3765384844-3310792403-1103
Full Name: Illyasviel von. Einzbern
Home Directory: \\c\home\illya
HomeDir Drive: z
Logon Script: login.bat
:
[root@c ~]#
net use Q: \\c\share /persistent:NO
net use Q: \\c\share /persistent:NO
net use Z: \\c\home\%USERNAME%
Dim objNet
Set objNet = CreateObject("WScript.Network")
objNet.MapNetworkDrive "Q:", "\\c\share", FALSE
objNet.MapNetworkDrive "Z:", "\\c\home\"+objNet.UserName, FALSE
Set objNet = Nothing
Dim objNet,objFso,strNewFolderName
Set objNet = CreateObject("WScript.Network")
Set objFso = CreateObject("Scripting.FileSystemObject")
strNewFolderName= "\\c\share\"+objNet.UserName
If Not objFso.FolderExists( strNewFolderName ) Then
objFso.CreateFolder strNewFolderName
End If
objNet.MapNetworkDrive "X:", strNewFolderName, FALSE
objNet.MapNetworkDrive "Z:", "\\c\home\"+objNet.UserName, FALSE
Set objNet = Nothing
Set objFso = Nothing
Set strNewFolderName = Nothing
[root@c ~]# mdkir /share && chmod 777 /share && chown nobody:nobody /share
[root@c ~]# vi /opt/samba/etc/smb.conf
[share]
path= /share
read only = no
force user = nobody
force group = nobody
guest ok = yes
public = yes
browsable =yes
[root@c ~]#
環境変数の「USERDNSDOMAIN」を参照できれば、特定のDCを指定せず、より柔軟な対応ができるのだが、windowsXPだと「\\sybyl.local」にアクセスできないみたい。