Ubuntu Server 20.04上安装OpenLDAP和phpLDAPadmin

本文详细介绍如何在Ubuntu Server上安装并配置OpenLDAP服务及phpLDAPadmin管理界面,并介绍客户端配置及用户管理方法。


一、参考

  • https://www.techrepublic.com/article/how-to-install-openldap-and-phpldapadmin-on-ubuntu-server-20-04/
  • https://blog.csdn.net/lodianm/article/details/105386314(主要参考)
  • https://www.jianshu.com/p/e6de94d15d47

二、安装OpenLDAP和phpLDAPadmin

1. 安装OpenLDAP服务端
# 下载软件
apt-get update
apt-get install slapd ldap-utils -y

# 配置slapd
dpkg-reconfigure slapd

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 查看配置结果
slapcat

# 安装apache
apt install apache2
2. 安装phpLDAPadmin
# 安装
apt-get install phpldapadmin -y
# 配置
vim /etc/phpldapadmin/config.php
==================================================================
$servers->setValue('server','name','My LDAP Server'); # 不用改
$servers->setValue('server','host','127.0.0.1'); # 不用改
$servers->;setValue('server','base',array('dc=hive,dc=lan')); # hive和lan(hive.lan)改成你的
$servers->setValue('login','auth_type','session'); # 不用改
$servers->setValue('login','bind_id','cn=admin,dc=hive,dc=lan'); # WEB登陆界面中自动填写的用户名(cn=admin,dc=hive,dc=lan),可用//注释掉。信息可看命令slapcat的输出。
$servers->setValue('auto_number','min',array('uidNumber'=>10000,'gidNumber'=>10000)); # 改下
$config->custom->appearance['hide_template_warning'] = true; # 改下

# 关闭apache的默认界面
a2dissite 000-default.conf
systemctl restart apache2

# 登陆管理页面
http://SERVER_IP/phpldapadmin
# username形如cn=admin,dc=hive,dc=lan
# 输入你的admin password

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 添加组织单位

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 添加组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同样的方法创建一个cn=users。
在这里插入图片描述

5. 创建用户

在这里插入图片描述
在这里插入图片描述
直接填写last name就可以了——其他相关项会自动填写。
在这里插入图片描述
这里Login shell配置界面只支持/bin/sh。在Ubuntu20中/bin/sh -> dash,不是bash。
所以用户ssh登陆之后是不执行.bashrc的。这导致用户登陆后命令行提示符为$,且不支持命令行补全,不支持history,不支持颜色显示等bash特性。这时可以运行bash即可:

$ bash

或者可以修改/etc/phpldapadmin/templates/creation/posixAccount.xml

<attribute id="loginShell">
        <display>Login shell</display>
        <order>9</order>
        <page>1</page>
        <!-- <value><![CDATA[=php.PickList(/;(&(objectClass=posixAccount));loginShell;%loginShell%;;;;loginShell)]]></value> -->
        <type>select</type>
        <value id="/bin/sh">/bin/sh</value>
        <value id="/bin/csh">/bin/csh</value>
        <value id="/bin/tsh">/bin/tsh</value>
        <value id="/bin/bash">/bin/bash</value> 在这里新增/bin/bash条目
</attribute>

在这里插入图片描述
在这里插入图片描述
注意上图两个cn=test01是显示问题,刷新或者logout再login就显示正常了。
此外,可以验证用户的密码。
在这里插入图片描述
在这里插入图片描述

6. LDAP客户端配置
  • 安装客户端软件包
apt-get update
apt-get install ldap-utils libpam-ldap libnss-ldap nslcd
  • 进入设置界面
    在这里插入图片描述
    可以使用多个URI(使用空格分割)指向多台LDAP服务器,以备不测。尽量使用IP地址,防止DNS解析故障造成的问题。
    在这里插入图片描述
    在这里插入图片描述
    这里要把ldapi:///更改为ldap://ip
    相关的配置在/etc/ldap.conf文件中。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

