11.3. 修复问题


以下部分有助于对问题进行故障排除。它们会接管:检查 Linux 权限,这些权限在 SELinux 规则之前被检查;可能导致 SELinux 拒绝访问,但不记录拒绝信息;服务手册页面,其中包含标记和布尔值的信息;允许一个域运行许可,而不是整个系统;如何搜索和查看拒绝信息;分析拒绝信息;以及创建具有 audit2allow 的自定义策略模块。

11.3.1. Linux 权限

拒绝访问时,检查标准 Linux 权限。如 第 1 章 简介 所述,大多数操作系统使用自主访问控制(DAC)系统来控制访问,允许用户控制他们拥有的文件的权限。在 DAC 规则后检查 SELinux 策略规则。如果 DAC 规则首先拒绝访问,则不会使用 SELinux 策略规则。
如果访问被拒绝,且没有记录 SELinux 拒绝,请使用以下命令查看标准 Linux 权限:
~]$ ls -l /var/www/html/index.html
-rw-r----- 1 root root 0 2009-05-07 11:06 index.html
在本例中,index.html 归 root 用户和组所有。root 用户具有读取和写入权限(-rw),root 组的成员则具有读取权限(-r-)。其他任何人都没有访问权限(---)。默认情况下,此类权限不允许 httpd 读取此文件。要解决这个问题,请使用 chown 命令更改所有者和组。这个命令必须以 root 用户身份运行:
~]# chown apache:apache /var/www/html/index.html
这假设默认配置,httpd 以 Linux Apache 用户身份运行。如果您使用其他用户运行 httpd,请将 apache:apache 替换为该用户。
有关管理 Linux 权限的详情,请查看 Fedora 文档项目"权限" 草案。

11.3.2. 可能的 Silent Denials 原因

在某些情况下,当 SELinux 拒绝访问时,可能不会记录 AVC 拒绝消息。应用程序和系统库函数通常探测到比执行任务所需的更多访问权限。为了在不填写 AVC 拒绝的情况下对应用程序探测保持最小的特权,该策略可以在不使用 dontaudit 规则的情况下静默 AVC 拒绝。这些规则在标准策略中很常见。dontaudit 的缺点是,尽管 SELinux 拒绝访问,但拒绝消息不会被记录,从而使故障排除变得更加困难。
要临时禁用 dontaudit 规则,允许记录所有拒绝,以 root 用户身份输入以下命令:
~]# semodule -DB
d 选项 禁用 dontaudit 规则; -B 选项重新构建策略。运行 semodule -DB 后,尝试执行遇到权限问题的应用程序,并查看与应用程序相关的 SELinux 拒绝 - 现在正在进行记录。请特别注意决定允许哪些拒绝,因为有些拒绝应该被忽略并由 dontaudit 规则处理。如果不确定,或在搜索指南时,请在 SELinux 列表中联系其他 SELinux 用户和开发人员,如 fedora-selinux-list
要重建策略并启用 dontaudit 规则,请以 root 用户身份输入以下命令:
~]# semodule -B
这会将策略恢复到其原始状态。如需 dontaudit 规则的完整列表,请运行 sesearch --dontaudit 命令。使用 -s 域选项和 grep 命令缩小搜索范围。例如:
~]$ sesearch --dontaudit -s smbd_t | grep squid
dontaudit smbd_t squid_port_t : tcp_socket name_bind ;
dontaudit smbd_t squid_port_t : udp_socket name_bind ;

11.3.3. 为服务手动页面

服务的 man page 包含宝贵的信息,如用于给定情况的文件类型,以及更改服务具有的布尔值(如 httpd 访问 NFS 卷)。此信息可能位于标准手册页中,或者在 man page 中,使用 sepolicy manpage 实用程序从每个服务域的 SELinux 策略自动生成。这些手册页以 service-name_selinux 格式命名。selinux-policy-doc 软件包还提供此类 man page。
例如: httpd_selinux(8) 手册页包含有关为给定情况使用哪些文件类型的信息,以及布尔值以允许脚本、共享文件、访问用户主目录中的目录等。其他包含服务的 SELinux 信息的 man page 包括:
  • samba: samba_selinux(8) 手册页,例如启用 samba_enable_home_dirs 布尔值允许 Samba 共享用户主目录。
  • NFS: nfsd_selinux(8) 手册页描述了 SELinux nfsd 策略,允许用户尽可能安全地设置其 nfsd 进程。
