zl程序教程

您现在的位置是:首页 >  系统

当前栏目

利用samba做Linux和Windows域的整合

LinuxWindows 利用 整合 samba
2023-09-14 09:15:58 时间

利用samba做Linux和Windows域的整合

1.测试环境:

DC&DNS:Windows Server 2003 sp2 企业版. 计算机名为:DC    ip:192.168.255.1

客户机:Red Hat Enterprise Linux ES5    hostname为server  ip: 192.168.255.2

域名:yanchun.com

2.试验目的:将Linux加入到Windows域,并实现Windows域帐户登陆Linux服务器.

3.准备工作:

   a.在一台机器上安装Windows Server 2003 ,并升级为DC,同时集成DNS服务.

   b.Linux的准备工作也很简单,主要是检查以下几个包是否被安装:

     samba-3.0.23c-2

     samba-common-3.0.23c-2

     samba-client-3.0.23c-2     //samba的相关包

     krb5-libs-1.5-17

     krb5-workstation-1.5-17

     krb5-devel-1.5-17

     pam_krb5-2.2.11-1          //kerberos相关的软件包

   主要就用到这些包,由于各Linux发行版本的不同,包的版本或许会有差异.

4.配置步骤:

a.修改ip和dns我就不做介绍了.但是要注意防火墙(iptables)和SELinux.

  你可以把iptables规则清空,并禁用SELinux.

  清空iptables规则命令如下:

   iptables -F 

  禁用SELinux方式如下:

  vi /etc/selinux/config

  将其中的  SELINUX=enforcing

  改成      SELINUX=disable  

b.修改/etc/krb5.conf文件,该文件是kerberos的配置文件。

   典型的krb5.conf文件如下:

     [logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = EXAMPLE.COM

 dns_lookup_realm = false
 dns_lookup_kdc = false

[realms]
 EXAMPLE.COM = {
  kdc = kerberos.example.com:88
  admin_server = kerberos.example.com:749
  default_domain = example.com
 }

[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM

[kdc]
 profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]
 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }

其中需要我们修改的地方很少,以我的例子为例,修改后的文件如下:

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = YANCHUN.COM         //改成你的域名
 dns_lookup_realm = false
 dns_lookup_kdc = false

[realms]
 YANCHUN.COM = {                     //改成你的域名
  kdc = dc.yanchun.com:88            //改成你DCFQDN或者是IP,两者没什么区别
  admin_server = dc.yanchun.com:749
  default_domain = yanchun.com       //改成你的域名,注意和上面的不同.(大小写)
 }

[domain_realm]
 .example.com = YANCHUN.COM          
 example.com = YANCHUN.COM            //
接着改

[kdc]
 profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]
 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }

修改完毕后运行下面的命令查看kerberos文件是否有误:

    kinit administrator@YANCHUN.COM

其中administrator是域管理员账户,YANCHUN.COM是你的域名.

   回车键后,会提示你输入密码,如果没有什么错误.在你输入密码回车后,会自动返回到Linux命令提示符下.

   在这里要注意的小问题就是Linux本地的时间要和DC的时间差问题,我们都知道,在DC上的策略中,时间差允许的范围是5分钟,所以,在运行上述的命令前,最好先同步下Linux和DC的时间:

    ntpdate 192.168.255.1

c.这一步是最主要的步骤了,就是修改/etc/samba/smb.conf配置文件.samba的主配置文件选项很多,在加上各版本中默认的选项都有所差异,在这里我就不列举典型的smb.conf文件了,我只把我的smb.conf文件帖出来,以供各位参考:

    
[global]
   workgroup = YANCHUN                    //需要加入的域的netbios名,注意是域的netbios名,要大写
   netbios name = Linux                   //本机器的netbios名,有的版本没有这一项会没有这个,
                                            要手动添加
   server string = Samba Server            //对该服务器的描述
   printcap name = /etc/printcap
   load printers = yes
   cups options = raw

   log file = /var/log/samba/%m.log
   max log size = 50

   security = ads                     //ads验证方式必须有realm项

   realm = YANCHUN.COM                //增加这一行,注意这里是域名.
   password server = dc.yanchun.com           //这里是DC的FQDN,也可以写ip,但是有时候会出
                                                问题,建议写FQDN

   encrypt passwords = yes                 //加密在网络上传输的用户密码
   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

   dns proxy = no


   winbind separator = /                  //用户的域名和用户名之间的间隔,用什么随你心情
   idmap uid = 1000000-2000000         
   idmap gid = 1000000-2000000            //域用户映射成Linux本地用户时所有的uid和gid范围.
   template home = /home/%D/%U            //与home文件夹中定义的作用相同.两者定义一个就行(我没加这行)
   template shell = /bin/bash             //用户登陆后所使用的shell
   winbind use default domain = yes       //用户登陆使用默认的域
   winbind enum users = yes
   winbind enum groups = yes              //有人说是自动创建用 getent passwd[group]看到的
                                            用户和组的信息.具体有什么用,我也说不清楚          

                                        

[homes]
   comment = Home Directories
   browseable = no
   writable = yes
   create mode = 0777
   directory mode = 0777   //创建的文件和目录的默认权限
   path = /home/%D/%U     //用户主目录的相关设置

[printers]
   comment = All Printers
   path = /var/spool/samba
   browseable = no
   guest ok = no
   writable = no
   printable = yes

以上红色的部分都是要修改的,其余的都保持默认就行.好了,修改完成后,保存退出.然后用下面的命令测试 smb.conf是否有误:

   testparm

显示的结果如下:

 

在这里注意两个地方就行,一个是  Loaded services file OK.      //说明你的配置文件没有错

                       还有一个就是:Server role:ROLE_DOMAIN_MEMBER  //说明你的服务器已经是域的
                                                               "准"成员了.

好了,做了这些测试后,先把smb和winbind两个服务开启成随系统自动启动:

   chkconfig smb on

   chkconfig winbind on

然后重启samba服务:

    service smb restart      //写到这里,我想起一点好玩的事来, 在fedora 9中(其他版本我不知道),

                               smb和nmb服务是分开的,也就是说你用这条命令只能重启动smb,不能重
                               启nmb,你还要打service nmb restart才行.....

然后就可以加入域了:

  net ads join -W YANCHUN.COM -S dc  -U administrator

然后会要求你输如管理员的password,输入后,正常情况下会提示加入域成功.

 

 

 在这里我插一句,有时候用net ads join 会不好使,这时候就试试net rpc join 这种方式.

到这里,我们就已经把samba服务器加入到域里了,这时,在DC上,computers这个OU里就应该可以看到你的samba服务器了.

 

这时,我们重启winbind服务:

service winbind restart

重启完成后,我们就可以用下面的几条命令来进行测试了:

   wbinfo -t                 //测试该samba服务器与域的信任关系

 

  wbinfo -u                  // 查看域用户的映射信息

 

  wbinfo -g

  有时候会出现这样的错误信息,解决办法如下:

  先停掉winbind和smb服务:

  service smb stop

  service winbind stop

  然后删除下面两个目录里的.tdb文件:         /etc/samba   和   /var/cache/samba

                                           据我理解,这些应该是在加入域过程中,产生的一些缓存
  文件,但是有时候这些缓存会造成一些错误信息,就象我们刚才看到的那样,删除后,重启服务,让他重新
  生成就行了.

  fedora9 会稍有不同,目录我记不太清楚了,好像是 /var/lib/samba  你可以用命令搜索下:

  find / -name *.tdb

  删除完成后,重新启动 smb服务.

  service smb start

  在次运行加入域的命令:

  net ads join -W YANCHUN.COM -S dc  -U administrator

  重启动winbind服务.

   service winbind start

  然后在用命令查看信息就OK了.

 

  到这里呢,我们的samba服务器就成功的加入到域里了,但是呢,却还不能实现域账户在Linux终端上的登陆.想要实现这个目的,其实也很简单,只需要修改下面几个文件就可以了:

   /etc/nsswitch.conf           //修改这个文件,影响Linux查找用户,组,和他们密码的行为

   修改项如下:

    passwd:    winbind files 
    shadow:    winbind files
    group:     winbind files

   /etc/pam.d/sysconfig-auth    //让pam认证支持以winbind为源进行用户的查找和匹对.

    修改项如下:

    auth        sufficient    /lib/security/pam_winbind.so          //增加这一行

    auth        required      /lib/security/$ISA/pam_env.so
    auth        sufficient    /lib/security/$ISA/pam_unix.so likeauth nullok
    auth        required      /lib/security/$ISA/pam_deny.so
    auth        sufficient      /lib/security/pam_winbind.so

    account     sufficient    /lib/security/pam_winbind.so       //增加这一行,注意这两行的位置

    account     required      /lib/security/$ISA/pam_unix.so
    account     sufficient    /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet
    account     required      /lib/security/$ISA/pam_permit.so

    password    requisite     /lib/security/$ISA/pam_cracklib.so retry=3
    password    sufficient    /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow
    password    required      /lib/security/$ISA/pam_deny.so

    session     required      /lib/security/$ISA/pam_limits.so
    session     required      /lib/security/$ISA/pam_unix.so

  修改完毕后,根据上面smb.conf文件的配置,我们就可以实现用户的登陆了,不过还有一点要说明,就是在用户登陆前,必须手动创建他们的登陆主目录,并且赋予他们完全控制的权限.

    比如,我想让administrator用户登陆Linux,实现步骤如下:

    cd /home

    mkdir YANCHUN

    cd YANCHUN

    mkdir administrator

    chown administrator administrator      //在home目录下创建YANCHUN域目录,并在该目录下创建
                                             要登陆用户administrator的目录,更改目录权限.

    这样在终端上就可以实现域用户账户的登陆了.

     还有就是用户登陆Linux平台后,权限控制的问题.默认情况下,这种方式登陆到Linux平台的用户只有对自己主目录有完全控制权限,其余的文件均为只读.

     可以通过下面的方法来实现对域用户权限的控制:

     1.更改/etc/nsswitch.conf文件.

     passwd:    winbind files
     shadow:    files winbind
     group:     winbind files

细心的朋友也许已经注意到了这个文件与上面那个文件的不同.就是shadow的查找顺序.为什么这么改,呵呵,先卖个关子,接着往下看.

     2.然后先把winbind 服务停掉.

     建立与要登陆Linux的域用户账户的同名Linux账户.

     3.重启winbind服务.用域账户登陆.这时会发现,登陆后域用户的登陆点不是在/home/%D/%U下了,而是在/home/%U下.为什么呢?

     这是因为nsswitch.conf文件影响的结果.就是域用户在输入自己的登陆名时,Linux系统并不认为是域用户,而认为该用户是一个本地用户,而shadow项的设置,是先去DC进行密码的查询.于是就造成了一种假象,就是域用户用自己的用户名和密码登陆了Linux.所以其登陆目录为/home/%U.

     既然,Linux认为该登陆用户是一个本地用户,那么我们就可以很方便的对他赋予权限了.

     但是,如果要登陆Linux的用户非常多,那么作为管理员,我们的工作量会非常大,这也是我下面要提出的用LDAP想法的原因. 

    我在这个试验过程中所碰到的问题如下:

    1. net rpc join  和 net ads join 命令在作用上有什么区别.

    2. 有时候配置文件没有错,但是在加入域时会提示错误信息,如NT_STATUS开头的一些错误信息,具体是什么原因,还望有高手指教.我在网上搜索相关错误提示的帖子,也没有能找到真正解决问题的方法.

    NT_STATUS_ACCESS_DENIED (0xc0000022)
    NT_STATUS_NO_TRUST_SAM_ACCOUNT (0xc000018b)
    NT_STATUS_INVALID_COMPUTER_NAME

    3.有时候会出现unable to find a suitable server .提示找不到合适的服务器,不知道问题出在什么地方.

    4.另外,我还有一种想法,能不能在Linux上搭建LDAP服务,然后用他去同步Windows的活动目录数据库,然后激活samba的LDAP数据库认证功能,实现域用户账户访问samba服务器的认证问题.有做过相关试验的朋友请给小弟一点指点.感激不尽.

    5.至于自动为登陆Linux平台的域用户创建宿主目录,和自动加入某一Linux本地组,等我熟了SHELL编程在说吧,呵呵~

    6.有时候会出现类似于Winbind服务启动起来后,显示该服务已经假死的现象,这时候可以通过查找/var/log/messages或者/etc/log/samba/winbind.log查找相关的错误信息。我碰到过的一个问题是:Winbind Dead but subsys lock的东东,解决办法是关闭SELinux就可以了,针对这个问题在相关的日志错误信息中显示的是:open secrets.tdb error。据我个人理解,应该是SELinux的开启造成了Winbind无法访问/etc/samba/secrets.tdb文件的缘故,只要disable SELinx 重启计算机后,应该就可以正常的启动和停止Winbind服务了。

   

