Centos7+OPENLDAP+SAMBA配置

本文旨在测试客户端访问samba服务器时,通过ldap进行用户的认证。用户访问samba权限则通过samba本身控制。

环境

Ldap服务器:centos7 系统  IP :   192.168.0.8 主机名:ldapnode Samba服务器:centos7 系统  IP:  192.168.0.63 主机名:node3 服务器均关闭防火墙以及selinux

安装LDAP

配置epel源

[root@ldapnode ~]# cat /etc/yum.repos.d/epel.repo [epel] name=aliyun epel baseurl=http://mirrors.aliyun.com/epel/7Server/x86_64/ gpgcheck=0 [root@ldapnode ~]#

安装ldap samba

[root@ldapnode ~]# yum install -y openldap-servers openldap-clients migrationtools samba-common samba samba-client 确保安装无误。 [root@ldapnode ~]# rpm -qa|grep ldap compat-openldap-2.3.43-5.el7.x86_64 openldap-clients-2.4.40-13.el7.x86_64 openldap-2.4.40-13.el7.x86_64 openldap-servers-2.4.40-13.el7.x86_64 [root@ldapnode ~]# rpm -qa|grep samba samba-common-libs-4.4.4-12.el7_3.x86_64 samba-common-tools-4.4.4-12.el7_3.x86_64 samba-client-4.4.4-12.el7_3.x86_64 samba-common-4.4.4-12.el7_3.noarch samba-client-libs-4.4.4-12.el7_3.x86_64 samba-libs-4.4.4-12.el7_3.x86_64 samba-4.4.4-12.el7_3.x86_64 [root@ldapnode ~]#

配置时间同步

[root@ldapnode ~]# ntpdate pool.ntp.org 20 Jan 11:44:37 ntpdate[16342]: step time server 173.255.215.209 offset -28801.403434 sec

配置LDAP

生成LDAP管理员密码

[root@ldapnode ~]# slappasswd New password: Re-enter new password: {SSHA}OONP2dL3kkukflJIDp4gepGR2EdfD0fN [root@ldapnode ~]# 此处我自己设置的为123456,自定义。

拷贝数据库文件

[root@ldapnode ~]# ls /var/lib/ldap/ [root@ldapnode ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG [root@ldapnode ~]# chown ldap:ldap /var/lib/ldap/DB_CONFIG [root@ldapnode ~]# ls /var/lib/ldap/ DB_CONFIG [root@ldapnode ~]#

修改ldap配置

因centos7操作系统较centos6在ldap的配置上变化很大,而我不熟悉centos7的配置。故先拷贝centos6的配置文件,进行相关samba方面的配置修改。然后通过slaptest命令进行格式转换。 下面为配置文件存放在/root下 [root@node2 ~]# cat slapd.conf # # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. #   include               /etc/openldap/schema/corba.schema include               /etc/openldap/schema/core.schema include               /etc/openldap/schema/cosine.schema include               /etc/openldap/schema/duaconf.schema include               /etc/openldap/schema/dyngroup.schema include               /etc/openldap/schema/inetorgperson.schema include               /etc/openldap/schema/java.schema include               /etc/openldap/schema/misc.schema include               /etc/openldap/schema/nis.schema include               /etc/openldap/schema/openldap.schema include               /etc/openldap/schema/ppolicy.schema include               /etc/openldap/schema/collective.schema include         /etc/openldap/schema/samba.schema   # Allow LDAPv2 client connections.  This is NOT the default. allow bind_v2   # Do not enable referrals until AFTER you have a working directory # service AND an understanding of referrals. #referral  ldap://root.openldap.org   pidfile                 /var/run/openldap/slapd.pid argsfile     /var/run/openldap/slapd.args   # Load dynamic backend modules # - modulepath is architecture dependent value (32/64-bit system) # - back_sql.la overlay requires openldap-server-sql package # - dyngroup.la and dynlist.la cannot be used at the same time   # modulepath /usr/lib/openldap # modulepath /usr/lib64/openldap   # moduleload accesslog.la # moduleload auditlog.la # moduleload back_sql.la # moduleload chain.la # moduleload collect.la # moduleload constraint.la # moduleload dds.la # moduleload deref.la # moduleload dyngroup.la # moduleload dynlist.la # moduleload memberof.la # moduleload pbind.la # moduleload pcache.la # moduleload ppolicy.la # moduleload refint.la # moduleload retcode.la # moduleload rwm.la # moduleload seqmod.la # moduleload smbk5pwd.la # moduleload sssvlv.la # moduleload syncprov.la # moduleload translucent.la # moduleload unique.la # moduleload valsort.la   # The next three lines allow use of TLS for encrypting connections using a # dummy test certificate which you can generate by running # /usr/libexec/openldap/generate-server-cert.sh. Your client software may balk # at self-signed certificates, however. TLSCACertificatePath /etc/openldap/certs TLSCertificateFile "\"OpenLDAP Server\"" TLSCertificateKeyFile /etc/openldap/certs/password   # Sample security restrictions #       Require integrity protection (prevent hijacking) #       Require 112-bit (3DES or better) encryption for updates #       Require 63-bit encryption for simple bind # security ssf=1 update_ssf=112 simple_bind=64   # Sample access control policy: #       Root DSE: allow anyone to read it #       Subschema (sub)entry DSE: allow anyone to read it #       Other DSEs: #                Allow self write access #                Allow authenticated users read access #                Allow anonymous users to authenticate #       Directives needed to implement policy: # access to dn.base="" by * read # access to dn.base="cn=Subschema" by * read # access to * #       by self write #       by users read #       by anonymous auth # # if no access controls are present, the default policy # allows anyone and everyone to read anything but restricts # updates to rootdn.  (e.g., "access to * by * read") # # rootdn can always read and write EVERYTHING!   # enable on-the-fly configuration (cn=config) #database config #access to * #       by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage #       by * none   # enable server status monitoring (cn=monitor) database monitor access to * by dn.exact="cn=Manager,dc=example,dc=com" read by * none access to attrs=userPassword by self write by anonymous auth by * none access to attrs=sambaNTPassword by self write by anonymous auth by * none access to * by self write by * read ####################################################################### # database definitions #######################################################################   database bdb suffix                  "dc=example,dc=com" checkpoint        1024 15 rootdn               "cn=Manager,dc=example,dc=com" # Cleartext passwords, especially for the rootdn, should # be avoided.  See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. # rootpw           secret rootpw                        {SSHA}OONP2dL3kkukflJIDp4gepGR2EdfD0fN     # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory  /var/lib/ldap   # Indices to maintain for this database index objectClass                       eq,pres index ou,cn,mail,surname,givenname      eq,pres,sub,approx index uidNumber,gidNumber,loginShell    eq,pres index uid,memberUid                     eq,pres,sub index nisMapName,nisMapEntry            eq,pres,sub   # Replicas of this database #replogfile /var/lib/ldap/openldap-master-replog #replica host=ldap-1.example.com:389 starttls=critical #     bindmethod=sasl saslmech=GSSAPI #     authcId=host/ldap-master.example.com@EXAMPLE.COM 红色地方为在原有基础上进行的修改调整,其中rootpw为之前生成的ldap管理员密码。Ldap管理员目录为cn=Manager,dc=example,dc=com

删除原有ldap默认配置

[root@ldapnode ~]# rm -rf /etc/openldap/slapd.d/*

生成新配置

[root@ldapnode ~]# cd /etc/openldap/slapd.d/ [root@ldapnode slapd.d]# ll total 0 [root@ldapnode slapd.d]# slaptest -f /root/slapd.conf -F /etc/openldap/slapd.d/ 58818b6f bdb_db_open: database "dc=example,dc=com": db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2). 58818b6f backend_startup_one (type=bdb, suffix="dc=example,dc=com"): bi_db_open failed! (2) slap_startup failed (test would succeed using the -u switch) [root@ldapnode slapd.d]# ll total 8 drwxr-x--- 3 root root 4096 Jan 20 12:00 cn=config -rw------- 1 root root 1251 Jan 20 12:00 cn=config.ldif 修改属组 [root@ldapnode slapd.d]# chown -R ldap:ldap /etc/openldap/slapd.d/

创建ldap数据库文件

