57、Linux LDAP 与 CUPS 系统使用指南

Linux LDAP 与 CUPS 系统使用指南

1. LDAP 服务管理

在 Linux 系统中,LDAP(Lightweight Directory Access Protocol)服务的管理是一项重要任务。若发现 LDAP 服务已在运行,可使用 systemctl 命令重启服务:

[root@fedora-server ~]# systemctl restart slapd

在某些 Linux 发行版中,启动 LDAP 服务时可能会出现 /var/lib/ldap 目录下 DB_CONFIG 文件不存在的警告。可通过复制发行版自带的示例文件来解决:

# cp /usr/share/openldap-servers/DB_CONFIG.example  /var/lib/ldap/DB_CONFIG

若希望 slapd 服务在系统重启后自动启动,可使用以下命令:

[root@fedora-server ~]# systemctl enable slapd

此外,要确保 LDAP 服务端口能通过主机或网络防火墙,以让服务能正常服务网络中的客户端。在基于 Red Hat 的发行版(如 Fedora)中,可使用 firewalld 永久打开 LDAP 服务端口:

# firewall-cmd --add-service=ldap --add-service=ldaps  --permanent
# firewall-cmd --reload
2. OpenLDAP 客户端配置

在 LDAP 环境中,客户端的概念需要一定时间来理解。几乎任何系统资源或进程都可以是 LDAP 客户端,且不同客户端组有各自的配置文件,通常名为 ldap.conf ,但存储位置不同。常见位置有 /etc/openldap/ /etc/ 目录。使用 OpenLDAP 库的客户端应用(如 ldapadd ldapsearch Sendmail Evolution )会使用 /etc/openldap/ldap.conf 文件; nss_ldap 库则使用 /etc/ldap.conf 文件。

配置 OpenLDAP 客户端工具的 ldap.conf 文件时,可修改其中的 BASE 指令:

# 将
# BASE dc=example,dc=com
# 修改为
BASE dc=example,dc=org

若从非服务器主机使用客户端工具,可能需要将 HOST 指令设置为远程 LDAP 服务器的 IP 地址。但在 LDAP 服务器上直接使用客户端时, HOST 127.0.0.1 即可。在较新的 OpenLDAP 版本中, HOST 指令已被 URI 指令替代。

3. 创建目录条目

LDAP 使用 LDAP 数据交换格式(LDIF)以文本形式表示目录条目。LDIF 文件格式如下:

dn: <distinguished name>
<attribute_description>: <attribute_value>
<attribute_description>: <attribute_value>

dn: <yet another distinguished name>
<attribute_description>: <attribute_value>
<attribute_description>: <attribute_value>
...

使用 LDIF 文件时需注意:
- 同一 LDIF 文件中的多个条目用空行分隔。
- 以 # 开头的条目为注释,会被忽略。
- 跨多行的条目,下一行以单个空格或制表符开头继续。
- 每个条目中冒号 : 后的空格很重要。

下面使用一个示例 LDIF 文件填充新目录:
1. 使用文本编辑器输入以下内容到文件中:

dn: dc=example,dc=org
objectclass: dcObject
objectclass: organization
o: Example inc.
dc: example

dn: cn=bogus,dc=example,dc=org
objectclass: organizationalRole
cn: bogus

dn: cn=testuser,dc=example,dc=org
objectclass: organizationalRole
cn: testuser
  1. 将文件保存为 sample.ldif 并退出编辑器。
  2. 使用 ldapadd 工具将 sample.ldif 文件导入 OpenLDAP 目录:
[root@server ~]# ldapadd -x -D "cn=manager,dc=example,dc=org" -W -f sample.ldif

此命令参数说明如下:
| 参数 | 说明 |
| — | — |
| -x | 使用简单认证而非 SASL |
| -D | 指定绑定到 LDAP 目录的区别名 |
| -W | 提示输入简单认证密码 |
| -f | 指定读取 LDIF 文件的路径 |
4. 输入之前使用 slappasswd 工具创建的密码,示例中为 “test”。