自己操作:

Win 03 AD:

 

IP: 192.168.15

Samba server (cetnos5.3):

[root@sambatest ~]# hostname

Sambatest

[root@sambatest ~]# more  /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1               localhost.localdomain localhost

::1             localhost6.localdomain6 localhost6

        1. sambatest

软件:

Yum search samba

找到:

samba.i386 : Samba SMB 服务器。

samba-client.i386 : Samba (SMB) 客户程序。

samba-common.i386 : 用在 Samba 服务器和客户机上的文件。

samba-swat.i386 : Samba SMB 服务器配置程序。

后:

Yum –y install samba*

Yum search krb5

找到:

krb5-auth-dialog.i386 : Kerberos 5 认证对话

krb5-devel.i386 : 编译 Kerberos 5 程序所需的开发文件。

krb5-libs.i386 : 被 Kerberos 5 使用的共享库。

krb5-server.i386 : The KDC and related programs for Kerberos 5.

krb5-workstation.i386 : 用在工作站上 Kerberos 5 程序。

pam_krb5.i386 : 一个 Kerberos 5 的可插入验证模块 (PAM)。

后:

Yum –y install pam_krb5* krb5*

SMB.CONF:

[global]

        workgroup = DS

        realm = DS.COM

        server string = Sambatest Server Version %v

        security = ADS

        password server = 192.168.1.16

        idmap uid = 16777216-33554431

        idmap gid = 16777216-33554431

        template shell = /sbin/nologin

        winbind separator = +

        winbind enum users = Yes

        winbind enum groups = Yes

        winbind use default domain = Yes

        winbind offline logon = false

netbios name = sambatest

        encrypt passwords = yes

        cups options = raw

[centos ds]

        comment = centos samba server

        path = /home/samba/

        valid users = ds+caiwu02, @ds+caiwu, @ds+test, @ds+server

        read only = No

        create mask = 0664

        directory mask = 0775

        guest ok = Yes

more /etc/krb5.conf

[logging]

 default = FILE:/var/log/krb5libs.log

 kdc = FILE:/var/log/krb5kdc.log

 admin_server = FILE:/var/log/kadmind.log

[libdefaults]

 default_realm = DS.COM

 dns_lookup_realm = false

 dns_lookup_kdc = false

 ticket_lifetime = 24h

 forwardable = yes

[realms]

 DS.COM = {

  kdc = 192.168.1.16:88

  kdc = 192.168.1.16

  admin_server = 192.168.1.16:749

  default_domain = DS.COM

 }

[domain_realm]

 .ds.com = DS.COM

 ds.com = DS.COM

