《2022年使用openldap目录服务进行samba用户验证 .pdf》由会员分享,可在线阅读,更多相关《2022年使用openldap目录服务进行samba用户验证 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Samba 是 Linux 与 Windows 信息沟通的桥梁。它可使Linux 系统变成Windows 文件和打印服务器,供Linux 用户和Windows 用户共同使用。在现在Windows 和 Linux 多操作平台共存的环境下,这种技术就更显得重要,它能帮我们实现信息的跨平台交流和平台的平稳迁移。Samba 成功突破了Windows 的技术封锁,是自由软件的一面旗枳和典范。1. 安装2. 配置2.1. 服务器角色2.2. 使用 openldap 目录服务进行samba用户验证3. 小技巧Chapter 1. 安装Chapter 2. 配置Table of Contents 2.1. 服
2、务器角色2.2. 使用 openldap 目录服务进行samba用户验证Samba 的配置文件是smb.conf,如果是 debian 系统,则位于 /etc/samba目录下,如果从源码编译安装,则位于安装目录的 lib 目录下。2.1. 服务器角色Samba 3 服务器可担任主域控制器、独立域服务器和域成员服务器等角色。设置方法如下:* 主域控制器:global . . domain master = yes preferred master = yes domain logons = yes security = user . . 使用 testparm 命令测试一下:debian:#
3、testparm Load smb config files from /etc/samba/smb.conf Processing section homes Processing section printers Loaded services file OK. Server role: ROLE_DOMAIN_PDC #服务器角色为主域控制器Press enter to see a dump of your service definitions . 备份域控制器:global . . domain master = no preferred master = yes domain lo
4、gons = yes security = user . . 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 运行 testparm 测试一下:testparm Load smb config files from /etc/samba/smb.conf Processing section homes Processing section printers Loaded services file OK. Server rol
5、e: ROLE_DOMAIN_BDC #服务器角色为备份域控制器Press enter to see a dump of your service definitions * 独立服务器:global . . domain master = yes preferred master = yes domain logon = no security = user . . 再使用 testparm 命令测试一下。debian:# testparm Load smb config files from /etc/samba/smb.conf Processing section homes Proc
6、essing section printers Loaded services file OK. Server role: ROLE_STANDALONE #服务器的角色为独立服务器Press enter to see a dump of your service definitions . 域的成员服务器:global . . domain master = yes preferred master = yes domain logon = no security = domain . . 运行 testparm 测试一下:Load smb config files from /etc/sa
7、mba/smb.conf Processing section homes Processing section printers Loaded services file OK. Server role: ROLE_DOMAIN_MEMBER #服务器的角色为域成员服务器名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - Press enter to see a dump of your service definitions .
8、 2.2. 使用 openldap 目录服务进行samba用户验证samba可把用户信息存放到ldap 目录服务器上,使用目录服务器上的用户数据进行用户验证。这样做的好处是:1. 集中存放用户信息,多台Samba 服务器可共用一套用户数据。2.当用户数量多时,采用 ldap 目录服务器可加快用户验证的速度。因为 ldap 目录服务是专门为读操作而优化的,搜索数据的速度是非常快的。3.维护方便,可利用ldap 客户端进行可视化维护,如phpldapadmin 。4. 用户可自由更改自已的密码,而不用经过系统管理员,可大大减轻系统管理员的工作量。要使 samba能够使用ldap 目录服务器作为用户
9、验证的后台数据库,需在编译samba时选择了“ -with-ldapsam ”选项。在确保 samba服务器和openldap 服务器正常运行的前提下,进行以下配置。* 要 openldap 能认识samba 的用户信息,我们需在openldap 服务器中导入samba.schema。该文件是不包含在openldap 源码中的,我们可在samba源码目录中的 /examples/LDAP 路径中找到该文件。把它拷贝到openldap 的 schema目录。接着编辑slapd.conf 文件,用include 指令把 samba.schema导入 openldap。如:# Allow LDAPv
10、2 binds allow bind_v2 # This is the main slapd configuration file. See slapd.conf(5) for more # info on the configuration options. # # Global Directives: # Features to permit #allow bind_v2 # Schema and objectClass definitions include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.sche
11、ma include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/samba.schema #导入 samba.schema文件重启服务器,使配置生效。* 下来我们要配置samba服务器了。打开smb.conf 文件,添加以下内容:# You may wish to use password encryption. Please read ENCRYPTION.txt, # Win95.txt and WinNT.txt in the Sam
12、ba documentation. Do not enable this # option unless you have read those documents encrypt passwords = true ; passdb backend = smbpasswd guest #取消 smbpasswd验证名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - ldap admin dn = cn=admin,dc=com #指
13、定管理员passdb backend = ldapsam:ldap:/ldapserver #指定用户验证的ldap 目录服务器ldap user suffix = dc=samba,dc=it #用户信息存放的目录路径ldap delete dn = no #不允许删除dn ldap suffix = dc=com #指定搜索后缀* 存盘退出,重启samba 服务器。运行以下命令,把cn=admin,dc=com 管理员的密码“secret”保存到secrets.tdb文件中,以便samba服务器与openldap 服务器进行通信。debian:# smbpasswd -w secret S
14、etting stored password for cn=admin,dc=com in secrets.tdb #成功保存的提示信息* 把 Samba 用户的验证信息存放到ldap 目录服务器的方式有两种。一种是利用ldap 里已有的目录项,不用另外增加一个目录项来专门存放samba 用户验证信息,而是把samba用户的验证信息存放到目录服务器中同名的目录项。采用这种方式, sambaSamAccount 对象类型需手工维护,当用户数量大的时候就很难保证sambaSID 号码的唯一。另外一种是直接运行smbpasswd -a test命令,重新创建一个uid=test,dc=samba,d
15、c=it,dc=com 的目录项。 sambaSamAccount 对象类型会自动创建,sambaSID 号会由程序自动维护。但如果要以uid=test,dc=samba,dc=it,dc=com登录目录服务器维护samba 用户信息,则要手工添加一个simpleSecurityObject 对象类型,增加userPassword属性才行。这两种方式各有优缺点,可满足不同场合的需求。第二种方式相对简单,这里就不具体介绍。下面详细介绍一下第一种方式的配置步骤。首先,我们在ldap 目录服务器上要有一个叫“cn=test,dc=samba,dc=it,dc=com ”的目录项,且使用该dn 能正常
16、登录 ldap 目录服务器。在cn=test,dc=samba,dc=it,dc=com目录项中还要添加一个sambaSamAccount 对象类型,以便smbpasswd 程序写入samba 帐号信息。添加该对象类型时需要填两个属性,一个是sambaSID,一个是uid, sambaSID类似 Windows NT 中的 SID,它是以S 开头一串数字,由Samba 服务器的SID + UID 组成。当你的samba服务器成功连接到 ldap 目录服务器时,它已在ldap 目录服务器中自动创建一个sambaDomainName=hostname 的目录项。该目录项的 sambaSID 就是
17、Samba服务器的SID 了,类似于S-1- 5-21-3129426798-1813742091-3551573396 。UID 手动填一个即可,如 3001。每个用户的UID 都是不同的。最后的sambaSID 是 S-1-5-21-3129426798-1813742091-3551573396-3001 。* 配置完成,使用smbpasswd命令就可把用户信息保存到ldap 目录服务器上了。debian:# smbpasswd -a test New SMB password: Retype new SMB password: Added user test. #成功添加用户用 php
18、ldapadmin 以 cn=test,dc=samba,dc=it,dc=com 登录进 ldapserver 服务器,你会发现该用户添加了samba用户的验证信息。其中,uid 属性记录的是samba的用户名, sambaLMPassword 和 sambaNTPassword 两个属性分别记录了用户的加密密码资料,分别对应windows98 和 NT 两种加密方式。到此为止,使用ldap 目录服务器进行Samba用户验证已配置完成。但现在还是要管理员在samba服务器上使用smbpasswd 命令为用户维护密码。从维护工作量和保密的角度出发,由用户自已维护自已的密码是一种最好的方法。我们
19、借助 phpldapadmin 这个工具可帮我们实现该功能。具体设置方法是这样的:1.首先,在设置前,需先把phpldapadmin 安装好,具体的安装步骤请参考我网站上的openldap 学习笔记。安装好phpldapadmin 后,我们已可正常使用该工具维护目录项了。同时,通过目录服务器的权限管理,我们也可把test用户密码属性设置成只有dn 是 cn=test,dc=samba,dc=it,dc=com 的用户和目录服务器管理员才能修改。要达到该项果,请把以下ACL 加入到 slapd.conf 中。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
20、 - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - access to attrs=sambaLMPassword by dn=cn=admin,dc=com write by anonymous auth by self write by * none access to attrs=sambaNTPassword by dn=cn=admin,dc=com write by anonymous auth by self write by * none 重启 openldap 服务器使配置生效。2.要修改 samba
21、用户的密码,我们只要修改smbaLMPassword 和 sambaNTPassword 两个属性值即可,但会出错,提示修改失败,要我们去修改phpldapadmin 的 template_config.php 文件。这是因为phpldapadmin 使用了一个叫mkntpwd 的程序来生成samba的加密密码。在template_config.php 文件中设置了mkntpwd 程序的执行路径。mkntpwd程序默认是没有安装在系统中的,我们需安装它, 并把它放到在template_config.php 文件里指定的执行位置(/usr/bin/ ) 。mkntpwd 的源码包含在samba的
22、源码中,我们可进入samba的源码目下的examples/LDAP/smbldap -tools/mkntpwd目录,mkntpwd 的源码全部在这里了,运行make 命令,就可生成mkntpwd 程序。最后把mkntpwd 拷贝到/usr/bin 目录下即可。如果是debian 系统, template_config.php 文件就位于 /etc/phpldapadmin/templates 目录下。节选有关定义mkntpwd 程序路径的内容如下: . # SAMBA TEMPLATE CONFIGURATION # # - # # # # In order to use the samba
23、 templates, you might edit the following properties: # # 1 - $mkntpwdCommand : the path to the mkntpwd utility provided with/by Samba. # # 2 - $samba3_domains : the domain name and the domain sid. # # # #*/ / path 2 the mkntpwd utility (Customize) $mkntpwdCommand = /usr/bin/mkntpwd; . 3. 以cn=test,dc
24、=samba,dc=it,dc=com登 录 进 入ldap服 务 器 , 我 们 就 可 修 改smbaLMPassword和sambaNTPassword 两个属性值了。其它用户的这两个属性test 用户是看不到的。其实,不使用 phpldapadmin 来维护 samba用户密码也可以, 我们完全可以用python-ldap 配合 mkntpwd 程序自已DIY 一个用户密码管理程序。Chapter 3. 小技巧使用 tdbdump 程序可以查看samba的 tbd 格式文件。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -