Centos6.4 smaba+openldap
前面一章讲了openldap与svn集合做做统一认证,这篇博文就讲一下openldap结合smaba的统一认证,smaba就写一下简单配置,像svn,samba和后面的服务都会单开博文做详细说明。
samba的详细记录博客地址:https://blog.51niux.com/?id=66
一、samba服务器的配置
为了使samba server能够使用openldap认证,必须要在/etc/nsswith.conf文件中配置使用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域中:这里我就用已有的用户演示了。
然后点击唯一的一个按钮:增加Samba 3扩展
然后点击左上角的保存按钮。
博文来自:www.51niux.com
五、回到samba服务端
# pdbedit -L #再次查看,samba里面已经有一个认证用户了。
ldaptest1:4294967295:ldaptest
六、samba 客户端测试
# mount.cifs //192.168.1.109/smb_test1 /tmp -o username=ldaptest1%123456 #挂载成功
七、创建新用户测试,做这个测试就是让大家注意一下。
我用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 #在客户端测试挂载
从上图可以看出,可以挂载,可以进行读写
登录服务器端查看:
# 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的内容了:https://blog.51niux.com/?id=69
好的假设我们现在这台samba服务器的sshd的登录认证也是用了ldap认证,也就是说samba服务器ssh和samba服务都启用了ldap认证。
好的。下面我们再来测试一下:
首先我们再ldap服务器上面创建一个新的测试用户:smbtest1,密码是123456,samba域不变,操作就不写了,上面都有。
我们来查看一下我们的samba服务器有没有此用户:
# cat /etc/passwd|grep smbtest1|wc -l #好经过查看没有这个用户
0
3. 找一台机器挂载一下:
# mount.cifs //192.168.1.109/smb_test1 /opt -o username=smbtest1%123456
我靠成功了。也就是说我们用ssh+samba+ldap就可以很好的实现用户统一认证的目的而忽略掉samba要求必须samba服务器要在系统中生成一个对应的用户才允许这个用户挂在目录的目的。
#我们在samba服务器配置文件里面vaild users = test,hadoop,smbtest1,write list = hadoop,smbtest1这两个地方加上我们新 创建的用户。
#cd /opt
# touch chenggong
#经过测试,通过ldap创建的用户可以正常的挂载,并读写。
至此关于ldap+samba的记录告一段落。