[kdc]

 profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]

 pam = {

   debug = false

   ticket_lifetime = 36000

   renew_lifetime = 36000

   forwardable = true

   krb4_convert = false

 }

more /etc/nsswitch.conf

passwd:     files winbind

shadow:     files winbind

group:      files winbind

[root@sambatest ~]# more /etc/pam.d/sysconfig-auth

auth        sufficient    pam_winbind.so     //增加这行

auth        required      pam_env.so

auth        sufficient    pam_unix.so nullok try_first_pass

。。。。。。

account     sufficient    pam_winbind.so     //增加这行

account     required      pam_unix.so broken_shadow

account     sufficient    pam_succeed_if.so uid < 500 quiet

。。。。。。

同步时间:

ntpdate 192.168.1.16

net rpc join -S WIN03SERVER1.DS.COM -U centos

net ads testjoin

/etc/init.d/winbind start 启动不了是还没加入域,获取不不到消息,再加入域后要启动才能使用下面命令:

wbinfo -t                 //测试该samba服务器与域的信任关系

wbinfo -u                 // 查看域用户的映射信息

wbinfo –g

以下是我没用到的:

net ads info

net ads status -Ucentos%centos

net rpc info -S win03server1.ds.com -Ucentos%centos

net rpc testjoin -S win03server1.ds.com -Ucentos%centos

nmblookup -A 192.168.0.2 //查询网络上 NetBIOS 主机的信息

smbstatus:

列出目前的 SMB server 的狀態,也是很有用途的一個指令啦!

testparm:

這個指令主要在檢驗 samba 設定檔 smb.conf 的語法正確與否,當你編輯過 smb.conf 時,請務必使用這個指令來檢查一次, 避免因為打字錯誤引起的困擾啊!

smbtree:

這玩意就有點像 Windows 系統的網路上的芳鄰顯示的結果,可以顯示類似『靠近我的電腦』之類的資料, 能夠查到工作群組與電腦名稱的樹狀目錄分佈圖,有趣吧!

/etc/samba/smbusers:

由於 Windows 與 Unix-like 在管理員與訪客的帳號名稱不一致,分別為 administrator 及 root, 為了對應這兩者之間的帳號關係,可以使用這個檔案來設定。不過這個檔案的使用必須要經由 smb.conf 內的『 username map 』設定項目來啟動才行。

%S:取代目前的設定項目值,所謂的『設定項目值』就是在 [分享] 裡面的內容! 舉例來說,例如底下的設定範例:

[homes]

   valid users = %S

  ....

因為 valid users 是允許的登入者,設定為 %S 表示任何可登入的使用者都能夠登入的意思~今天如果 dmtsai 這個使用者登入之後,那個 [homes] 就會自動的變成了 [dmtsai] 了!這樣可以明白了嗎? %S 的用意就是在替換掉目前 [ ] 裡面的內容啦!

%m:代表 Client 端的 NetBIOS 主機名稱喔!

%M:代表 Client 端的 Internet 主機名稱喔!就是 HOSTNAME。

%L:代表 SAMBA 主機的 NetBIOS 主機名稱。

%H:代表使用者的家目錄。

%U:代表目前登入的使用者的使用者名稱

%g:代表登入的使用者的群組名稱。

%h:代表目前這部 SAMBA 主機的 HOSTNAME 喔!注意是 hostname 不是 NetBIOS name 喔!

%I:代表 Client 的 IP 咯。

[root@linux ~]# smbpasswd [-adem] username

參數說明:

   : 如果都沒有加上任何一個參數,例如『 smbpasswd dmtsai 』時,這表示:

     修改 SAMBA 密碼檔 (/etc/samba/smbpasswd) 裡面的 dmtsai 這個帳號的密碼!

     也就是說,密碼檔裡面已經存在一個 dmtsai 的帳號了!

-a : 在 smbpasswd 密碼檔裡面新增一個使用者