[root@ldapnode ~]# cat base.ldif dn: dc=example,dc=com objectClass: organization objectClass: dcObject dc: example o: example   dn: cn=Manager,dc=example,dc=com objectClass: organizationalRole cn: Manager description: Directory Manager   dn: ou=People,dc=example,dc=com objectClass: organizationalUnit ou: People   dn: ou=group,dc=example,dc=com objectClass: organizationalUnit ou: group

创建用户和组并生成相关配置文件

创建4个用户分别为user1-4 创建2个组分别为test1,test2。将user1,user2加入到组test1,将user3,user4加入到组test2. [root@ldapnode ~]# groupadd test1 [root@ldapnode ~]# groupadd test2 [root@ldapnode ~]# useradd user1 -g test1 [root@ldapnode ~]# useradd user2 -g test1 [root@ldapnode ~]# useradd user3 -g test2 [root@ldapnode ~]# useradd user4 -g test2 [root@ldapnode ~]# id user1 uid=1000(user1) gid=1000(test1) groups=1000(test1) [root@ldapnode ~]# id user2 uid=1001(user2) gid=1000(test1) groups=1000(test1) [root@ldapnode ~]# id user3 uid=1002(user3) gid=1001(test2) groups=1001(test2) [root@ldapnode ~]# id user4 uid=1003(user4) gid=1001(test2) groups=1001(test2) [root@ldapnode ~]#   生成用户跟组初始化文件 [root@ldapnode ~]# grep ":10[0-9][0-9]" /etc/passwd > /root/passwd [root@ldapnode ~]# grep ":10[0-9][0-9]" /etc/group > /root/group [root@ldapnode ~]# cat passwd user1:x:1000:1000::/home/user1:/bin/bash user2:x:1001:1000::/home/user2:/bin/bash user3:x:1002:1001::/home/user3:/bin/bash user4:x:1003:1001::/home/user4:/bin/bash [root@ldapnode ~]# cat group test1:x:1000: test2:x:1001:

编辑migrationtools配置文件

[root@ldapnode ~]# vi /usr/share/migrationtools/migrate_common.ph 第71行修改domain信息 70 # Default DNS domain 71 $DEFAULT_MAIL_DOMAIN = "example.com"; 72 73 # Default base 74 $DEFAULT_BASE = "dc=example,dc=com";

将用户跟组文件导入到ldif文件中

[root@ldapnode ~]# /usr/share/migrationtools/migrate_passwd.pl passwd user.ldif [root@ldapnode ~]# /usr/share/migrationtools/migrate_group.pl group group.ldif

将基础数据导入到LDAP中

将以上生成的base.ldif user.ldif group.ldif导入到LDAP中 修改权限并启动ldap [root@ldapnode ldap]# chown -R ldap:ldap /var/lib/ldap/ [root@ldapnode ldap]# systemctl start slapd 确定启动OK [root@ldapnode ~]# ldapadd -x -W -D "cn=Manager,dc=example,dc=com" -f base.ldif Enter LDAP Password: adding new entry "dc=example,dc=com"   adding new entry "cn=Manager,dc=example,dc=com"   adding new entry "ou=People,dc=example,dc=com"   adding new entry "ou=group,dc=example,dc=com"   [root@ldapnode ~]# ldapadd -x -W -D "cn=Manager,dc=example,dc=com" -f user.ldif Enter LDAP Password: adding new entry "uid=user1,ou=People,dc=example,dc=com"   adding new entry "uid=user2,ou=People,dc=example,dc=com"   adding new entry "uid=user3,ou=People,dc=example,dc=com"   adding new entry "uid=user4,ou=People,dc=example,dc=com"   [root@ldapnode ~]# ldapadd -x -W -D "cn=Manager,dc=example,dc=com" -f group.ldif Enter LDAP Password: adding new entry "cn=test1,ou=Group,dc=example,dc=com"   adding new entry "cn=test2,ou=Group,dc=example,dc=com"   [root@ldapnode ~]# 确认 [root@ldapnode ~]# ldapsearch -x -b "dc=example,dc=com"  "(objectclass=*)" 省略返回

安装phpadmin

