LDAP + Samba 安装配置

基础环境:Ubuntu18.04

安装samba

root@cky:~# apt install samba smbldap-tools -y

查看版本

root@cky:~# dpkg -l samba smbldap-tools
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===============================================-============================-============================-===================================================================================================
ii samba 2:4.7.6+dfsg~ubuntu-0ubuntu2 amd64 SMB/CIFS file, print, and login server for Unix
ii smbldap-tools 0.9.9-1ubuntu3 all Scripts to manage Unix and Samba accounts stored on LDAP

添加 LDAP 的 Samba 配置

为了将OpenLDAP用作Samba的后端,DIT将需要使用可以正确描述Samba数据的属性。可以通过引入Samba LDAP模式获得此类属性。

该模式位于现在安装的samba软件包中,并且已经采用ldif格式。

拷贝samba.schema samba.ldif

找不到samba.schema,从源码搞了一份(git clone https://github.com/samba-team/samba.git)

cp /usr/share/doc/samba/examples/LDAP/samba.ldif.gz /etc/ldap/schema
cp /root/cky/samba/samba-4.7.6+dfsg~ubuntu/examples/LDAP/samba.schema /etc/ldap/schema/ root@cky:/etc/ldap/schema# pwd
/etc/ldap/schema
root@cky:/etc/ldap/schema# gzip -d samba.ldif.gz

导入:

root@cky:/etc/ldap/schema# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f samba.ldif
adding new entry "cn=samba,cn=schema,cn=config"

要查询和查看此新架构:

ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config 'cn=*samba*'

既然slapd知道了Samba属性,我们就可以基于它们建立一些索引。索引条目是客户端对DIT执行筛选搜索时提高性能的一种方法。

创建samba_indices.ldif具有以下内容的文件:

root@cky:~/ldap# pwd
/root/ldap root@cky:~/ldap# cat samba_indices.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcDbIndex
olcDbIndex: objectClass eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: loginShell eq
olcDbIndex: uid,cn eq,sub
olcDbIndex: memberUid eq,sub
olcDbIndex: member,uniqueMember eq
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub,eq

使用ldapmodify实用程序加载新索引:

root@cky:~/ldap# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f samba_indices.ldif
modifying entry "olcDatabase={1}mdb,cn=config"

如果正常到现在,可以使用ldapsearch查看到新索引:

root@cky:~/ldap# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase={1}mdb olcDbIndex
dn: olcDatabase={1}mdb,cn=config
olcDbIndex: objectClass eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: loginShell eq
olcDbIndex: uid,cn eq,sub
olcDbIndex: memberUid eq,sub
olcDbIndex: member,uniqueMember eq
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub,eq

添加Samba LDAP对象

接下来,配置smbldap-tools软件包以匹配您的环境。该软件包带有一个名为smbldap-config的配置帮助程序脚本。但是,在运行它之前,您应该确定以下两个重要的配置设置/etc/samba/smb.conf

  • netbios名称:该服务器的名称。默认值从服务器的主机名派生,但被截断为15个字符。
  • workgroup:此服务器的工作组名称,或者,如果以后决定将其设置为域控制器,则为该域。

配置samba

# file : /etc/samba/smb.conf
[global]
workgroup = Company
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
security = user passdb backend = ldapsam:ldap://company02.com
ldap suffix = dc=company,dc=com
ldap user suffix = ou=Dev
ldap group suffix = ou=Group
ldap machine suffix = ou=Computers
ldap idmap suffix = ou=Idmap
ldap admin dn = cn=admin,dc=company,dc=com
ldap ssl = start tls
ldap passwd sync = yes

Note: ubuntu官方文档的 ldap ssl = start tls

但是设置该项后重启服务报ERROR:Failed to issue the StartTLS instruction: Protocol error

测试一下samba配置文件

root@cky:~/ldap# testparm -s

通过运行配置脚本来继续生成smbldap-tools配置

root@cky:~/ldap# smbldap-config

# 只有这三项进行了输入操作,别的都是直接回车
netbios name [] > Company
ldap master bind password [] > 654321
ldap slave bind password [] > 654321

使用smbldap-populate添加Samba所需的LDAP对象。它将询问您“域根”用户的密码,该用户也是LDAP中存储的“根”用户:

root@cky:~# smbldap-populate -g 10003 -u 10003 -r 10003
Populating LDAP directory for domain Company (S-1-5-21-385293779-2563394074-3374145406)
(using builtin directory structure) entry dc=company,dc=com already exist.
entry ou=Dev,dc=company,dc=com already exist.
entry ou=Groups,dc=company,dc=com already exist.
adding new entry: ou=Computers,dc=company,dc=com
adding new entry: ou=Idmap,dc=company,dc=com
adding new entry: sambaDomainName=Company,dc=company,dc=com
adding new entry: uid=root,ou=Dev,dc=company,dc=com
adding new entry: uid=nobody,ou=Dev,dc=company,dc=com
adding new entry: cn=Domain Admins,ou=Groups,dc=company,dc=com
adding new entry: cn=Domain Users,ou=Groups,dc=company,dc=com
adding new entry: cn=Domain Guests,ou=Groups,dc=company,dc=com
adding new entry: cn=Domain Computers,ou=Groups,dc=company,dc=com
adding new entry: cn=Administrators,ou=Groups,dc=company,dc=com
adding new entry: cn=Account Operators,ou=Groups,dc=company,dc=com
adding new entry: cn=Print Operators,ou=Groups,dc=company,dc=com
adding new entry: cn=Backup Operators,ou=Groups,dc=company,dc=com
adding new entry: cn=Replicators,ou=Groups,dc=company,dc=com Please provide a password for the domain root:
Changing UNIX and samba passwords for root
New password: 654321
Retype new password: 654321
New passwords don't match!

将rootDN用户的密码(在slapd软件包的安装过程中设置的密码)告知Samba:

root@cky:~# smbpasswd -W
Setting stored password for "cn=admin,dc=company,dc=com" in secrets.tdb
New SMB password: 654321
Retype new SMB password: 654321

SSSD配置

为了让LDAP用户能够连接到samba并进行身份验证的最后一步,现在需要这些用户也以“ unix”用户身份出现在系统中。

安装sssd-ldap

root@cky:~# apt -y install sssd-ldap

配置/etc/sssd/sssd.conf

[sssd]
config_file_version = 2
domains = Company [domain/Company]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldap://192.168.3.188
cache_credentials = True
ldap_search_base = dc=company,dc=com

调整权限并启动服务

root@cky:~# chmod 0600 /etc/sssd/sssd.conf
root@cky:~# chown root:root /etc/sssd/sssd.conf
root@cky:~# systemctl restart sssd

重新启动Samba服务:

root@cky:~# systemctl restart smbd.service nmbd.service

要快速测试设置,查看getent是否可以列出Samba组:

root@cky:~# getent group Replicators
root@cky:~#

有问题,查询不到用户组???一个大坑

还是认证有问题,系统中ldap的用户查不到

google+百度 良久,外带牺牲了8根秀发,经过N多尝试之后,我发现以下方法即可解决:

修改配置文件/etc/nsswitch.conf

passwd:         compat systemd sss ldap db
group: compat systemd sss ldap db
shadow: compat sss ldap db

主要就是这三项后面加了 ldapdb

安装nslcd

root@cky:~# apt install nslcd -y

修改配置文件/etc/nslcd.conf

root@cky:~# grep -Ev '^$|^[#;]' /etc/nslcd.conf
uid nslcd
gid nslcd
uri ldapi:///192.168.3.188
base dc=company,dc=com
ldap_version 3
binddn cn=admin,dc=company,dc=com
bindpw 654321
ssl off
tls_cacertfile /etc/ssl/certs/ca-certificates.crt

重启nslcd服务

root@cky:~# systemctl restart nslcd
root@cky:~# systemctl enable nslcd
nslcd.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nslcd

重启slapd服务

root@cky:~# systemctl restart slapd

再次查询

root@cky:~# getent group Replicators
Replicators:*:552:

所以我也不知道是我看的不够全,还是官方文档的缺失,此处再次diss一下Ubuntu官方文档

使用smbldap-tools管理用户、组和计算机账户

启用自动主目录创建:

root@cky:~# pam-auth-update --enable mkhomedir

要添加具有主目录的新用户:

root@cky:~# smbldap-useradd -a -P -m ldap_user01
Changing UNIX and samba passwords for ldap_user01
New password: 111111
Retype new password: 111111

查一下ldap中的用户

root@cky:~# ldapsearch -x -b "uid=ldap_user01,ou=Dev,dc=company,dc=com"

看一下home目录

root@cky:~# ls /home
cky ldap_user01

使用getent查询一下用户

root@cky:~# getent passwd ldap_user01
ldap_user01:x:10003:513:System User:/home/ldap_user01:/bin/bash

LDAP + Samba 安装配置流程的更多相关文章

  1. 03_ubuntu samba 安装配置

    03_ubuntu samba 安装配置 安装samba sudo apt install samba 修改samba配置文件 sudo vim /etc/samba/smb.conf [share] ...

  2. Samba安装配置

    Samba简介 Samba官网:http://www.samba.orgSMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不 ...

  3. Oracle安装配置流程

    Oracle安装流程 第一次自己动手安装oracle,之前对oracle安装配置一窍不通,最后最终弄好.总结下. 1.  安装oracle10gserver端 2.  安装oracle10gclien ...

  4. Ubantu 16.4 samba安装配置

    本文总结了Ubantu 16.04 环境下的samba安装.配置及使用.本文为原创,也是我的第一篇博客,以后会经常写博客,记录自己的学习.总结及研究,让博客见证着我成长的轨迹. 下文中的所有命令均使用 ...

  5. Icingaweb2监控oracle数据库的安装配置流程

    Icinga2安装配置check_oracle_health流程 1.安装 由于check_oracle_health是使用perl语言编写的,因此在安装该插件之前,首先要安装oracle的客户端实例 ...

  6. 完整的 LDAP + phpLDAPadmin安装部署流程 (ubuntu18.04)

    LDAP 安装部署以及基础使用 因工作需求需要使用ldap管理用户权限,在踩了一系列坑之后,总结了一些流畅的文档,希望可以帮到和曾经的我一样迷茫的人. 基础环境:Ubuntu 18.04 一.安装 r ...

  7. SharePoint 2016 安装配置流程及需要注意的地方

    1. 安装域, 安装后创建一个用户用于之后的安装配置, 例如 SPAdmin@XXXXX.com 2. 安装sql server 2016 将要安装sql server 的服务器加入域,   并将域账 ...

  8. Y1S001 ubuntu下samba安装配置以及使用vbs映射到驱动器

    我这边安装samba只用了两步 第一步 sudo apt-get install samba 第二步 sudo vi /etc/samba/smb.conf 主要修改点如下,去掉注释或者修改=右边的值 ...

  9. redhat samba安装配置

    突然想要用,好久没配过这玩意了,再次配置一次,记录一下过程. 1.挂载镜像      mount -o loop ~/Desktop/RHEL_5.5\ i386\ DV.iso /mnt       ...

随机推荐

  1. Selenium爬虫实践(踩坑记录)之ajax请求抓包、浏览器退出

    上一篇: 使用Selenium截取网页上的图片 前言 最近在搞公司内部系统,累的一批,需要从另一个内部系统导出数据存到数据库做分析,有大量的数据采集工作,又没办法去直接拿到那个系统的接口,太难了,只能 ...

  2. markdown编辑器typora本地图片上传到自己的服务器

    typora是windows平台下最受欢迎的markdown书写工具和查看工具,本篇文章将会介绍如何在typora平台使用java脚本程序自动上传本地图片到自己的服务器,从而让markdown文章中的 ...

  3. 关于RabbitMQ的简单理解

    说明:想要理解RabbitMQ,需要先理解MQ是什么?能做什么?然后根据基础知识去理解RabbitMQ是什么.提供了什么功能. 一.MQ的简单理解 1. 什么是MQ? 消息队列(Message Que ...

  4. Java数组模拟队列 + 优化

    队列介绍 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则. 即:先存入队列的数据,要先取出.后存入的要后取出 示意图:(使用数组模拟队列示意图)  数组模拟队列 队列本身是有序列表 ...

  5. The Preliminary Contest for ICPC Asia Shanghai 2019 F. Rhyme scheme(dp)

     题意:给你一个n和k 要你找到长度为n 字典序第k小的字符串 定义一个字符串合法:第i的字符的范围只能是前i-1个字符中的最大值+1 思路:我们dp[n][i][j]表示长度为n 在第i位 最大值为 ...

  6. Codeforces Round #644 (Div. 3) D. Buying Shovels (数学)

    题意:商店里有\(k\)个包裹,第\(i\)个包裹中含有\(i\)个物品,现在想要买\(n\)物品,你可以选择某一个包裹购买任意次,使得物品数刚好等于\(n\),求最少的购买次数. 题解:首先,假如\ ...

  7. 二叉树增删改查 && 程序实现

    二叉排序树定义 一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值:(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值:(3)左.右子树也 ...

  8. 一、Python简介及下载安装

    一.关于Python Python是目前比较受欢迎的脚本语言之一,具有简洁性.易读性以及可扩展性的特点. Python与Java均可以写网页,也可以写后台功能,区别是Python执行效率低,开发效率高 ...

  9. centos 7下安装配置Supervisor

    1.安装Supervisor centos下安装yum install supervisor 2. systemctl enable supervisord 开机自启 systemctl start ...

  10. WPF 无法对元素“TextBox”设置 Name 特性值“TB2”

    错误信息 无法对元素"TextBox"设置 Name 特性值"TB2"."TextBox"在元素"UserControl1&quo ...