-d : 讓在 smbpasswd 密碼檔裡面的某個帳號的使用者暫時無法使用 SAMBA

     當多了 -d 的參數時,在 smbpasswd 裡面某個欄位會多出一個 D 的參數,

     代表該帳號目前無法使用喔!

-e : 與 -d 參數相反,讓某個帳號恢復使用!

-m : 該 username 為機器代碼 (Machine Account),這個與 domain model 有關!

etc/samba/smbusers文件中做映射

真实samba帐号 = 帐号别名

确保有以下内容:

         root = administrator

         smbuser1 = user1

         smbuser2 = user2

         smbuser3 = user3

 username map = /etc/samba/smbusers  #帐号映射文件

samba结合AD实现大型网络方案

 前言:

这文章可能在某些情况下还会有各种的不足,所以我只是作一个抛砖来引玉.希望能和大家讨论这个方案存在的问题与如何解决问题.

背景:

在上次的背景之下(见上一文章),管理员发现公司内现有部门不多,但员工数量非常的多.如果按照用户一个一个的去创建用户并用smbpasswd增加samba的登陆用户非常的麻烦.而且公司内已经存在一台windows 2003 server域控制器(建立方法),并且包含所有员工的帐号信息.在此管理员想通过windows 2003 server域控制器的帐号来作为samba的登陆帐号.

环境:

 Windows 2003 Server

 Linux Samba's Server

IP地址 

 192.168.1.1/24

 192.168.1.250/24

DNS

 192.168.1.1

 192.168.1.1

hostname

 gz

 rhel

 eric.local

 配置:

.linux加入到AD(这步暂时大家先放一下,因为我后面步骤没有使用到.大家先做后面的步骤如果不行在返过来做这一步骤.以前在RHEL AS4的时候,用这步骤是很简单就能成功的,但我用RHEL AS5就不知道为什么怎么都不成了.)

#vi /etc/krb5.conf

修改为以下内容 (注意区分大小写,还有就是自己正确替换为自己的域)

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = ERIC.LOCAL
(验证域的realm,必须全部大写)
dns_lookup_realm = false
dns_lookup_kdb = false

[realms]
ERIC.LOCAL = {
kdc = 192.168.1.1:88 
default_domain = ERIC.LOCAL
(缺省域名,同样必须全部大写)
}

[domain_realm] 
.eric.local= ERIC.LOCAL
eric.local = ERIC.LOCAL

 

后面不用修改,省略......

做完这里的话就测试一下

#kinit administrator@ERIC.LOCAL            (@ERIC.LOCAL必须大写)

输入AD里的administrator密码,如果没有任何的提示.直接返回到shell里的话就表示已经成功了.但这并不代表已经加入了域.继续看下去

修改samba的主配置文件

#vi /etc/samba/smb.conf

修改以下的内容

workgroup = ERIC        # <-- 这里的 workgroup 见图1就知道填什么了.

realm = ERIC.LOCAL   # <-- 建立的域名称
security = ADS
password server = 192.168.1.1 # <-- windos AD
域控制器的完整主机名。也可以用 IP 地址来代替

workgroup的填写内容就在登陆到里显示了!!,1

然后就基本可以了.

启动samba服务

#service smb start

同步时钟,加入域必须时差在5分钟内!

#ntpdate 192.168.1.1

测试与加入域

#kinit administrator@ERIC.LOCAL   

 

#net ads join  (AS4的话用这句很容易就加到域的,AS5中我怎么都加不到.所以krb5.conf文件就变得似呼没有用了.)

 

#net rpc join -S gz.eric.local -U administrator (如果上句不行就试试这一句,AS5就是用rpc方式连接域的,功能上没有ADS.)

 

如果能够加入后,AD域可以在windows 2003 server里看到rhel

到这里其实就只是加入域而已,但并不能用AD帐号登陆samba

.AD帐号同步到linux.这里要用到一个工具winbind

修改samba的主配置文件

#vi /etc/samba/smb.conf

在配置文件中添加以下内容

