首页 > 其他分享 >389-ds 目录服务器入门——1

389-ds 目录服务器入门——1

时间:2023-04-28 09:55:54浏览次数:53  
标签:dc 目录 实例 服务器 389 root ds localhost

0 实验环境

CPU	:龙芯3a5000
操作系统	:Loongnix Server8.4(衍生自CentOS 8.4)

1 389-ds简介

要了解389-ds,首先需要先知道几个概念。

1)389-ds中的ds是Directory Server(目录服务器) 的缩写,这里的目录指的是一种为了快速有效查找和搜索而进行了特别优化的数据库类型。存储在目录中的数据类型往往是长期存储的,并且基本上不会进行修改操作。
2)389-ds是Loongnix Server 8.4中所支持的一种目录服务器,在389-ds之前,广泛使用的目录服务器软件是openLDAP。
3)LDAP(Lightweight Directory Access Protocol/轻量级目录访问协议)。目录访问协议,也就是用来访问目录的协议。LDAP可用于用户和组管理、系统配置管理和地址管理等任务。

2 389-ds 安装

在Loongnix Server 8.4系统中,389-ds-base软件包位于AppStream仓库,且使用模块流的方式提供。模块流是从RHEL8版本开始,提供的一种全新的软件包多版本切换解决方案。

[loongson@bogon unrar]$ sudo yum module install 389-ds
[sudo] loongson 的密码:
上次元数据过期检查:0:09:03 前,执行于 2023年04月13日 星期四 21时45分11秒。
依赖关系解决。
=============================================================================================================================================================================
 软件包                                    架构                          版本                                                              仓库                         大小
=============================================================================================================================================================================
安装组/模块包:
 389-ds-base                               loongarch64                   1.4.3.16-19.0.1.module+lns8.4.0+10492+0073ae27                    appstream                   1.6 M
安装依赖关系:
 389-ds-base-libs                          loongarch64                   1.4.3.16-19.0.1.module+lns8.4.0+10492+0073ae27                    appstream                   740 k
 cyrus-sasl-md5                            loongarch64                   2.1.27-5.2.lns8                                                   baseos                       60 k
 openldap-clients                          loongarch64                   2.4.46-17.0.1.lns8                                                baseos                      194 k
 openssl-perl                              loongarch64                   1:1.1.1g-16.4.lns8                                                baseos                       79 k
 perl-Algorithm-Diff                       noarch                        1.1903-9.lns8                                                     baseos                       51 k
 perl-Archive-Tar                          noarch                        2.30-1.lns8                                                       baseos                       78 k
 perl-Compress-Raw-Bzip2                   loongarch64                   2.081-1.0.1.lns8                                                  baseos                       38 k
 perl-Compress-Raw-Zlib                    loongarch64                   2.081-1.0.1.lns8                                                  baseos                       65 k
 perl-DB_File                              loongarch64                   1.840-419.0.2.lns8                                                baseos                      124 k
 perl-IO-Compress                          noarch                        2.081-1.lns8                                                      baseos                      267 k
 perl-IO-Zlib                              noarch                        1:1.10-419.0.2.lns8                                               baseos                       79 k
 perl-Text-Diff                            noarch                        1.45-2.lns8                                                       baseos                       44 k
 python3-ldap                              loongarch64                   3.3.1-1.1.lns8                                                    appstream                   225 k
 python3-lib389                            noarch                        1.4.3.16-19.0.1.module+lns8.4.0+10492+0073ae27                    appstream                   897 k
 python3-pyasn1                            noarch                        0.3.7-6.lns8                                                      appstream                   125 k
 python3-pyasn1-modules                    noarch                        0.3.7-6.lns8                                                      appstream                   108 k
安装模块配置档案:
 389-ds/common                                                                                                                                                              
启用模块流:
 389-ds                                                                  1.4                                                                                                

事务概要
=============================================================================================================================================================================
安装  17 软件包