4. 目录搜索、查询和修改

使用 OpenLDAP 客户端工具检索和修改目录信息:
1. 使用 ldapsearch 工具搜索数据库目录中的所有条目:

[root@server ~]# ldapsearch -x -b 'dc=example,dc=org' '(objectclass=*)'
  1. 再次搜索,不指定 -b 选项并使输出不那么详细:
[root@server ~]# ldapsearch -x -LLL '(objectclass=*)'

由于 /etc/openldap/ldap.conf 文件中已定义 basedn ,因此无需显式指定。
3. 缩小查询范围,仅搜索通用名( cn )为 bogus 的条目:

[root@server ~]# ldapsearch -x -LLL -b 'dc=example,dc=org' '(cn=bogus)'
  1. 使用 ldapdelete 工具删除 cn=bogus,dc=example,dc=org 的条目:
[root@server ~]# ldapdelete -x -W -D 'cn=Manager,dc=example,dc=org' 'cn=bogus,dc=example,dc=org'

输入 cn=Manager,dc=example,dc=org 的密码完成操作。
5. 再次使用 ldapsearch 工具确认条目已被删除:

[root@server ~]# ldapsearch -x -LLL -b 'dc=example,dc=org'  '(cn=bogus)'

此命令应无输出。

5. 使用 OpenLDAP 进行用户认证

可使用 OpenLDAP 服务器管理 Linux 用户账户,以下是配置步骤:

5.1 服务器配置
  1. 安装提供迁移脚本的软件包:
[root@fedora-server ~]# dnf -y install migrationtools

此命令会安装 /usr/share/migrationtools/migrate_common.ph 文件。
2. 编辑 migrate_common.ph 文件,修改以下变量:

# 将
$DEFAULT_MAIL_DOMAIN = "padl.com";
$DEFAULT_BASE = "dc=padl,dc=com";
# 修改为
$DEFAULT_MAIL_DOMAIN = "example.org";
$DEFAULT_BASE = "dc=example,dc=org";
  1. 使用 migrate_base.pl 脚本创建目录的基础结构:
[root@fedora-server ~]# cd /usr/share/migrationtools/
[root@fedora-server migrationtools]# ./migrate_base.pl > ~/base.ldif
  1. 确保 slapd 服务正在运行,然后将 base.ldif 文件中的条目导入 OpenLDAP 目录:
[root@fedora-server migrationtools]# ldapadd -c -x -D "cn=manager,dc=example,dc=org" -W -f ~/base.ldif
  1. 导出系统 /etc/passwd 文件中的当前用户到 LDIF 文件:
[root@fedora-server migrationtools]# ./migrate_passwd.pl /etc/passwd > ~/ldap-users.ldif
  1. ldap-users.ldif 文件中的用户条目导入 OpenLDAP 数据库:
[root@fedora-server migrationtools]# ldapadd -x -D "cn=manager,dc=example,dc=org" -W -f ~/ldap-users.ldif

输入 rootdn 的密码(示例中为 “test”)。

5.2 客户端配置

在 Fedora 或 RHEL 系统上配置客户端使用 LDAP 进行用户认证很简单:
1. 确保 authconfig 包已安装:

[root@client ~]#  dnf -y install authconfig
  1. 从命令行启动工具:
[root@client ~]# authconfig-tui
  1. 在认证配置屏幕中,使用键盘的 Tab 键导航并使用 Space 键选择以下选项:
    • 在 “User Information” 部分选择 “Use LDAP”。
    • 在 “Authentication” 部分选择 “Use LDAP Authentication”。
  2. 导航到 “Next” 按钮并按 Enter 键选择。
  3. 在 LDAP 设置屏幕中输入以下信息:
    • Server: ldap://server-A/
    • Base DN: dc=example,dc=org
  4. 输入信息后,导航到 “OK” 按钮并按 Enter 键保存设置。