man page 中的信息可帮助您配置正确的文件类型和布尔值,从而有助于阻止 SELinux 拒绝访问。
有关 sepolicy man page 的详情,请查看 第 5.4 节 “生成 man pages: sepolicy manpage

11.3.4. 许可域

当 SELinux 以 permissive 模式运行时,SELinux 不会拒绝访问,但会记录对于在 enforcing 模式运行时会被拒绝的操作。在以前的版本中,无法使单个域许可(记住:进程在域中运行)。在某些情况下,这会导致整个系统对问题进行故障排除。
许可域允许管理员将单个进程(域)配置为运行许可,而不是使整个系统成为许可。仍然对许可域执行 SELinux 检查;但是,内核允许访问,并在 SELinux 拒绝访问的情况下报告 AVC 拒绝。
Permissive 域有以下用法:
  • 它们可用于使单个进程(域)运行 permissive 模式来排除问题,而无需通过使整个系统成为许可关系而使其面临风险。
  • 它们允许管理员为新应用创建策略。在以前的版本中,建议创建一个最小策略,然后整个机器都进入 permissive 模式,以便应用程序可以运行,但 SELinux 拒绝仍然被记录。然后,可以使用 audit2allow 来帮助编写策略。这使得整个系统面临风险。使用 permissive 域时,新策略中只有域可以标记为许可,而不会使整个系统面临风险。

11.3.4.1. 创建域许可

要使域允许,请运行 semanage permissive -a domain 命令,其中 domain 是您要进行 permissive 的域。例如,以 root 身份输入以下命令,使 httpd_t 域(Apache HTTP 服务器以其运行的域) permissive:
~]# semanage permissive -a httpd_t
要查看您进行 permissive 的域列表,请以 root 用户身份运行 semodule -l | grep permissive 命令。例如:
~]# semodule -l | grep permissive
permissive_httpd_t    (null)
permissivedomains     (null)
如果您不再希望某个域为 permissive,请以 root 用户身份运行 semanage permissive -d domain 命令。例如:
~]# semanage permissive -d httpd_t

11.3.4.2. 禁用许可域

permissivedomains.pp 模块包含系统上显示的所有 permissive 域声明。要禁用所有 permissive 域,以 root 用户身份输入以下命令:
~]# semodule -d permissivedomains
注意
通过 semodule -d 命令禁用策略模块后,它将不再显示在 semodule -l 命令的输出中。要查看包括禁用的所有策略模块,以 root 用户身份输入以下命令:
~]# semodule --list-modules=full

11.3.4.3. 拒绝许可域

对于 permissive 域,SYSCALL 消息有所不同。以下是来自 Apache HTTP 服务器的 AVC 拒绝(及关联的系统调用)示例:
type=AVC msg=audit(1226882736.442:86): avc:  denied  { getattr } for  pid=2427 comm="httpd" path="/var/www/html/file1" dev=dm-0 ino=284133 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file

type=SYSCALL msg=audit(1226882736.442:86): arch=40000003 syscall=196 success=no exit=-13 a0=b9a1e198 a1=bfc2921c a2=54dff4 a3=2008171 items=0 ppid=2425 pid=2427 auid=502 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
默认情况下,httpd_t 域不是 permissive,因此操作被拒绝,SYSCALL 消息包含 success=no。以下是同一情况的 AVC 拒绝示例,但 semanage permissive -a httpd_t 命令除外,使 httpd_t 域为 permissive:
type=AVC msg=audit(1226882925.714:136): avc:  denied  { read } for  pid=2512 comm="httpd" name="file1" dev=dm-0 ino=284133 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file

