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. UI中的事件系统EventSystem

    一.EventSystem简介 用于处理事件的分发和相应的系统,创建画布的同时会创建事件系统 二.UGUI实现事件系统的3种方式 1.使用组件eventTrigger(不推荐),拖动赋值 2.代码添加 ...

  2. CSS奇思妙想 -- 使用 background 创造各种美妙的背景

    本文属于 CSS 绘图技巧其中一篇,系列文章: 在 CSS 中使用三角函数绘制曲线图形及展示动画 CSS奇思妙想 -- 使用 CSS 创造艺术 将介绍一些利用 CSS 中的 background.mi ...

  3. 基于C#/Winform实现的Win8MetroLoading动画

    非常喜欢Metro风格的界面,所以想模仿一下一些UI效果的实现,网上找到了很多,但都是CSS3,WPF等实现,对于XAML和CSS3一窍不通,无奈下只有自己开始写. 下面是源码: 1 using Sy ...

  4. Codeforces Round #656 (Div. 3) B. Restore the Permutation by Merger

    题目链接:https://codeforces.com/contest/1385/problem/B 题意 有两个大小为 $n$ 的相同的排列,每次从二者或二者之一的首部取元素排入新的数组,给出这个大 ...

  5. 【uva 11082】Matrix Decompressing(图论--网络流最大流 Dinic+拆点二分图匹配)

    题意:有一个N行M列的正整数矩阵,输入N个前1~N行所有元素之和,以及M个前1~M列所有元素之和.要求找一个满足这些条件,并且矩阵中的元素都是1~20之间的正整数的矩阵.输入保证有解,而且1≤N,M≤ ...

  6. Gym - 102062A、B、C、D、E、F、G、H

    比赛链接:https://vjudge.net/contest/409725#problem 题面点此处进入 Gym - 102062A 题意: 就是说比赛一共发a+b+c+d个牌子,现在不带上主人公 ...

  7. zjnu1730 PIRAMIDA(字符串,模拟)

    Description Sample Input 6 JANJETINA 5 1 J 1 A 6 N 6 I 5 E Sample Output 1 0 2 1 1 题意:给你一个长度小于等于10^6 ...

  8. 【noi 2.6_6045】开餐馆(DP)

    题意:有N个地址,从中选一些开餐馆,要保证相邻餐馆的距离大于k.问最大利润. 解法:f[i]表示在前 i 个地址中选的最大利润. 1 #include<cstdio> 2 #include ...

  9. HDU - 4221 贪心

    题意: 你有n个任务,每一个任务有一个完成所需时间AI,和一个截止时间BI.时间从0开始,如果完成任务的时间(设这个时间为ans)大于BI那么就会收到ans-BI的惩罚,问你完成所有这些任务你会收到的 ...

  10. 郁闷的出纳员 HYSBZ - 1503

    OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的 工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资.如果他 ...