&color(red){修正中};
GPOを使ってログインユーザに対しての詳細な設定を加えるのもいいのだが、
従来からある「ログオンスクリプト」を使っての制御もできるそうな。
&color(red){*};&size(10){GPOで作ったら一部エラーで動かなくなった箇所があって、急遽これで対応した。。};
スクリプトは「*.bat」バッチファイルや「*.vbs 」VBScriptファイルで構わない。
ファイルの配置場所は smb.conf の[netlogon]のpathで定義される。ここでは下記が指定されている。
#code(nonumber){{
[netlogon]
path = /opt/samba/var/locks/sysvol/sybyl.local/scripts
read only = No
}}
ここにスクリプトファイルを配置する。
そして、ユーザデータに調整が必要で、「ActiveDirectoryユーザとコンピュータ」にてユーザのプロパティーから「プロファイル」タブにて設定します。
&ref(2016y08m10d_021455648.png,nolink);
ここではログオンスクリプトとして「logon.bat」のみを記載しているが、その実態のファイルは
「\\c\netlogon」もしくはc.sybyl.localの「/opt/samba/var/locks/sysvol/sybyl.local/scripts」を基点に参照している
各ユーザのログオンスクリプトが何であるかは、「pdbedit」で確認できる。
#code(nonumber){{
[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 ~]#
}}
***スクリプトの例 [#a0ae892c]
-単純に \\c\share をネットワークドライブのQにするにはバッチファイル「login.bat」にて
#code(nonumber){{
net use Q: \\c\share /persistent:NO
}}
とする。またZドライブをホームディレクトリにするなら
#code(nonumber){{
net use Q: \\c\share /persistent:NO
net use Z: \\c\home\%USERNAME%
}}
とする。&color(red){*};&size(10){「&color(red){%USERNAME%};」の値で場所が指定できるのなら};
&color(white,blue){留意};この場合、「pdbedit」の「HomeDir Drive:」と重ならないようにする
-Windows Script Hostで記述するなら
下記を「logon.vbs」としてログオンスクリプトに記載する
#code(nonumber){{
Dim objNet
Set objNet = CreateObject("WScript.Network")
objNet.MapNetworkDrive "Q:", "\\c\share", FALSE
objNet.MapNetworkDrive "Z:", "\\c\home\"+objNet.UserName, FALSE
Set objNet = Nothing
}}
&color(red){*};&size(10){ここではsmb.confにて[homes]を使わず[home]を使っているので「"\\c\home\"+objNet.UserName」となる};
&color(red){*};&size(10){「MapNetworkDrive」の第3引数は自動再接続フラグで、ここでは「FALSE」(既定値)にする。「TRUE」だとエラーが発生する};
-ログオン時にユーザ名を持つフォルダを作成する
フォルダが存在するかのチェックを行って、存在しなければフォルダを作成する。そしてそれをXドライブとする
「Windows Script Host」を駆使すれば行える
#code(nonumber){{
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
}}
この場合、/shareのパーミッションとsmb.confの調整が必要
#code(nonumber){{
[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 ~]#
}}
***めも [#qfbf6524]
環境変数の「USERDNSDOMAIN」を参照できれば、特定のDCを指定せず、より柔軟な対応ができるのだが、windowsXPだと「\\sybyl.local」にアクセスできないみたい。