type=SYSCALL msg=audit(1226882925.714:136): arch=40000003 syscall=5 success=yes exit=11 a0=b962a1e8 a1=8000 a2=0 a3=8000 items=0 ppid=2511 pid=2512 auid=502 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
在这种情况下,虽然 AVC 拒绝被记录,但访问被拒绝,如 SYSCALL 消息中的 success=yes 显示。

11.3.5. 搜索和查看地址

本节假定已安装 setroubleshootsetroubleshoot-serverdbusaudit 软件包,并且 auditdrsyslogdsetroubleshootd 守护进程正在运行。有关启动这些守护进程的详情请参考 第 4.2 节 “使用哪个日志文件”。许多 utilites 可用于搜索和查看 SELinux AVC 消息,如 ausearchaureportsealert

ausearch

audit 软件包提供了 ausearch 工具,它可以根据不同的搜索条件查询审计守护进程日志中的事件。[10] ausearch 工具访问 /var/log/audit/audit.log,因此必须以 root 用户身份运行:
搜索: 所有拒绝
命令: ausearch -m avc,user_avc,selinux_err,user_selinux_err
搜索: 今天拒绝这种情况
命令: ausearch -m avc -ts 现在
搜索: 拒绝来自最后 10 分钟
命令: ausearch -m avc -ts recent
要搜索特定服务的 SELinux AVC 消息,请使用 -c comm-name 选项,其中 comm-name 是可执行文件的名称,例如 httpd 用于 Apache HTTP 服务器,使用 smbd 用于 Samba:
~]# ausearch -m avc -c httpd
~]# ausearch -m avc -c smbd
对于每个 ausearch 命令,建议使用-- interpret (-i)选项来更轻松地阅读,或使用- raw (-r)选项进行脚本处理。如需了解更多 ausearch 选项,请参阅 ausearch(8) 手册页。

aureport

audit 软件包提供 aureport 实用程序,它可生成审计日志的摘要报告。[11] aureport 实用程序访问 /var/log/audit/audit.log,因此必须以 root 用户身份运行。要查看 SELinux 拒绝信息列表以及每个发生的频率,请运行 aureport -a 命令。以下是包含两个拒绝的输出示例:
~]# aureport -a

AVC Report
========================================================
# date time comm subj syscall class permission obj event
========================================================
1. 05/01/2009 21:41:39 httpd unconfined_u:system_r:httpd_t:s0 195 file getattr system_u:object_r:samba_share_t:s0 denied 2
2. 05/03/2009 22:00:25 vsftpd unconfined_u:system_r:ftpd_t:s0 5 file read unconfined_u:object_r:cifs_t:s0 denied 4

sealert

setroubleshoot-server 软件包提供 sealert 实用程序,它读取由 setroubleshoot-server 转换的拒绝消息。[12] 拒绝被分配 ID,如 /var/log/messages 所示。以下是一个 拒绝信息 的示例:
setroubleshoot: SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket. For complete SELinux messages. run sealert -l 8c123656-5dda-4e5d-8791-9e3bd03786b7
在本例中,拒绝 ID 为 8c123656-5dda-4e5d-8791-9e3bd03786b7l 选项 取 ID 作为参数。运行 sealert -l 8c123656-5dda-4e5d-8791-9e3bd03786b7 命令提供了有关 SELinux 拒绝访问的原因以及可能的解决方案。
如果您正在运行 X Window 系统,则安装了 setroubleshootsetroubleshoot-server 软件包,并且 setroubleshootddbusauditd 守护进程正在运行,则 SELinux 拒绝访问时会显示一个警告:
AVC 拒绝信息
Show 会启动 sealert GUI,它可让您排除这个问题:
或者,运行 sealert -b 命令来启动 sealert GUI。要查看所有拒绝信息的详细分析,请运行 sealert -l \* 命令。

11.3.6. 原始审计消息

