柴少鹏的官方网站 技术在分享中进步,水平在学习中升华

Centos6.4 smaba+openldap

前面一章讲了openldap与svn集合做做统一认证,这篇博文就讲一下openldap结合smaba的统一认证,smaba就写一下简单配置,像svn,samba和后面的服务都会单开博文做详细说明。

samba的详细记录博客地址:http://www.51niux.com/?id=66

一、samba服务器的配置

为了使samba server能够使用openldap认证,必须要在/etc/nsswith.conf文件中配置使用ldap,使用下面的命令即可:

# authconfig --enableldap --update  #实际上,该条命令的目的就是在/etc/nsswith.conf中的
passwd, shadow, group, netgroup和automount条目增加ldap选项,如果不想使用上面的命令,手工进行添加也是可以的

把原配置文件的:

passwd:     files

shadow:     files

group:      files

netgroup:   nisplus

automount:  files nisplus

更改为下面的:

passwd:     files ldap

shadow:     files ldap

group:      files ldap

netgroup:   files ldap

automount:  files ldap


二、openldap服务的设置

默认情况下,openldap server并不会读取samba的配置,如果想让openldap server能理解samba,那么就需要添加samba的ldap schema,ldap schema就是在/etc/openldap/slapd.d/下面的schema,默认情况下是没有关于samba的schema,所以我们需要从samba服务器上拷贝到openldap服务器端。

从samba服务端上面拷贝一个samba.ldif 到openldap服务端。

# scp /usr/share/doc/samba-3.6.23/LDAP/samba.ldif  root@192.168.1.112:/etc/openldap/slapd.d/cn\=config/cn\=schema #现在192.168.1.112是我们的openldap服务器

# chown -R ldap:ldap /etc/openldap/slapd.d

# vi /etc/openldap/slapd.conf  #添加一句话

include         /etc/openldap/schema/samba.schema #在18行添加这句话

# cd /etc/openldap/slapd.d/cn\=config/cn\=schema  #观看一下目录下的命令规则,是由规律的。

# mv samba.ldif cn\=\{12\}samba.ldif  

# ll  #查看一下

总用量 92

-rw------- 1 ldap ldap  1283 11月  7 23:32 cn={0}corba.ldif

-rw------- 1 ldap ldap  3625 11月  7 23:32 cn={10}ppolicy.ldif

-rw------- 1 ldap ldap  1523 11月  7 23:32 cn={11}collective.ldif

-rw-r--r-- 1 ldap ldap 14440 11月  7 23:45 cn={12}samba.ldif  #这是我们刚才mv生成的文件

-rw------- 1 ldap ldap 15546 11月  7 23:32 cn={1}core.ldif

-rw------- 1 ldap ldap 11363 11月  7 23:32 cn={2}cosine.ldif

-rw------- 1 ldap ldap  4489 11月  7 23:32 cn={3}duaconf.ldif

-rw------- 1 ldap ldap  1693 11月  7 23:32 cn={4}dyngroup.ldif

-rw------- 1 ldap ldap  2857 11月  7 23:32 cn={5}inetorgperson.ldif

-rw------- 1 ldap ldap  2589 11月  7 23:32 cn={6}java.ldif

-rw------- 1 ldap ldap  1519 11月  7 23:32 cn={7}misc.ldif

-rw------- 1 ldap ldap  6495 11月  7 23:32 cn={8}nis.ldif

-rw------- 1 ldap ldap  1323 11月  7 23:32 cn={9}openldap.ldif


# head -3 cn={12}samba.ldif  #配置文件修改前

dn: cn=samba,cn=schema,cn=config

objectClass: olcSchemaConfig

cn: samba

# vi cn={12}samba.ldif #修改配置文件,将配置文件的头三行改成下面。

dn: cn={12}samba                  

objectClass: olcSchemaConfig

cn: cn={12}samba

# chmod 600 cn\=\{12\}samba.ldif 

# /etc/init.d/slapd restart


博文来自:www.51niux.com

三、 samba服务器端

# vi  /etc/samba/smb.conf #更改samba配置文件,将100行往后改为下面的形式

        security = user

        passdb backend = ldapsam:ldap://192.168.1.112

        ldap admin dn = "cn=Manager,dc=51niux,dc=com"

        ldap suffix = dc=51niux,dc=com

        ldap user suffix = ou=People

        ldap delete dn = no

        ldap passwd sync = yes

        ldap ssl = no 

# smbpasswd -w 123456     #ldap admin dn是可选项,如果openldap可以进行匿名访问的话,这里可以不指定admin dn。但是,如果这里指定了admin dn,那就需要使用smbpasswd -W命令指定admin dn的密码并将它写入到secrets.tdb中。

Setting stored password for "cn=Manager,dc=51niux,dc=com" in secrets.tdb #这提示说明已经记录密码入密码库

# net getlocalsid #如果之前openldap server上并没有创建samba域,也会自动创建一个samba域。如果执行net getlocalsid命令,返回“Failed to issue the StartTLS instruction: Connect error”错误代码,则在/etc/samba/smb.conf中添加“ldap ssl = no”,然后重启smb服务即可。

SID for domain SMASTER is: S-1-5-21-828920687-342064654-1223424770 #这提示说明创建成功

# /etc/init.d/smb restart #重启smb服务

# pdbedit -L  #现在查看smb,没有报错,当然也没有报错。


四、回到openldap服务端

