GPOを使ってログインユーザに対しての詳細な設定を加えるのもいいのだが、
従来からある「ログオンスクリプト」を使っての制御もできるそうな。

*GPOで作ったら一部エラーで動かなくなった箇所があって、急遽これで対応した。。

スクリプトは「*.bat」バッチファイルや「*.vbs 」VBScriptファイルで構わない。
ファイルの配置場所は smb.conf の[netlogon]のpathで定義される。ここでは下記が指定されている。

[netlogon]
        path = /opt/samba/var/locks/sysvol/sybyl.local/scripts
        read only = No

ここにスクリプトファイルを配置する。

そして、ユーザデータに調整が必要で、「ActiveDirectoryユーザとコンピュータ」にてユーザのプロパティーから「プロファイル」タブにて設定します。
2016y08m10d_021455648.png
ここではログオンスクリプトとして「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 ~]#

スクリプトの例

  • 単純に \\c\share をネットワークドライブのQにするにはバッチファイル「login.bat」にて
    net use Q: \\c\share /persistent:NO
    とする。またZドライブをホームディレクトリにするなら
    net use Q: \\c\share /persistent:NO
    net use Z: \\c\home\%USERNAME%
    とする。*%USERNAME%」の値で場所が指定できるのなら
    留意この場合、「pdbedit」の「HomeDir Drive:」と重ならないようにする
  • Windows Script Hostで記述するなら
    下記を「logon.vbs」としてログオンスクリプトに記載する
    Dim objNet
    Set objNet = CreateObject("WScript.Network")
    objNet.MapNetworkDrive      "Q:", "\\c\share", FALSE
    objNet.MapNetworkDrive      "Z:", "\\c\home\"+objNet.UserName, FALSE
    Set objNet = Nothing
    *ここではsmb.confにて[homes]を使わず[home]を使っているので「"\\c\home\"+objNet.UserName」となる
    *「MapNetworkDrive」の第3引数は自動再接続フラグで、ここでは「FALSE」(既定値)にする。「TRUE」だとエラーが発生する
  • ログオン時にユーザ名を持つフォルダを作成する
    フォルダが存在するかのチェックを行って、存在しなければフォルダを作成する。そしてそれをXドライブとする
    「Windows Script Host」を駆使すれば行える
    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の調整が必要
    [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」にアクセスできないみたい。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-05-15 (月) 10:25:41 (9d)