在实际生产环境中,还需考虑以下细节:
- 主目录:确保用户从任何系统登录时都能访问其主目录,可通过 NFS 共享用户主目录并导出到所有客户端系统。
- 安全:示例配置未包含安全措施,生产环境中应确保用户密码不以明文形式在网络中传输。
- 其他:还有一些未提及的问题,需在实践中探索和思考。

6. 打印相关知识

在 Linux 系统中,打印是常见需求。过去,Linux/UNIX 世界中广泛支持的是惠普等厂商的 PostScript 打印机。如今,随着 Linux 平台的广泛应用,大多数打印机制造商都为基于 Linux 的系统提供了合理的打印支持。

6.1 打印术语

以下是一些打印相关的术语:
| 术语 | 说明 |
| — | — |
| 打印机(Printer) | 通常连接到主机或网络的外围设备 |
| 作业(Job) | 提交打印的文件或文件集 |
| 假脱机程序(Spooler) | 管理打印作业的软件,负责接收、存储、排队和发送打印作业到实际打印硬件,常作为守护进程运行,也称为 “打印服务器”,如 LPD、LPRng、CUPS |
| 页面描述语言(PDL) | 打印机接受输入的语言,如 PostScript 和 PCL |
| PostScript | 基于堆栈的编程语言,大多数 UNIX/Linux 程序生成 PostScript 格式的输出用于打印,PostScript 打印机直接支持该格式 |
| Ghostscript | 用于非 PostScript 打印机的基于软件的 PostScript 解释器,可将 PostScript 转换为打印机语言,有商业版(Aladdin Ghostscript)、免费版(GNU Ghostscript)和 CUPS 版(ESP Ghostscript) |
| 过滤器(Filter) | 在打印作业发送到打印机之前处理数据的特殊程序或脚本,通常进行文件格式转换和计费操作 |

6.2 CUPS 系统

CUPS(Common UNIX Printing System)在 Linux 和 UNIX 社区中得到广泛接受,甚至苹果的最新版 OS X 操作系统也使用 CUPS。它提供了一个通用的打印环境,支持标准的 UNIX 打印协议 LPR、Samba 打印和 Internet 打印协议。通过打印类的概念,CUPS 可将文档打印到一组打印机,适用于高容量打印环境,可作为中央打印假脱机程序或为本地打印机提供打印方法。

6.3 运行 CUPS

CUPS 软件最初由 Easy Software Products 开发,现在由苹果公司作为开源项目维护,可从 www.cups.org 获取。安装方法有两种:通过 Linux 发行版的包管理系统或从源代码编译。推荐使用发行版的包管理系统安装,因为发行版通常已将流行的打印机支持集成到 CUPS 中。

以下是不同发行版安装和启动 CUPS 的步骤:
- RPM 发行版(如 Fedora、RHEL、CentOS)
1. 检查系统是否已安装 CUPS:

[root@fedora-server   ~]# rpm  -q cups
2. 若未安装,安装 CUPS:
[root@fedora-server   ~]# dnf -y install cups
3. 启动 CUPS 服务:
[root@fedora-server ~]# systemctl start cups
  • Debian 发行版(如 Ubuntu)
    1. 检查系统是否已安装 CUPS:
master@ubuntu-server:~$ dpkg -l cups
2. 若未安装,安装 CUPS:
master@ubuntu-server:~$ sudo apt-get install cups
3. 启动 CUPS 服务:
master@ubuntu-server:~$ sudo /etc/init.d/cups start
  • openSUSE 系统
    1. 安装 CUPS:
[root@opensuse-server   ~]# zypper  -i  cups
2. 启动 CUPS 服务:
opensuse-server:~ # rccups start
6.4 配置 CUPS

CUPS 打印守护进程的主配置文件是 cupsd.conf ,通常位于 /etc/cups/ 目录。它是一个纯文本文件,语法类似于 Apache 网络服务器。文件中的变量决定了服务器的运行方式,通常只需取消某些行的注释即可启用或禁用某些功能。

