OpenLDAP集中管理用户帐号学习笔记Word文档下载推荐.docx
《OpenLDAP集中管理用户帐号学习笔记Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《OpenLDAP集中管理用户帐号学习笔记Word文档下载推荐.docx(15页珍藏版)》请在冰点文库上搜索。
![OpenLDAP集中管理用户帐号学习笔记Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/9/439f9021-c6e7-4e5e-ab46-cbb99ae1b5a2/439f9021-c6e7-4e5e-ab46-cbb99ae1b5a21.gif)
local4.debug/var/log/slapd.log
#上面两行定义了ldap服务器执行的日志
accesstoattrs=shadowLastChange,userPassword
byselfwrite
by*auth
accessto*
by*read
#access行定义了谁可以访问目录中的内容。
我们希望用户可以修改自己的密码,并更新自己的shadow信息来反映密码的变化。
希望身份验证程序能够检索用户的密码。
还希望用户能够读取所有其他条目。
注意密码条目是不可读的,shadow属性的惟一用处就是管理密码的过期问题。
二、配置ldap服务器的数据库:
修改文件/etc/openldap/slapd.conf的以下行:
database
bdb
suffix
"
dc=my-domain,dc=com"
rootdn
cn=Manager,dc=my-domain,dc=com"
把my-domain改为你的“域名”,本文中并不需要真正的域名,只是ldap的一个容器,但为了ldap的其他服务,建议用你的真实域名。
这里定义了ldap的数据库和管理者。
这里还需要一个管理员密码,加入下面这行(密码111111):
rootpw{MD5}lueSGJZetyySpUndWjMBEg==
密码可以用slappasswd命令生成,slappasswd-h{MD5}
OK,ldap服务器配置完成了,可以重新启动一下ldap服务器了。
三、将用户账户信息添加到ldap数据库
RedhatEnterpriceLinux4自带了一组perl脚本来转换本地用户的信息。
相关工具也可以到
这些脚本默认位于/usr/share/openldap/migration/下
修改migrate_common.ph文件,我们的目的来说,只需要修改命名前缀的变量来使用条目的识别名就足够了,如下所示:
$DEFAULT_BASE="
然后执行:
migrate_base.pl>
base.ldif
这是创建根项,并为Hosts、Networks、Group和People等创建第一级的组织单元(OU)
编辑base.ldif,删除除下面之外的所有条目:
dn:
dc=my-domain,dc=com
dc:
my-domain
objectClass:
top
domain
ou=People,dc=my-domain,dc=com
ou:
People
organizationalUnit
ou=Group,dc=my-domain,dc=com
Group
执行:
grepldapuser/etc/group>
group.ldapuser.in
./migrate_group.plgroup.ldapuser.in>
group.ldapuser.ldif
导出ldapuser组的信息,以同样方式到处其他组的信息
grepldapuser/etc/passwd>
passwd.ldapuser.in
./migrate_passwd.plpasswd.ldapuser.in>
passwd.ldapuser.ldif
可以复制passwd文件为passwd.in后将passwd.in中系统自带的用户删除后作为脚本的输入参数,这样可以一次转换所有用户。
不建议将系统自带用户导入ldap,这样做的好处是万一在ldap认证出现问题的情况下不至于连root账户也不能登录。
做完账户信息转换后即可以导入ldap数据了,执行:
ldapadd-x-D"
-W-fbase.ldif
-W-fgroup.ldif
-W-fpasswd.ldif
这里的group.ldif和passwd.ldif对应的你的组信息和用户信息的文件,注base.ldif必须最先导入。
四、配置系统使用ldap认证系统用户
使用authconfig命令配置:
注若使用RHEL5.x或CentOS5.x则使用setup命令,然后选择“AuthenticationConfiguratio”
把以下选项选上:
UseLDAP
UseMD5Passwords
UseShadowPasswords
UseLDAPAuthentication
Localauthorizationissufficient(如果有此项)
选择下一步:
请勿选择使用TLS!
输入ldap服务器地址或主机名,若有一台以上ldap服务器则用空格隔开。
输入basedn:
dc=my-domain,dc=com(参考base.ldif文件)
将passwd、shadow、以及group文件备份后清除已经导入的用户信息,再用id命令测试一下,确认用户信息正确。
OK!
!
大功告成!
其他客户机只需执行行本文第四步即可!
注1:
若ldap服务器使用主机名,客户端必需能解析到该主机!
注2:
添加新用户可以先建立本地用户再参照本文第四步操作,加入ldap后再删除本地用户。
注3:
若用户非数据库高手,编辑用户或组信息请务必使用ldapmodify命令,本人曾使用ldapphpadmin修改ldap数据库,结果,呵呵!
注4:
(2009-02-09)在RHEL5.x和CentOS5.x上执行启动ldap服务时会报错"
bdb_db_open:
Warning-NoDB_CONFIGfilefoundindirectory/var/lib/ldap"
,该错误不影响ldap验证服务;
若一定要解决,执行以下命令即可:
cp/etc/openldap/DB_CONFIG.example/var/lib/ldap/DB_CONFIG;
chownldap:
ldap/var/lib/ldap/DB_CONFIG
更新2009-1-20
添加管理用户帐号的脚本:
文本写了一个简单的创建用户帐号的脚本方便帐号管理。
文中以中文和"
#"
开头的是注释和说明:
注,编辑脚本时别忘了把“#!
/bin/sh”放在脚本文件的首行!
#!
/bin/sh
###
Inputtheuseraccount
if["
$1"
="
"
];
then
printf"
Pleaseinputtheuseraccount:
readans1
user=$ans1
echo
\n"
else
user=$1
fi
#提示用户输入用户名赋值给变量user
makesuretheusernameisunique
existuser=`id$ans12>
/dev/null`
while["
$existuser"
!
="
]
do
echo"
user$useralreadyexist!
Pleaseinputanotherusername:
readans3
user=$ans3
done
检查输入的用户名是否唯一,如果已经存在则提示用户再次输入用户名并赋值给变量user
###addinguser
useradd-ggroup1-d/NFS/user/$user-m$user
passwd$user
#在本地文件里添加用户并设定用户密码,
#注1、这里的group1是指定默认组的组名,请自行更改
#注2、这里的/NFS/user/是从远程主机上mount过来的,用于配合automount服务并统一用户主目录使用,请自行更改
#注3、-m选项是当指定的用户主目录不存在时自动创建该目录,在大多数情况下这是默认选项,即不加该选项,系统会自动加上
sed-i"
s/\/NFS\/user\/$user/\/home\/$user/g"
/etc/passwd
cd/ldapsettings/
grep$user/etc/passwd>
newuser.in
/usr/share/openldap/migration/migrate_passwd.plnewuser.in>
newuser.ldif
ldapadd-x-D"
cn=Manager,dc=dam,dc=com"
-w1234567-f/ldapsettings/newuser.ldif
rm-f/ldapsettings/newuser.in
rm-f/ldapsettings/newuser.ldif
sed-i'
/$user\:
/d'
/etc/shadow
#修改用户的home目录,并将本地的帐号信息导入ldap数据库,删除临时文件,删除本地用户验证信息
更新2009-2-3
一直在网上找用ldap验证samba的文章。
很多,但是都需要加入域,配置很麻烦,而且,samba毕竟和windows的域有太大差别了!
下文的配置其实只是让samba读取ldap数据库来代替读取sampasswd文件,仅此而已!
本文参考了下文,做了适当修改,并在CentOS4.X和CentOS5.X上测试成功:
使用openldap目录服务进行samba用户验证
samba可把用户信息存放到ldap目录服务器上,使用目录服务器上的用户数据进行用户验证。
这样做的好处是:
1. 集中存放用户信息,多台Samba服务器可共用一套用户数据。
2. 当用户数量多时,采用ldap目录服务器可加快用户验证的速度。
因为ldap目录服务是专门为读操作而优化的,搜索数据的速度是非常快的。
3. 用户可自由更改自已的密码,而不用经过系统管理员,可大大减轻系统管理员的工作量。
一、配置ldap服务
要openldap能认识samba的用户信息,我们需在openldap服务器中导入samba.schema。
该文件是不包含在openldap源码中的,我们可在samba源码目录中的/examples/LDAP路径中找到该文件。
把它拷贝到openldap的schema目录。
接着编辑slapd.conf文件,用include指令把samba.schema导入openldap。
如:
到这里下载samba的源码包:
http:
//us1.samba.org/samba/
#Seeslapd.conf(5)fordetailsonconfigurationoptions.
#ThisfileshouldNOTbeworldreadable.
include
/etc/openldap/schema/core.schema
/etc/openldap/schema/cosine.schema
/etc/openldap/schema/inetorgperson.schema
/etc/openldap/schema/nis.schema
#include
/etc/openldap/schema/redhat/autofs.schema
/etc/openldap/schema/samba.schema
#导入samba.schema文件
#AllowLDAPv2clientconnections.
ThisisNOTthedefault.
allowbind_v2
重启ldap服务,使配置生效。
[root@linux5~]#serviceldaprestart
Stoppingslapd:
[
OK
]
Checkingconfigurationfilesforslapd:
configfiletestingsucceeded
Startingslapd:
二、配置samba服务
下来我们要配置samba服务器了。
打开smb.conf文件,添加以下内容:
#Youmaywishtousepasswordencryption.PleasereadENCRYPTION.txt,
#Win95.txtandWinNT.txtintheSambadocumentation.Donotenablethis
#optionunlessyouhavereadthosedocuments
security=user
#如果原来不是user,请改成user,因为我原来用的是share
encryptpasswords=yes
;
passdbbackend=smbpasswdguest
#取消smbpasswd验证
ldapadmindn="
#指定管理员,请参考slapd.conf文件
passdbbackend=ldapsam:
ldap:
//192.168.0.7
#指定用户验证的ldap目录服务器的IP地址或主机名
ldapusersuffix=dc=samba,dc=my-domain,dc=com
#用户信息存放的目录路径
ldapdeletedn=no
#不允许删除dn
ldapsuffix=dc=my-domain,dc=com
#指定搜索后缀
存盘退出,重启smb服务。
运行以下命令,把cn=Manager,dc=my-domain,dc=com管理员的密码“123456”保存到secrets.tdb文件中,以便samba服务器与openldap服务器进行通信。
[root@linux5~]#servicesmbrestart
ShuttingdownSMBservices:
ShuttingdownNMBservices:
StartingSMBservices:
[
StartingNMBservices:
[root@linux5~]#smbpasswd-w123456
Settingstoredpasswordfor"
insecrets.tdb
#成功保存的提示信息
千万注意!
这里的密码“123456”,就是slapd.conf文件里指定的管理员的密码!
配置完成,使用smbpasswd命令就可把用户信息保存到ldap目录服务器上了。
[root@linux5~]#smbpasswd-adwang
NewSMBpassword:
RetypenewSMBpassword:
Addeduserdwang.
#成功添加用户
三、设定ldap服务来维护samba帐号
到此为止,使用ldap目录服务器进行Samba用户验证已配置完成。
但现在还是要管理员在samba服务器上使用smbpasswd命令为用户维护密码。
从维护工作量和保密的角度出发,由用户自已维护自已的密码是一种最好的方法。
具体设置方法是这样的:
通过目录服务器的权限管理,我们也可把test用户密码属性设置成只有dn是cn=dwang,dc=samba,dc=it,dc=com的用户和目录服务器管理员才能修改。
要达到该项果,请把以下ACL加入到slapd.conf中。
accesstoattrs=sambaLMPassword
bydn="
cn=Manager,dc=newavetech,dc=com"
write
byanonymousauth
by*none
accesstoattrs=sambaNTPassword
重启openldap服务器使配置生效。
用smbpasswd命令就能修改用户的密码了,不过别忘了原始密码,否则又得劳驾管理员了!
根据密码复杂度要求,用户自己设的密码至少要有6位,以root权限执行没此要求。
(2009-02-11)
偶然发现了一款LDAP的管理工具LDAPAccountManager,主页在:
因为我使用的是CentOS5.2,直接下载rpm包安装:
ldap-account-manager-2.5.0-0.fedora.1.noarch.rpm
安装需求:
LAM是用php编写的,基于web管理。
所以apache、php是不能少的,还需要个别的rpm包稍后介绍,只要你有CentOS的光盘就无需担心。
一、安装LAM
#rpm-ivhldap-account-manager-2.5.0-0.fedora.1.noarch.rpm
安装完后在文件夹/var/www/html/下会有一个lam文件夹。
#cd/var/www/html/lam/config
#cpcpconfig.cfg_sampleconfig.cfg
#cplam.conf_sampleldapserver1.conf
说明:
1、config.cfg是LAM的通用配置文件
2、ldapserver1.conf是LAM的服务器配置文件,如果你有多台ldap服务器就需要多复制几个文件,例如:
#cplam.conf_sampl