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
- 将文件保存为
sample.ldif并退出编辑器。 - 使用
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=*)'
- 再次搜索,不指定
-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)'
- 使用
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 服务器配置
- 安装提供迁移脚本的软件包:
[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";
- 使用
migrate_base.pl脚本创建目录的基础结构:
[root@fedora-server ~]# cd /usr/share/migrationtools/
[root@fedora-server migrationtools]# ./migrate_base.pl > ~/base.ldif
- 确保
slapd服务正在运行,然后将base.ldif文件中的条目导入 OpenLDAP 目录:
[root@fedora-server migrationtools]# ldapadd -c -x -D "cn=manager,dc=example,dc=org" -W -f ~/base.ldif
- 导出系统
/etc/passwd文件中的当前用户到 LDIF 文件:
[root@fedora-server migrationtools]# ./migrate_passwd.pl /etc/passwd > ~/ldap-users.ldif
- 将
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
- 从命令行启动工具:
[root@client ~]# authconfig-tui
- 在认证配置屏幕中,使用键盘的
Tab键导航并使用Space键选择以下选项:- 在 “User Information” 部分选择 “Use LDAP”。
- 在 “Authentication” 部分选择 “Use LDAP Authentication”。
- 导航到 “Next” 按钮并按
Enter键选择。 - 在 LDAP 设置屏幕中输入以下信息:
- Server:
ldap://server-A/ - Base DN:
dc=example,dc=org
- Server:
- 输入信息后,导航到 “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) :
- 检查系统是否已安装 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 系统 :
- 安装 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 用户认证过程,有助于我们更好地理解和实施相关操作。
超级会员免费看
9

被折叠的 条评论
为什么被折叠?