以下是 cupsd.conf 文件中的一些重要指令:
| 指令 | 说明 |
| — | — |
| Browsing | 控制是否启用网络打印机浏览,选项为 Yes 和 No |
| BrowseLocalProtocols | 指定在局域网中收集和分发共享打印机信息时使用的协议,选项为 all、none 和 dnssd |
| ServerName | 指定报告给客户端的主机名,通常为服务器的完全限定主机名 |
| Listen | 定义 CUPS 守护进程应监听的地址和端口组合 |
| Allow | 允许来自给定地址、主机名、域名或接口的访问,仅在 Location 和 Limit 部分有效 |
| Limit | 指定在配置文件的 Policy 部分要限制的操作或方法 |
| Location | 指定给定 HTTP 资源或文件系统路径的访问控制规则 |

CUPS 支持 IPv6,若要使 CUPS 守护进程同时监听 IPv4 和 IPv6 套接字,可将 Listen 指令设置为 Listen *:631 ;若要显式配置特定的 IPv6 地址(如 2001:db8::1 ),需将其括在方括号中,如 Listen [2001:db8::1]:631

默认 cupsd.conf 文件中的根位置配置如下:

1. <Location />
2.          Order allow, deny
3.          Deny all
4.          Allow localhost
5. </Location>

通过以上步骤,我们可以完成 LDAP 服务的管理、OpenLDAP 客户端和服务器的配置,以及 CUPS 打印系统的安装和配置,为 Linux 系统的使用提供更强大的功能。

Linux LDAP 与 CUPS 系统使用指南

7. 配置 CUPS 进一步解析

在配置 cupsd.conf 文件时,除了前面提到的基本指令,还可以根据实际需求进行更细致的调整。例如,当需要对特定的操作进行权限控制时,可以使用 Limit 指令结合 Allow Deny 指令。以下是一个示例,限制只有特定 IP 地址的客户端可以进行打印作业管理操作:

<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
  Order deny,allow
  Deny from all
  Allow from 192.168.1.0/24
</Limit>

这个配置表示只允许 192.168.1.0/24 网段的客户端进行指定的打印作业管理操作,其他客户端将被拒绝。

另外, BrowseLocalProtocols 指令的选择也会影响网络中打印机的发现。如果选择 all ,则会尝试使用所有可用的协议来收集和分发共享打印机信息;选择 dnssd 则使用 DNS 服务发现协议;选择 none 则禁用本地网络打印机的浏览功能。

8. 打印队列的管理

在 CUPS 系统中,打印队列是管理打印作业的重要概念。可以使用 lpadmin 命令来创建、修改和删除打印队列。以下是一些常见的操作示例:
- 创建打印队列

[root@server ~]# lpadmin -p myprinter -E -v cups-pdf:/ -m foomatic-rip-cups-pdf

这个命令创建了一个名为 myprinter 的打印队列,使用 cups-pdf 作为后端, foomatic-rip-cups-pdf 作为打印机驱动。 -E 选项表示启用该队列。
- 修改打印队列属性

[root@server ~]# lpadmin -p myprinter -o media=A4

此命令修改 myprinter 打印队列的纸张尺寸为 A4。
- 删除打印队列

[root@server ~]# lpadmin -x myprinter

该命令删除名为 myprinter 的打印队列。

还可以使用 lpstat 命令查看打印队列的状态:

[root@server ~]# lpstat -t

这个命令会显示所有打印队列的详细状态信息,包括队列中的作业、打印机的状态等。

9. 打印作业的管理

在 CUPS 中,有多种方式可以管理打印作业。以下是常见的操作:
- 提交打印作业

[root@server ~]# lp -d myprinter document.txt

这个命令将 document.txt 文件提交到 myprinter 打印队列进行打印。
- 查看打印作业状态

[root@server ~]# lpstat -o myprinter

