CUPS作为类Unix系统下通用打印系统,权限控制采用Unix本身的文件权限控制(用户、用户组,rwx),再加上CUPS自身实现的权限控制,来满足不同层面的权限控制需求。
1. Unix文件权限控制
由于CUPS中filter和backend都是作为命令行程序出现的,特别是backend具有写文件的能力,所以一般情况下backend都是0700权限,而filter是0755权限。防止被篡改,被非法执行。
2. 通过cupsd.conf配置Policy进行操作权限管理
https://www.cups.org/doc/policies.html
英文过关的可以参考上面网页的说明。
简单说明下,在cupsd.conf中,通过<Policy>标签来配置权限,可以指定Policy的名称,比如<Policy usb-printer-policy>,其中usb-printer-policy就是指定的名称。
每个Policy标签中,可以配置<Limit>标签来进行权限控制。
<Limit Create-Job Print-Job Print-URI Validate-Job>
Require user @SYSTEM
Order allow,deny
</Limit>
上面这个Limit标签表示,Create-Job(创建打印任务)、Print-Job、Print-URI和Validate-Job都需要@SYSTEM定义的用户组所属的用户才能执行。其中@SYSTEM是定义在cups-file.conf文件中的SystemGroup
# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
SystemGroup lpadmin root
Limit标签中,如何限定用户,可以参考下图
将cupsd.conf中配置好的policy分配给指定打印机
lpadmin -p LaserJet4000 -o printer-op-policy=usb-printer-policy
-p LaserJet4000是打印机
-o printer-op-policy=usb-printer-policy中,usb-printer-policy是自建的policy
3. 本地或远程打开web interface
只能允许本地打开
Listen localhost:631
禁止使用web interface
WebInterface No
这样配置后,即使通过localhost:631本地访问,也无法查看和管理打印机,只能查看CUPS文档。
4. 通过cupsd.conf中配置<Location>标签来管理权限,用于类似于<Limit>标签中的配置
<Location /admin>
Order allow,deny
Allow all
</Location>
配置所有用户都可以进行CUPS管理操作。
5. 配置打印机是否可见
lpadmin -p LaserJet4000 -u allow:root,@lpadmin
-u allow:root,@lpadmin 表示允许root用户,@lpadmin用户组所属用户使用该打印机;其他用户将无法访问该打印机