

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Linux Amazon DCV 服务器上配置打印机
<a name="manage-printer"></a>

Amazon DCV 允许您打印到本地重定向的打印机或虚拟 Amazon DCV 打印机。

如果您使用支持的 Linux 发行版，您必须配置 Amazon DCV 服务器以支持打印。

如果您使用 Windows Amazon DCV 服务器，则无需进行额外的配置。

**在 Linux Amazon DCV 服务器上启用打印机重定向**

1. 在您的服务器上安装 `CUPS` 服务。
   + Amazon Linux 2、RHEL 和 CentOS

     ```
     $ sudo yum install cups
     ```
   + Ubuntu

     ```
     $ sudo apt-get install cups
     ```
   + SUSE Linux Enterprise

     ```
     $ sudo zypper install cups
     ```

1. 将 `dcv` 用户添加到打印机管理员组中。打印机管理员组的名称可能因操作系统而异。例如，如果您的打印机管理员组命名为 `lpadmin`，请运行以下命令：

   ```
   $ usermod -a -G lpadmin dcv
   ```

1. 确保在 cups 配置文件的 `SystemGroup` 参数中引用了打印机管理员组。例如，如果您的打印机管理员组命名为 `lpadmin`，请使用文本编辑器打开 `/etc/cups/cups-files.conf` 并查找以下行。

   ```
   SystemGroup lpadmin
   ```

   如果在配置文件中出现该行，则说明安装已完成。继续下一步。

   如果在配置文件中未出现该行，请按以下格式手动添加该行，然后保存并关闭该文件。

   ```
   SystemGroup printer_admin_groupname
   ```

1. （仅限 SUSE Linux Enterprise）确保打印机管理员组有权读取 cups 本地证书。该证书位于以下目录中：`/var/run/cups/certs/`。例如，如果您的打印机管理员组命名为 `lpadmin`，请运行以下命令：

   ```
   $ sudo chgrp -R lpadmin /var/run/cups/certs/ && chmod g+x /var/run/cups/certs
   ```

1. 重新启动 `cups` 服务。

   ```
   $ sudo systemctl restart cups
   ```

1. [停止](manage-stop.md)并[重新启动](manage-start.md) Amazon DCV 服务器。

## 解决打印机问题
<a name="troubleshoot"></a>

SUSE Linux Enterprise 和 RHEL 8 可能会禁止连接到打印机插槽。如果您运行这两种操作系统之一并遇到打印问题，请检查日志文件以确定这是否为问题原因。

使用文本编辑器打开 `/var/log/audit/audit.log`，并检查日志是否具有类似下面的行：

```
type=AVC msg=audit(1617716179.487:504): avc:  denied  { connectto } for  pid=33933 comm="dcvcupsbackend" path=002F636F6D2F6E696365736F6674776172652F6463762F637570732F636F6E736F6C65 scontext=system_u:system_r:cupsd_t:s0-s0:c0.c1023 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=unix_stream_socket permissive=0
```

如果在日志文件中出现类似的行，则操作系统禁止访问打印机插槽。

要解决该问题，您必须创建一个允许访问打印机插槽的 CUPS 策略。为此，请执行以下步骤：

1. 创建所需的策略文件。使用常用的文本编辑器创建一个名为 `cupsd_policy` 的新文件，并添加以下内容。

   ```
   #============= cupsd_t ==============
   allow cupsd_t unconfined_t:unix_stream_socket connectto;
   ```

1. 安装该策略。

   ```
   $ ausearch -c 'dcvcupsbackend' --raw | audit2allow -M dcv-printer-policy
   ```

   ```
   $ semodule -X 300 -i dcv-printer-policy.pp
   ```