idmap uid = 10000 - 20000

idmap gid = 10000 - 20000

template shell = /sbin/nologin

template homedir = /home/%D/%U

winbind separator = %

winbind use default domain = yes

winbind enum users = yes

winbind enum groups = yes

encrypt passwords = yes

修改以下内容

[home]

         path = /home/%D/%U

         browsable = no

         writable = yes

         create mask = 0664

         directory mask = 0775

前面不是看到/home/%D/%U这样的目录吗?我们就要手工去创建这个目录了.不过这里比较麻烦,AD帐号的个人目录必须要工的去创建,而不能说自动的检测是否已存在,不存在自动创建.不知道哪个高手能够说说有什么方法解决,我想到用脚本去做.但还在测试中...大家说说你们的高见

#mkdir /home/ERIC

 

#chmod -R 777 /home/ERIC

添加winbind写入帐号的信任

#vi /etc/nsswitch.conf

修改以下位置

passwd:    files   winbind

shadow:    files   winbind

group:       files   winbind

保存然后就重启两个服务

#service smb restart

 

#service winbind start

再加入域语句和前面一样,我这就不再写了.

加入成功后就测试一下!

#wbinfo -t       #winbind是否正常运行

 

#wbinfo -u      #AD用户是否同步过来了

 

基本上到这里就已经完成了配置.windows测试一下吧!

我先来说一下存在的问题:

1.首先最亟待解决的问题就是AD帐号主目录的自动建立问题,一直想不到好的解决方法.暂时有一个方向是用脚本去实现,还在研究当中.

2.net ads join不能够加入域,只能用net rpc join的方法.不知道哪个高人能指点一下.

以上是我暂时想到的问题,大家在操作研究中如果发现有什么问题可以提出来大家讨论一下.学习Linux就必须多思考,而不是到处搜索.版本多了,并不一定网上的转载就正确.讨论才是解决的好办法!哈哈

AD帐号登陆samba自动创建主目录脚本

我就受这文件的启发,还有就是我一直的一个思路所影响.开始研究那个pam_mkhomedir.so的原理.最后我想到了以下这个方法.

SAMBA的主配置文件下的[homes]增加一句执行脚本的代码

//[homes] 由于在 [homes]实现共享所以用他

preexec = /home/ERIC/buildhome %D %U %G

然后就保存文件.接下来就到/home/ERIC下创建脚本了!

#vi /home/ERIC/buildhome

脚本的内容如下

umask 077    

domain=$1  

user=$2       

group=$3    

 

if [ ! -d /home/$domain/$user ] ; then

mkdir /home/$domain/$user

chown $user /home/$domain/$user

chgrp $group /home/$domain/$user

if

分配权限

#chmod 777 /home/ERIC/buildhome

然后就重启samba服务

#service smb restart

到此就完成了一个samba的自动化了!希望在几篇关于samba的文章当中会对大家搭建windowslinux的异构网络有所帮助.同时也希望大家一直以来对本站的关注.

  1. share安全级别模式
    客户端登录samba服务器,不需要输入用户名和密码就可以浏览samba服务器的资源,适用于公共的共享资源,安全性差,需要配合其他权限设置,保证samba服务器的安全性。
    (2)user安全级别模式
    客户端登录samba服务器,需要提交合法帐号和密码,经过服务器验证才可以访问共享资源,服务器默认为此级别模式。
    (3)server安全级别模式
    客户端需要将用户名和密码,提交到指定的一台samba服务器上进行验证,如果验证出现错误,客户端会用user级别访问。
    (4)domain安全级别模式
    如果samba服务器加入windows域环境中,验证工作服将由windows域控制器负责,domain级别的samba服务器只是成为域的成员客户端,并不具备服务器的特性,samba早期的版本就是使用此级别登录windows域滴。
    (5)ads安全级别模式
    当samba服务器使用ads安全级别加入到windows域环境中,其就具备了domain安全级别模式中所有的功能并可以具备域控制器的功能。