可以使用如下方式对上述配置进行微调(optional)

英语中optional更倾向于不选择。

dpkg-reconfigure nslcd
dpkg-reconfigure ldap-auth-config
  • 配置/etc/nsswitch.conf增加ldap的认证
passwd:         files systemd ldap
group:          files systemd ldap
shadow:         files ldap
gshadow:        files ldap
  • 更新PAM配置
pam-auth-update

更新时如下选择
在这里插入图片描述
家目录中会拷贝bash的模版文件/etc/skel/

$ ls -a /etc/skel/
.  ..  .bash_logout  .bashrc  .profile
  • 重启客户端服务
systemctl restart nslcd nscd

此时使用ssh登陆一下LDAP客户端测试看看。

三、在LDAP服务器端配置用户

1. 在phpLDAPadmin界面中更改用户密码

在这里插入图片描述
然后commit即可。

2. LDIF配置文件
  • LDIF文件为何物
    http://blog.chinaunix.net/uid-30540544-id-5284844.html
    https://www.openldap.org/doc/admin24/backends.html#LDIF
  • LDIF文件格式
    http://blog.chinaunix.net/uid-30540544-id-5288795.html
    或者使用命令man ldif查看
  • 密码策略的配置
    https://www.openldap.org/doc/admin24/overlays.html#Password%20Policies
3. 在LDAP服务器端通过命令行配置用户
  • 创建包含users和groups信息的ou(organizational unit)

vim /your/path/users-ou.ldif

dn: ou=animals,dc=bee,dc=com
objectClass: organizationalUnit
objectClass: top
ou: animals

dn: ou=zoo,dc=bee,dc=com 
objectClass: organizationalUnit
objectClass: top
ou: zoo

将dc=bee,dc=com改成你domain的对应。

  • 修改SLAPD数据库的访问控制

vim /your/path/update-mdb-acl.ldif

n: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,shadowExpire
  by self write
  by anonymous auth
  by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
  by dn.exact="cn=readonly,ou=animals,dc=bee,dc=com" read
  by * none
olcAccess: to dn.exact="cn=readonly,ou=animals,dc=bee,dc=com" by
  dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none
olcAccess: to dn.subtree="dc=bee,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
  by users read
  by * none

将dc=bee,dc=com改成你domain的对应。

  • 更新LDAP数据库的访问控制列表
ldapadd -Y EXTERNAL -H ldapi:/// -f update-mdb-acl.ldif
  • 使用ou信息更新数据库
ldapadd -Y EXTERNAL -H ldapi:/// -f users-ou.ldif
  • 新增一个新用户账号
    uid就是用户名

vim /your/path/user.ldif

dn: uid=tiger,ou=animals,dc=bee,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: tiger
cn: tiger
sn: tigerman
loginShell: /bin/bash
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/tiger
shadowMax: 60
shadowMin: 1
shadowWarning: 7
shadowInactive: 7
shadowLastChange: 0

dn: cn=tiger,ou=zoo,dc=bee,dc=com
objectClass: posixGroup
cn: tiger
gidNumber: 10000
memberUid: tiger
  • 添加新用户
ldapadd -Y EXTERNAL -H ldapi:/// -f user.ldif
  • 为用户设置密码
ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=tiger,ou=animals,dc=bee,dc=com"

uid为用户名,组织单元ou改为你的,dc=bee,dc=com对应你的域名domain(bee.com)。
可以使用如下命令产生密码的哈希:

$ slappasswd
New password: 
Re-enter new password: 
{SSHA}0MP6O2gKZLeqXhCjQwTQWBtc3S3EZtoT

记录回显的哈希值。

  • 创建新用户

vim /your/path/readonly-user.ldif

dn: cn=readonly,ou=animals,dc=bee,dc=com
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: readonly
userPassword: {SSHA}0MP6O2gKZLeqXhCjQwTQWBtc3S3EZtoT
description: Bind DN user for LDAP Operations

