&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」にアクセスできないみたい。
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS