麒麟系统需手动配置cups认证:先执行sudo cupsctl启用远程管理与共享,再用sudo useradd创建无shell的printuser系统账户并设密码;接着修改/etc/cups/cupsd.conf启用basic认证、限制访问为require user @system且保留localhost免密,重启cups服务;最后通过web界面或lpadmin命令为打印机绑定printuser权限,验证时错误密码触发error_log记录,正确凭据可成功打印测试页。

麒麟系统默认开启打印机共享时不设密码,但办公环境中常需限制访问权限,防止未授权打印任务占用资源或泄露敏感文档,必须通过CUPS底层配置添加认证机制。
启用CUPS用户认证并创建专用打印账户
这一步是密码保护的前提,CUPS不依赖系统账户,必须手动添加独立的打印用户。打开终端执行:
sudo cupsctl --remote-admin --remote-any --share-printers
该命令同时开启远程管理、全网访问和打印机共享,为后续认证铺路。
执行以下命令创建仅用于打印认证的用户(例如用户名printuser):
sudo useradd -r -s /bin/false printuser
注意:-r 表示创建系统用户,-s /bin/false 禁止登录shell,这是【关键安全前提】,避免该账户被用于系统入侵。
为该用户设置密码:
sudo passwd printuser
输入两次新密码即可完成账户初始化。此密码将用于后续所有客户端连接时的身份校验。
修改cupsd.conf强制启用Basic认证
编辑CUPS主配置文件:
sudo nano /etc/cups/cupsd.conf
在
AuthType Basic
紧接着在同一区块内,补充两行认证控制指令:
Require user @SYSTEM
Allow from 127.0.0.1
第一行强制所有访问必须通过系统级用户认证;第二行保留本地管理入口免密——否则你将无法再用 http://localhost:631 登录后台。
保存文件后,必须重启服务使认证生效:
sudo systemctl restart cups
此时未提供凭据的任何网络请求都会返回401 Unauthorized错误。
为指定打印机单独绑定访问策略
方法一:通过Web界面精细控制
浏览器访问 http://localhost:631 → Administration → Manage Printers → 点击目标打印机名称 → 点击右上角“Set Printer Options” → 切换到“Policies”选项卡 → 在“Access Control”区域,将“Allow”规则从默认的all改为指定用户:
Allow printuser
点击“Set Printer Options”保存。此后只有printuser能提交作业,其他用户即使知道IP也无法发送任务。
方法二:命令行快速锁定(适用于批量部署)
执行:
sudo lpadmin -p 打印机名 -o auth-info-required=username,password
其中“打印机名”需替换为实际名称(可用 lpstat -p 查看)。该指令直接注入IPP协议层认证要求,客户端连接时会强制弹出凭据框。
注意:若使用方法二,Windows客户端需在添加打印机时勾选“要求用户名和密码”,并在连接向导中提前填入printuser及对应密码,否则添加过程会卡在“正在连接”状态。
验证密码保护是否生效
第一步:在另一台局域网设备(如Windows电脑)上尝试访问 http://麒麟IP:631/printers/打印机名
页面应立即弹出浏览器原生认证窗口,而非直接显示打印机状态页。
第二步:故意输入错误密码三次,观察CUPS日志:
sudo tail -f /var/log/cups/error_log
应出现类似“Authentication failed for user 'xxx'”的记录,证明认证模块已拦截非法访问。
第三步:用正确账号密码登录后,在CUPS界面点击“Print Test Page”,确认任务能正常入队并完成物理打印——说明认证未阻断合法流程。