原始审计消息记录到 /var/log/audit/audit.log。以下是当 Apache HTTP 服务器(在 httpd_t 域中运行)试图访问 /var/www/html/file1 文件(使用 samba_share_t 类型标记)时发生的 AVC 拒绝消息(以及关联的系统调用):
type=AVC msg=audit(1226874073.147:96): avc:  denied  { getattr } for  pid=2465 comm="httpd" path="/var/www/html/file1" dev=dm-0 ino=284133 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file

type=SYSCALL msg=audit(1226874073.147:96): arch=40000003 syscall=196 success=no exit=-13 a0=b98df198 a1=bfec85dc a2=54dff4 a3=2008171 items=0 ppid=2463 pid=2465 auid=502 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=6 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
{ getattr }
大括号中的项目表示拒绝的权限。getattr 条目表示源进程正在尝试读取目标文件的状态信息。这在读取文件前发生。由于访问的文件带有错误的标签,因此此操作被拒绝。通常的权限包括 getattr, read, 和 write
comm="httpd"
启动进程的可执行文件。可执行文件的完整路径位于系统调用的 exe= 部分(SYSCALL)消息,本例中为 exe="/usr/sbin/httpd"。
path="/var/www/html/file1"
进程试图访问的对象(目标)路径。
scontext="unconfined_u:system_r:httpd_t:s0"
尝试拒绝的操作的进程的 SELinux 上下文。在这种情况下,它是 Apache HTTP 服务器的 SELinux 上下文,它在 httpd_t 域中运行。
tcontext="unconfined_u:object_r:samba_share_t:s0"
进程试图访问的对象(目标)的 SELinux 上下文。在这种情况下,它是 file1 的 SELinux 上下文。请注意,httpd_t 域中运行的进程无法访问 samba_share_t 类型。
在某些情况下,tcontext 可能与 scontext 匹配,例如,当进程试图执行将更改该进程的特性的系统服务时,如用户 ID。另外,当进程尝试使用比普通限制允许更多的资源(如内存)时,tcontext 可能与 scontext 匹配,从而导致安全检查来查看该进程是否可以中断这些限制。
从系统调用(SYSCALL)消息中,两个项目值得关注:
  • success=no: 表示拒绝(AVC)是否已强制执行。success=no 表示系统调用没有成功(SELinux 拒绝访问)。success=yes 表示系统调用是否成功。对于 permissive 域或未限制的域,这可以看到,如 unconfined_service_tkernel_t
  • exe="/usr/sbin/httpd": 启动该进程的可执行文件的完整路径(本例中为 exe="/usr/sbin/httpd "。
文件类型不正确是 SELinux 拒绝访问的常见原因。要开始故障排除,请将源上下文(scontext)与目标上下文(tcontext)进行比较。进程(scontext)是否正在访问此类对象(tcontext)?例如,Apache HTTP 服务器(httpd_t)应只访问 httpd_selinux(8) 手册页中指定的类型,如 httpd_sys_content_tpublic_content_t 等等,除非另有配置。

11.3.7. sealert 消息

拒绝被分配 ID,如 /var/log/messages 所示。以下是当 Apache HTTP 服务器(在 httpd_t 域中运行)试图访问 /var/www/html/file1 文件(使用 samba_share_t 类型标记)时发生的 AVC 拒绝示例:
hostname setroubleshoot: SELinux is preventing httpd (httpd_t) "getattr" to /var/www/html/file1 (samba_share_t). For complete SELinux messages. run sealert -l 32eee32b-21ca-4846-a22f-0ba050206786
建议运行 sealert -l 32eee32b-21ca-4846-a22f-0ba050206786 命令来查看完整的消息。这个命令只适用于本地机器,并显示与 sealert GUI 相同的信息:
~]$ sealert -l 32eee32b-21ca-4846-a22f-0ba050206786
SELinux is preventing httpd from getattr access on the file /var/www/html/file1.

*****  Plugin restorecon (92.2 confidence) suggests   ************************

If you want to fix the label. 
/var/www/html/file1 default label should be httpd_sys_content_t.
Then you can run restorecon.
Do
# /sbin/restorecon -v /var/www/html/file1

*****  Plugin public_content (7.83 confidence) suggests   ********************