[root@ldapnode ~]# yum install -y httpd php php-mbstring php-pear [root@ldapnode ~]# yum --enablerepo=epel -y install phpldapadmin [root@ldapnode ~]# vi /etc/httpd/conf/httpd.conf 151     AllowOverride all 156     Require all granted 157 </Directory> 163 <IfModule dir_module> 164     DirectoryIndex index.html index.cgi index.php 165 </IfModule> [root@ldapnode ~]# vi /etc/phpldapadmin/config.php 397  $servers->setValue('login','attr','dn'); 398 //$servers->setValue('login','attr','uid');   [root@ldapnode ~]# vi /etc/httpd/conf.d/phpldapadmin.conf Alias /phpldapadmin /usr/share/phpldapadmin/htdocs Alias /ldapadmin /usr/share/phpldapadmin/htdocs   <Directory /usr/share/phpldapadmin/htdocs> <IfModule mod_authz_core.c> # Apache 2.4 Require local Require ip 192.168.0.0/24 </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory>   启动httpd [root@ldapnode ~]# systemctl start httpd Web浏览器登入 http://192.168.0.8/ldapamin Dn : cn=manager,dc=example,dc=com 密码:123456 创建条目的时候能看到samba:domain 既为已支持samba。

安装配置samba服务器

root@node3 ~]# yum -y install samba-common samba samba-client

配置samba

[root@node3 b]# cat /etc/samba/smb.conf [global] workgroup = WORKGROUP server string = Samba-ldap Server Version %v netbios name = samba-ldapsam log file = /var/log/samba/log.%m max log size = 50 security = user passdb backend = ldapsam:ldap://192.168.0.8/ ldap suffix = "dc=example,dc=com" ldap admin dn = "cn=Manager,dc=example,dc=com" ldap user suffix = "ou=People,dc=example,dc=com" ldap group suffix = "ou=group,dc=example,dc=com" ldap delete dn = no ldap passwd sync = yes ldap ssl = no   [myshare-a] comment = share for users path = /ceshi/a browseable = yes public = no writable = yes   [myshare-b] comment = share for users path = /ceshi/b browseable = yes public = no writable = yes

启动samba服务

[root@node3 b]# systemctl start smb

保存ldap密码到samba中

提示:为了使samba能够访问ldap,把ldap管理员的密码保存到samba的secrets.tdb中(/var/lib/samba/private/secrets.tdb) [root@node3 b]# smbpasswd -w 123456 Setting stored password for "cn=Manager,dc=example,dc=com" in secrets.tdb [root@node3 b]#

设置samba服务器从ldap认证

[root@node3 ~]# authconfig-tui

验证用户

[root@node3 ~]# id user1 uid=1000(user1) gid=1000(test1) groups=1000(test1) [root@node3 ~]# id user2 uid=1001(user2) gid=1000(test1) groups=1000(test1) [root@node3 ~]# id user3 uid=1002(user3) gid=1001(test2) groups=1001(test2) [root@node3 ~]# id user4 uid=1003(abc) gid=1003(abc) groups=1003(abc) [root@node3 ~]# cat /etc/passwd |grep user1 [root@node3 ~]# 可以看到本地不存在的用户但是能显示,则通过LDAP认证的用户。

web刷新

点击刷新按钮 能看到samba条目

验证

设置域用户的samba密码 [root@node3 ~]# smbpasswd -a user1 New SMB password: Retype new SMB password: Added user user1. [root@node3 ~]# smbpasswd -a user2 New SMB password: Retype new SMB password: Added user user2. [root@node3 ~]# smbpasswd -a user3 New SMB password: Retype new SMB password: Added user user3. [root@node3 ~]# smbpasswd -a user4 New SMB password: Retype new SMB password: Added user user4. [root@node3 ~]# 均为123456   Linux 客户端测试 [root@node2 ~]# smbclient -U user1 //192.168.0.63/myshare-a Enter user1's password: Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.4.4] smb: \> ls .                                   D        0  Fri Jan 20 13:17:18 2017 ..                                  D        0  Thu Jan 19 14:47:33 2017   18655232 blocks of size 1024. 17162180 blocks available smb: \> windows客户端测试

posted on 2017-01-20 14:15  歪歪121  阅读(1095)  评论(0)    收藏  举报