用你记录的哈希值替换上边的{SSHA}处。

  • 添加新用户到数据库
ldapadd -Y EXTERNAL -H ldapi:/// -f readonly-user.ldif

四、使用TCP Wrappers保护LDAP服务

https://www.openldap.org/doc/admin24/security.html#TCP%20Wrappers

vim /etc/hosts.allow

slapd: 10.0.0.0/255.0.0.0 127.0.0.1 : ALLOW
slapd: ALL : DENY
<think>好的,用户想在Ubuntu Server 20.04 LTS上安装Poetry,这是一个Python的依赖管理工具。首先,我需要确认用户的需求是什么。他们可能正在管理Python项目,需要Poetry来处理依赖虚拟环境。 接下来,我需要回忆如何在Ubuntu安装Poetry。根据之前的知识,Poetry推荐使用官方脚本安装。但用户可能已经安装了Pythonpip,所以需要检查系统环境。引用[4]提到Ubuntu 20.04默认有Python 3.8.2,并且移除了Python 2,所以用户应该用的是Python 3。需要确保pip3已经安装,如果没有,可能需要先安装pip3。 步骤方面,首先更新系统包,确保所有依赖是最新的。然后安装python3-venv,因为Poetry需要虚拟环境支持。接着安装curl,用来下载安装脚本。然后使用官方提供的安装命令,通过curl下载脚本并运行。安装完成后,需要将Poetry添加到PATH,可能需要重新加载bash配置。最后验证安装是否成功,通过poetry --version查看版本。 另外,用户可能关心安装后的配置,比如镜像源加速,可以建议修改Poetry的配置使用国内镜像。同时,用户可能遇到权限问题,尤其是在全局安装时,需要注意是否需要使用sudo,但根据官方推荐,可能更建议在用户目录下安装,避免权限问题。 还需要考虑用户是否已经安装了pip,如果没有,需要指导他们先安装pip。根据引用[4],Ubuntu 20.04可能有pip3,但可能需要用apt安装python3-pip。这部分可能需要包含在预备步骤里。 可能的错误处理,比如如果curl安装脚本时报错,检查网络连接,或者尝试使用官方推荐的另一种安装方式。此外,如果用户使用的是zsh或其他shell,可能需要调整环境变量的设置,但一般情况下bash是默认的。 最后,生成相关问题,可能涉及Poetry的基本使用、配置虚拟环境、依赖管理,以及常见问题解决,比如安装失败或速度慢的问题。这些问题可以帮助用户进一步了解Poetry的使用优化。</think>### 在 Ubuntu Server 20.04 LTS 上安装 Poetry 的步骤 #### 1. 预备条件 - 确保系统已更新: ```bash sudo apt update && sudo apt upgrade -y ``` - 安装 Python 虚拟环境支持: ```bash sudo apt install python3-venv ``` 由于 Ubuntu 20.04 默认已包含 Python 3.8.2[^4],无需额外安装 Python。 #### 2. 安装 Poetry Poetry 官方推荐通过独立安装脚本完成安装: ```bash # 安装 curl(若未安装) sudo apt install curl -y # 使用官方脚本安装 Poetry curl -sSL https://install.python-poetry.org | python3 - ``` 此命令会自动将 Poetry 安装到用户目录下的 `.local/bin` 路径中[^2]。 #### 3. 配置环境变量 将 Poetry 添加到 PATH: ```bash echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc source ~/.bashrc ``` #### 4. 验证安装 ```bash poetry --version ``` 若输出类似 `Poetry (version 1.7.0)`,则说明安装成功。 --- ### 高级配置建议 - **镜像加速**:修改 Poetry 的镜像源(如清华源)以加速依赖下载: ```bash poetry config repositories.pypi https://pypi.tuna.tsinghua.edu.cn/simple/ ``` - **虚拟环境位置**:默认在项目目录创建虚拟环境,可通过以下命令改为全局集中管理: ```bash poetry config virtualenvs.in-project false ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值