If you want to treat file1 as public content
Then you need to change the label on file1 to public_content_t or public_content_rw_t.
Do
# semanage fcontext -a -t public_content_t '/var/www/html/file1'
# restorecon -v '/var/www/html/file1'

*****  Plugin catchall (1.41 confidence) suggests   **************************

If you believe that httpd should be allowed getattr access on the file1 file by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# ausearch -c 'httpd' --raw | audit2allow -M my-httpd
# semodule -i my-httpd.pp


Additional Information:
Source Context                system_u:system_r:httpd_t:s0
Target Context                unconfined_u:object_r:samba_share_t:s0
Target Objects                /var/www/html/file1 [ file ]
Source                        httpd
Source Path                   httpd
Port                          <Unknown>
Host                          hostname.redhat.com
Source RPM Packages           
Target RPM Packages           
Policy RPM                    selinux-policy-3.13.1-166.el7.noarch
Selinux Enabled               True
Policy Type                   targeted
Enforcing Mode                Enforcing
Host Name                     hostname.redhat.com
Platform                      Linux hostname.redhat.com
                              3.10.0-693.el7.x86_64 #1 SMP Thu Jul 6 19:56:57
                              EDT 2017 x86_64 x86_64
Alert Count                   2
First Seen                    2017-07-20 02:52:11 EDT
Last Seen                     2017-07-20 02:52:11 EDT
Local ID                      32eee32b-21ca-4846-a22f-0ba050206786

Raw Audit Messages
type=AVC msg=audit(1500533531.140:295): avc:  denied  { getattr } for  pid=24934 comm="httpd" path="/var/www/html/file1" dev="vda1" ino=31457414 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file


Hash: httpd,httpd_t,samba_share_t,file,getattr
概述
被拒绝操作的简短概述。这与 /var/log/messages 中的拒绝相同。在本例中,httpd 进程被拒绝访问文件(file1),该文件使用 samba_share_t 类型进行标记。
详细描述
更为详细的描述。在本例中,file1 使用 samba_share_t 类型进行标记。此类型用于您要使用 Samba 导出的文件和目录。描述建议将类型更改为 Apache HTTP 服务器和 Samba 可访问的类型(如果需要此类访问)。
允许访问
有关如何允许访问的建议。这可以是重新标记文件、启用布尔值或创建本地策略模块。在这种情况下,建议使用 Apache HTTP 服务器和 Samba 可访问的类型标记该文件。
修复命令
建议将 命令允许访问并解决拒绝。在本例中,该命令提供将 file1 类型更改为 public_content_t,该类型可由 Apache HTTP 服务器和 Samba 访问。
其它信息
在错误报告中很有用的信息,如策略软件包名称和版本(selinux-policy-3.13.1-166.el7.noarch),但可能并不能帮助解决拒绝发生的原因。
原始审计消息
与拒绝关联的 /var/log/audit/audit.log 的原始审计消息。有关 AVC 拒绝中每个项目的信息,请参阅 第 11.3.6 节 “原始审计消息”

11.3.8. 允许访问: audit2 允许