总下载:4.7 M
安装大小:16 M
确定吗?[y/N]:

3 和ds相关的命令

dscreate:用于创建目录服务的实例
dsctl:管理一个本地实例,需要root权限。要求你连接到正在运行目录服务器实例的终端。用于启动、停止、备份数据库,以及更多操作。
dsconf:用于管理和配置服务器的主要工具。通过其外部接口管理一个实例的配置。这允许你在实例上进行远程配置更改。
dsidm:用于身份管理(管理用户、组、密码等)。权限由访问控制授予。例如,用户可以重置自己的密码或改变自己账户的细节。

4 目录服务器实例

4.1 创建目录服务器实例

使用dscreate 命令创建本地实例,其中最简单的创建方式是使用包含了相关内容的.inf文件。.inf文件中包含了用于回答对应问题的答案(如果采用交互式方法创建,这些答案需要一个一个输入)。

4.1.1 .inf文件

关于.inf文件中合规的内容可以通过dscreate create-template命令来查看,加上--advanced选项,可以查看到更多的内容。

例如:可以使用如下命令生成一个.inf的模版文件:

[root@bogon ~]# dscreate create-template --advanced abc.inf

然后可以先打开abc.inf文件,大概浏览一下里面的内容。里面有比较详细的注释。

4.1.2 第一种方法创建目录服务器实例

一个简单的.inf文件示例:

[root@bogon ~]# more instance.inf
# /root/instance.inf
[general]
config_version = 2				(1)

[slapd]
root_password = YOUR_ADMIN_PASSWORD_HERE	(2)

[backend-userroot]
sample_entries = yes				(3)
suffix = dc=example,dc=com
[root@bogon ~]#

注意:上面的(1)、(2)、(3)标号,它们不是本该有的内容,而是我为了解释对应行的内容所添加的额外信息。
(1):这一行是必须的,它用来标明当前的inf文件所使用的是版本2的规则。
(2):为ldap用户cn=Directory Manager创建一个复杂的root_password。这个用户是用来连接(绑定)目录的。
(3):在新创建的实例中加入默认的用户和组条目。

记得修改上面文件中的root_password后面的内容,且密码长度需要大于8位。对比于abc.inf文件,此处没有给出的内容将会使用默认值。

然后你就可以使用下面的命令创建一个实例:

[root@bogon ~]# dscreate from-file instance.inf
Starting installation...
Completed installation for localhost

这样就创建了一个名为localhost的目录服务的实例。如果你想要看到更多的信息,可以加上-v参数。

4.1.2.1 查看目录服务器的状态

dsctl用于管理目录服务器的实例,可以通过它来执行重启、启动、关闭、删除、备份、查看状态等等操作。
如下:显示localhost实例的当前状态。这个命令的顺序和systemdctl查看服务状态的命令顺序有些区别,注意一下。

[root@bogon ~]# dsctl localhost status
Instance "localhost" is running

4.1.3 第二种方法创建目录服务器实例

说是第二种方法,其实也不是什么新方法,就是通过dscreate interactive命令来交互式的创建实例。这种就是比第一种写到.inf文件中的方法稍显麻烦一些。

4.2 列出有效的目录服务器实例

服务器上可以同时运行多个目录服务器实例,使用以下命令查看:

[root@bogon ~]# dsctl --list
slapd-localhost

其中--list选项可以简写为-l

4.3 删除目录服务器实例

当你不需要某个目录服务器实例时,可以删除它。使用下面的命令进行删除操作:

[root@bogon ~]# dsctl localhost remove --do-it
Removing instance ...
Completed instance removal

5 设置管理凭证

为了使管理更容易,我们可以通过一个配置来表明如何连接到目录服务器。这个配置文件就是~/.dsrc 。
对于管理一个远程实例,一个配置是:

