公司出于数据安全需要, 把linux服务器放到了子网里面, 但是linux查看文档不是太方便. 然后领导说折腾一台windows专门用来查看文档.


网上找了下 pGina 可以用于windows的LDAP认证. 因为AD不在那个子网中, 出于安装考虑, 只有使用linux的LDAP认证了.


直接起一台windows 2008虚拟机. 在里面安装好 pGina. 打开软件.

1: 把LDAP 相关选项勾上. 因为要操作组所以把 Gateway也勾上了.然后再点击配置

Windows 2008 使用Linux LDAP认证_第1张图片

2: 这里直接更改ldap的地址及base 即可

Windows 2008 使用Linux LDAP认证_第2张图片

3: 点击 Gateway. 我这边是设置为只要登录的都自动添加到远程桌面用户组. 然后 保存

Windows 2008 使用Linux LDAP认证_第3张图片

4: 记得更改一下认证顺序.

Windows 2008 使用Linux LDAP认证_第4张图片

5: 现在可以输入相关账号测试一下. 如果LDAP 是绿色的就可以了.  刚开始里面如果没有

这个账号的话, 可能Local Machine 是红色的. 没关系. 

Windows 2008 使用Linux LDAP认证_第5张图片

6: 现在远程登录这台服务器是这样的. 到些完成

Windows 2008 使用Linux LDAP认证_第6张图片



认证做好后, 考虑文档都在 Linux NFS上面, 然后还安装了NFS客户端, Windows 2008 

直接添加 文件服务 角色即可. 

为了登录系统后自动挂载NFS. 前面用BAT写了下脚本, 可是真没折腾出来, 一直有错,

没办法,用golang写了个. 

package main

import (
    "os"
    "os/exec"
    "fmt"
    "bufio"
    "strings"
    "time"
)

func main() {
    conf := make(map[string]string)
    user := os.Getenv("USERNAME")
    // 相关NFS服务器信息直接保存在下面这个文件中.
    f, err := os.Open(`c:\Windows\auto.nfs`)

    if err != nil {
        fmt.Println("Open Config File ERROR")
        os.Exit(1)
    }
    defer f.Close()
    rd := bufio.NewScanner(f)
    for rd.Scan() {
        trim := strings.TrimSpace(rd.Text())
        split := strings.Split(trim,`\`)
        conf[split[len(split)-1]] = trim
    }
    if _, exist := conf[user]; exist {
        for i:=0; i<5; i++ {
            exec.Command("mount","-o rsize=32,wsize=32,fileaccess=755",conf[user],"z:").Run()
            time.Sleep(2000000000)
            if _, err := os.Open(`Z:\`); err == nil {
                fmt.Println("Mount NFS OK")
                os.Exit(0)
            } else {
                fmt.Println("Mount NFS ERROR")
            }               
        }  
    }
}

编译好后,放在 所有用户 的启动文件夹中搞定


另外上面这样挂载NFS是只读的. 因为用户名没有映射, 考虑他们只是查看文档就没折腾了.


如果Linux NFS服务器是 4.1 的版本,  可能用这个会更加好一点, 支持LDAP认证

ms-nfs41-client 只支持 4.1


pGina


最后要注意的是 pGina 需要依赖 LanmanServer 服务.