# ldapsearch -x -b "dc=51niux,dc=com"|grep samb  #查看samba服务器端创建的smaba域已经产生了

dn: sambaDomainName=SMASTER,dc=51niux,dc=com

sambaDomainName: SMASTER

sambaSID: S-1-5-21-828920687-342064654-1223424770

sambaAlgorithmicRidBase: 1000

objectClass: sambaDomain

sambaNextUserRid: 1000

sambaMinPwdLength: 5

sambaPwdHistoryLength: 0

sambaLogonToChgPwd: 0

sambaMaxPwdAge: -1

sambaMinPwdAge: 0

sambaLockoutDuration: 30

sambaLockoutObservationWindow: 30

sambaLockoutThreshold: 0

sambaForceLogoff: -1

sambaRefuseMachinePwdChange: 0


下面就是登陆web页面,将用户添加到samba域中:这里我就用已有的用户演示了。

blob.png

blob.png

然后点击唯一的一个按钮:增加Samba 3扩展

blob.png

blob.png

然后点击左上角的保存按钮。

blob.png


博文来自:www.51niux.com

五、回到samba服务端

# pdbedit -L  #再次查看,samba里面已经有一个认证用户了。

ldaptest1:4294967295:ldaptest


六、samba 客户端测试

# mount.cifs  //192.168.1.109/smb_test1 /tmp -o username=ldaptest1%123456  #挂载成功

blob.png


七、创建新用户测试,做这个测试就是让大家注意一下。

我用ldap管理台创建了一个51niux的用户,密码为654321,samba服务器系统并未有51niux用户。

# pdbedit -L  #在samba服务器上面查看,51niux用户已经在samba域里面了。

ldaptest1:2532:ldaptest1

51niux:4294967295:51niux

#  smbclient -L 127.0.0.1 -U 51niux%654321  #但是在samba服务器上面查看却报错

params.c:Parameter() - Ignoring badly formed line in configuration file: printable yes

session setup failed: NT_STATUS_LOGON_FAILURE

# mount.cifs  //192.168.1.109/smb_test1 /tmp -o username=51niux%654321  #在客户端测试挂载,却提示没有权限         

mount error(13): Permission denied

Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)


# useradd 51niux -s /sbin/nologin  -M  #好的,那我就在samba服务器上面创建一个51niux的系统用户吧。

#  smbclient -L 127.0.0.1 -U 51niux%654321  #然后再用我ldap创建的samba用户,我擦,可以了。

params.c:Parameter() - Ignoring badly formed line in configuration file: printable yes

Domain=[SMASTER] OS=[Unix] Server=[Samba 3.6.23-36.el6_8]


        Sharename       Type      Comment

        ---------       ----      -------

        smb_test1       Disk      samba test1

        IPC$            IPC       IPC Service (Samba Server Version 3.6.23-36.el6_8)

        51niux          Disk      Home Directories

Domain=[SMASTER] OS=[Unix] Server=[Samba 3.6.23-36.el6_8]


        Server               Comment

        ---------            -------


        Workgroup            Master

        ---------            -------

# mount.cifs  //192.168.1.109/smb_test1 /tmp -o username=51niux%654321 #在客户端测试挂载

blob.png

从上图可以看出,可以挂载,可以进行读写


登录服务器端查看:

# ls -l /samba/test1  #两次挂载创建的东西都在服务器端产生了。

总用量 4

-rw------- 1 ldaptest1 ldaptest1    0 11月  8 01:08 nihao

-rw------- 1 51niux    51niux       0 11月  8 01:24 OK

drwx------ 2 ldaptest1 ldaptest1 4096 11月  8 01:09 ssh-BRbvYo2899


===================分割线======================================

成功是成功了,但是有一个问题很坑,本来我就想使用ldap的用户登录samba了,但是你系统还必须存在这个用户才可以使用,那我使用ldap统一管理的目录就达不到了啊,这个坑要填啊,好,下面我们就来填一下这个坑,如何做到系统没有ldap的用户,但依然可以使用。

那就要用到了ldap+ssh的内容了:http://www.51niux.com/?id=69

好的假设我们现在这台samba服务器的sshd的登录认证也是用了ldap认证,也就是说samba服务器ssh和samba服务都启用了ldap认证。

好的。下面我们再来测试一下:

  1. 首先我们再ldap服务器上面创建一个新的测试用户:smbtest1,密码是123456,samba域不变,操作就不写了,上面都有。

  2. 我们来查看一下我们的samba服务器有没有此用户:  

# cat /etc/passwd|grep smbtest1|wc -l  #好经过查看没有这个用户

0

3. 找一台机器挂载一下:

# mount.cifs  //192.168.1.109/smb_test1 /opt -o username=smbtest1%123456

blob.png

我靠成功了。也就是说我们用ssh+samba+ldap就可以很好的实现用户统一认证的目的而忽略掉samba要求必须samba服务器要在系统中生成一个对应的用户才允许这个用户挂在目录的目的。

#我们在samba服务器配置文件里面vaild users = test,hadoop,smbtest1,write list = hadoop,smbtest1这两个地方加上我们新 创建的用户。

#cd  /opt

# touch chenggong

blob.png

#经过测试,通过ldap创建的用户可以正常的挂载,并读写。

至此关于ldap+samba的记录告一段落。

作者:忙碌的柴少 分类:ldap 浏览:2767 评论:0
留言列表
发表评论
来宾的头像