警告
不要在生产中使用本节中的示例。它仅用于演示 audit2allow 实用程序的使用。
audit2allow 工具从被拒绝操作的日志中收集信息,然后生成 SELinux 策略允许规则。[13] 根据 第 11.3.7 节 “sealert 消息” 分析拒绝信息后,如果没有标签更改或布尔值允许访问,请使用 audit2allow 来创建本地策略模块。当 SELinux 拒绝访问时,运行 audit2allow 会生成允许之前拒绝访问的 Type Enforcement 规则。
当您看到 SELinux 拒绝时,您不应该使用 audit2allow 来生成本地策略模块作为您的第一个选项。故障排除应该先检查是否有标记问题。第二个最常见的情况是您更改了进程配置,并且忘记了要让 SELinux 了解它。如需更多信息,请参阅 SELinux 错误的四个关键原因 白皮书。
以下示例演示了如何使用 audit2allow 创建策略模块:
  1. 拒绝消息和相关系统调用记录到 /var/log/audit/audit.log 文件中:
    type=AVC msg=audit(1226270358.848:238): avc:  denied  { write } for  pid=13349 comm="certwatch" name="cache" dev=dm-0 ino=218171 scontext=system_u:system_r:certwatch_t:s0 tcontext=system_u:object_r:var_t:s0 tclass=dir
    
    type=SYSCALL msg=audit(1226270358.848:238): arch=40000003 syscall=39 success=no exit=-13 a0=39a2bf a1=3ff a2=3a0354 a3=94703c8 items=0 ppid=13344 pid=13349 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="certwatch" exe="/usr/bin/certwatch" subj=system_u:system_r:certwatch_t:s0 key=(null)
    
    在本例中,certwatch 会拒绝对带有 var_t 类型标记的目录的写入访问权限。根据 第 11.3.7 节 “sealert 消息” 分析拒绝消息。如果没有标签更改或布尔值允许访问,请使用 audit2allow 来创建本地策略模块。
  2. 输入以下命令生成人类可读的描述,说明为什么拒绝访问。audit2allow 工具读取 /var/log/audit/audit.log,因此必须以 root 用户身份运行:
    ~]# audit2allow -w -a
    type=AVC msg=audit(1226270358.848:238): avc:  denied  { write } for  pid=13349 comm="certwatch" name="cache" dev=dm-0 ino=218171 scontext=system_u:system_r:certwatch_t:s0 tcontext=system_u:object_r:var_t:s0 tclass=dir
    	Was caused by:
    		Missing type enforcement (TE) allow rule.
    
    	You can use audit2allow to generate a loadable module to allow this access.
    
    a 命令行 选项可使所有审计日志被读取。w 选项 生成人类可读的描述。如上所示,缺少 Type Enforcement 规则,因此访问被拒绝。
  3. 输入以下命令查看允许拒绝访问的 Type Enforcement 规则:
    ~]# audit2allow -a
    
    
    #============= certwatch_t ==============
    allow certwatch_t var_t:dir write;
    
    重要
    缺少 Type Enforcement 规则通常由 SELinux 策略中的错误导致,应在 Red Hat Bugzilla 中报告。对于 Red Hat Enterprise Linux,针对 Red Hat Enterprise Linux 产品创建 bug,然后选择 selinux-policy 组件。在此类程序漏洞报告中包含 audit2allow -w -aaudit2allow -a 命令的输出。
  4. 要使用 audit2allow -a 显示的规则,请以 root 用户身份输入以下命令来创建自定义模块。-M 选项会在当前工作目录中创建一个 Type Enforcement 文件(.te),其名称由 -M 指定:
    ~]# audit2allow -a -M mycertwatch
    ******************** IMPORTANT ***********************
    To make this policy package active, execute:
    
    semodule -i mycertwatch.pp
    
  5. 另外,audit2allow 将 Type Enforcement 规则编译到策略软件包中(.pp):
    ~]# ls
    mycertwatch.pp  mycertwatch.te
    
    要安装模块,以 root 用户身份输入以下命令:
    ~]# semodule -i mycertwatch.pp
    重要
    使用 audit2allow 创建的模块可能会允许更多的访问权限。建议通过 audit2allow 创建的策略发布到上游 SELinux 列表以进行检查。 如果您认为策略中存在错误,请在 Red Hat Bugzilla 中创建一个错误。
如果您有多个来自多个进程的拒绝消息,但只想为单个进程创建自定义策略,请使用 grep 实用程序缩小 audit2allow 的输入范围。以下示例演示了如何使用 grep 仅发送通过 audit2allowcertwatch 相关的拒绝消息:
~]# grep certwatch /var/log/audit/audit.log | audit2allow -R -M mycertwatch2
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i mycertwatch2.pp


[10] 有关 ausearch 的详情,请查看 ausearch(8) 手册页。
[11] 有关 aureport 的详情,请查看 aureport(8) 手册页。
[12] 有关 sealert 的详情,请查看 sealert(8) 手册页。
[13] 有关 audit2allow 的详情,请查看 audit2allow(1) 手册页。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.