# cat ~/.dsrc
[localhost]
uri = ldaps://<name of remote server>
basedn = dc=example,dc=com
binddn = cn=Directory Manager
# You need to copy /etc/dirsrv/slapd-localhost/ca.crt to your host for this to work.
# Then run /usr/bin/c_rehash /etc/openldap/certs
tls_cacertdir = /etc/openldap/certs/

对于管理一个本地实例,可以如下设置:

# cat ~/.dsrc
[localhost]						(1)
# Note that '/' is replaced to '%%2f'.
uri = ldapi://%%2fvar%%2frun%%2fslapd-localhost.socket	(2)
basedn = dc=example,dc=com
binddn = cn=Directory Manager

管理本地和远程实例的配置中最主要的差异是uri内容。
注意:此处内容内添加的标号(1)和(2)是用来标注对应行注释信息的,正常配置文件中不应该存在。
(1):打算操作的对应实例的名称。
(2):ldapi检测试图登录到服务器的用户的UID和GID。如果UID/GID是0/0dirsrv:dirsrv,ldapi将用户绑定为目录服务器root dn,也就是cn=Directory Manager。在URI中,/被替换成%%2f,所以在这个例子中,路径是/var/run/slapd-localhost.socket

5 添加用户和组信息

5.1 添加用户

[root@bogon ~]# dsidm localhost user create
Enter value for uid : huangyang
Enter value for cn : Huangyang
Enter value for displayName : Huangyang User
Enter value for uidNumber : 1000
Enter value for gidNumber : 1000
Enter value for homeDirectory : /home/huangyang
Successfully created huangyang

可以像上面一样通过交互式的方式创建用户,也可以通过传递参数的方式创建用户,如下所示:

[root@bogon ~]# dsidm localhost user create --uid eve --cn Eve --displayName 'Eve User' --uidNumber 1001 --gidNumber 1001 --homeDirectory /home/eve
Successfully created eve

虽然我们的命令尽力使用 "简短名称",如eve等,但LDAP的许多部分需要一个 "distinguished name"。这是目录对象的完全准确的名称,它保证是唯一的。我们可以用 get命令来查看任何类型的dn。下面显示我们查询的对象:

[root@bogon ~]# dsidm localhost user get huangyang
dn: uid=huangyang,ou=people,dc=example,dc=com
......

现在知道了dn,我们就可以为这些账户重置或修改密码。注意,我们在这里使用account子命令,它涉及到对目录的认证、账户锁定、解锁等。

[root@bogon ~]# dsidm localhost account reset_password uid=huangyang,ou=people,dc=example,dc=com
Enter new password for uid=huangyang,ou=people,dc=example,dc=com : 
CONFIRM - Enter new password for uid=huangyang,ou=people,dc=example,dc=com : 
reset password for uid=huangyang,ou=people,dc=example,dc=com

5.2 添加组

[root@bogon ~]# dsidm localhost group create
Enter value for cn : server_admins
Successfully created server_admins

将用户添加到组里面:
其中server_admins是上面刚创建的组名称,而uid=huangyang,ou=people,dc=example,dc=com是前面所创建用户的dn信息。

[root@bogon ~]# dsidm localhost group add_member server_admins uid=huangyang,ou=people,dc=example,dc=com
added member: uid=huangyang,ou=people,dc=example,dc=com

到了这里,我们有了可以认证的用户和组,并且有了分配给他们的信息。

我们可以用 ldapwhoami命令显示认证工作。其中需要输入的密码是前面通过reset_password命令给用户huangyang所设置的密码。

[root@bogon ~]# LDAPTLS_CACERT=/etc/dirsrv/slapd-localhost/ca.crt ldapwhoami -H ldaps://localhost -D uid=huangyang,ou=people,dc=example,dc=com -W -x
Enter LDAP Password: 
dn: uid=huangyang,ou=people,dc=example,dc=com

参考

1)dscreatedsctldsidm命令的man手册
2)https://www.port389.org/docs/389ds/howto/quickstart.html
3)https://access.redhat.com/documentation/zh-cn/red_hat_directory_server/11/html/administration_guide/index
4)https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-security-ldap.html