此命令显示 myprinter 打印队列中所有作业的状态。
- 取消打印作业

[root@server ~]# cancel 123

该命令取消编号为 123 的打印作业。
- 暂停和恢复打印作业

[root@server ~]# lpmove 123 -
[root@server ~]# lpmove 123 myprinter

第一行命令暂停编号为 123 的打印作业,第二行命令恢复该作业。

10. 打印类的使用

打印类是 CUPS 中一个强大的功能,它允许将多个打印机组合成一个逻辑组,当提交打印作业到打印类时,CUPS 会自动选择可用的打印机进行打印。以下是创建和使用打印类的步骤:
1. 创建打印类

[root@server ~]# lpadmin -p myclass -E -v class: -m raw

这个命令创建了一个名为 myclass 的打印类。
2. 将打印机添加到打印类

[root@server ~]# lpadmin -p myclass -o printer-is-shared=false -u allow:all -m raw -E -v cups-pdf:/ -L "My PDF Printer" -D "PDF Printer" -P /etc/cups/ppd/myprinter.ppd -i /etc/cups/ppd/myprinter.ppd -r cups-pdf:/ -o printer-error-policy=retry-job -o printer-op-policy=default -o job-sheets=none,none -o media=A4 -o sides=one-sided -o orientation-requested=portrait -o printer-state=idle -o printer-state-reasons=none -o printer-state-message="Printer is ready"

这个命令将 myprinter 打印机添加到 myclass 打印类中。
3. 提交打印作业到打印类

[root@server ~]# lp -d myclass document.txt

该命令将 document.txt 文件提交到 myclass 打印类进行打印。

11. 安全考虑

在使用 LDAP 和 CUPS 系统时,安全是至关重要的。以下是一些安全建议:
- LDAP 安全
- 使用 SSL/TLS 加密通信,避免用户密码和其他敏感信息以明文形式传输。可以通过配置 LDAP 服务器和客户端使用 SSL/TLS 来实现。
- 限制 LDAP 服务的访问权限,只允许授权的用户和主机访问。可以通过防火墙规则和 LDAP 服务器的访问控制配置来实现。
- CUPS 安全
- 配置 CUPS 服务器只监听特定的 IP 地址和端口,避免不必要的网络暴露。
- 使用强密码保护 CUPS 管理界面,避免未授权的访问。
- 定期更新 CUPS 软件和相关的打印机驱动,以修复已知的安全漏洞。

12. 总结

通过本文,我们全面了解了 Linux 系统中 LDAP 和 CUPS 系统的使用和配置。在 LDAP 方面,我们学习了如何管理 LDAP 服务、配置 OpenLDAP 客户端和服务器、创建和管理目录条目、进行目录搜索和修改,以及使用 LDAP 进行用户认证。在 CUPS 方面,我们掌握了打印术语、安装和配置 CUPS 系统、管理打印队列和打印作业、使用打印类,以及考虑了相关的安全问题。

这些技术和配置可以帮助我们更好地管理 Linux 系统中的用户信息和打印服务,提高系统的效率和安全性。在实际应用中,我们可以根据具体的需求和环境进行灵活调整和优化,以满足不同的业务场景。

以下是一个简单的 mermaid 流程图,展示了使用 LDAP 进行用户认证的主要步骤:

graph TD;
    A[安装迁移工具] --> B[编辑迁移脚本配置];
    B --> C[创建目录基础结构];
    C --> D[导入基础结构到 LDAP];
    D --> E[导出系统用户到 LDIF];
    E --> F[导入用户到 LDAP 数据库];
    G[安装客户端认证工具] --> H[启动认证配置工具];
    H --> I[选择 LDAP 认证选项];
    I --> J[输入 LDAP 服务器信息];
    J --> K[保存配置];

这个流程图清晰地展示了从服务器配置到客户端配置的整个 LDAP 用户认证过程,有助于我们更好地理解和实施相关操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值