标签:dc,目录,实例,服务器,389,root,ds,localhost
From: https://www.cnblogs.com/streamlet-hy/p/17317359.html

相关文章

  • js获取服务器端时间
    平常获取时间一般都是用newDate()来获取时间,但有时不能直接这么做,因为这样得到的仅仅是客户端的时间,这个是可以随意更改的,而且也跟时区有关,不同时区得到的时间也不一样。像某些场合,比如商品优惠的时间是依据后台服务器的时间的。这里暂时有两种方法去获取:方法1:jqueryfunctiong......
  • Sql Server 2005 在建立与服务器的连接时出错。provider,error: 40
    在建立与服务器的连接时出错。在连接到SQLServer2005时,在默认的设置下SQLServer不允许进行远程连接可能会导致此失败。(provider:命名管道提供程序,error:40-无法打开到SQLServer的连接)(.NetSqlClientDataProvider) 网上找的解决办法对我的不适用下面上网......
  • #yyds干货盘点#Class 对象
    类对象支持两种操作:属性引用和实例化。属性引用 使用Python中所有属性引用所使用的标准语法: obj.name。有效的属性名称是类对象被创建时存在于类命名空间中的所有名称。因此,如果类定义是这样的:classMyClass:"""Asimpleexampleclass"""i=12345deff(s......
  • #yyds干货盘点# LeetCode程序员面试金典:外观数列
    题目:给定一个正整数n,输出外观数列的第n项。「外观数列」是一个整数序列,从数字1开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1)="1"countAndSay(n)是对countAndSay(n-1)的描述,然后转换成另一个数字字符串。前五项......
  • 配置与管理DNS服务器
    1部署DNS服务器的需求和环境。 2安装DNS服务器角色 3DNS服务器的停止和启动 4创建正向主要区域。 5创建反向主要区域。 6创建资源记录 ......
  • Linux服务器添加新硬盘无法识别
    一般来说,当我们在服务上插入新的磁盘时,服务器是会对磁盘进行识别的。但是,有的时候服务器并没有对这些新插入的磁盘进行识别。这时,我们可以通过重启服务器,来使服务器重新加载硬盘。若不想对服务器进行重启或者因为某些原因不能够重启服务器。下面介绍的就是无需重启服务器,使其识别......
  • SVN在Windows服务器下搭建及使用
    一、下载地址:https://www.visualsvn.com/server/download/ 二、安装 三、使用1)创建仓库2)新建用户3)新建用户组4)设置用户/用户组5)复制svn地址6)在浏览器中查看 四、设置网络地址按需要修改即可。绑定相应外网IP或域名后,可直接基于互......
  • FastFDS中的配置文件
    1、client.conf#connecttimeoutinseconds#defaultvalueis30sconnect_timeout=30       #连接超时 #networktimeoutinseconds#defaultvalueis30snetwork_timeout=60       #网络超时 #thebasepathtostorelogfiles......
  • Gitblit在Windows服务器下搭建及使用
    介绍Gitblit是一个纯Java库用来管理、查看和处理Git资料库。小团队用来管理代码非常合适,既满足私有库的要求,绑定域名后又可基于互联网进行管理。 一、下载官网地址:http://www.gitblit.com/ 二、安装1)配置,进入目录:“C:\Tools\gitblit-1.9.1\data”2)打开defaults.proper......
  • 恒创科技:怎么知道网站服务器有没有被攻|击?
    ​一个网站服务器遭到攻|击可能会给企业带来巨大的金融损失,因此,企业需要及时发现服务器是否被攻|击。但是,企业如何知道自己的服务器是否被攻|击呢?下面,我们来看一些服务器被攻|击的警告信号。1.网络延迟增加在网络攻|击中,攻|击者的行为会导致服务器和网络的负担增加......