第 21 章 PostgreSQL
PostgreSQL 是对象存储的数据库管理系统(DBMS)。[19]
在红帽企业 Linux 中,postgresql -server 软件包提供 PostgreSQL。输入以下命令查看是否安装了 postgresql-server 软件包:
rpm -q postgresql-server
~]# rpm -q postgresql-server
如果没有安装它,请以 root 用户身份使用
yum 工具安装它:
yum install postgresql-server
~]# yum install postgresql-server
21.1. PostgreSQL 和 SELinux 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
启用 PostgreSQL 时,它会默认限制运行。受限制的进程在其自己的域中运行,并且与其他受限制的进程隔开。如果一个受攻击者限制的进程受到 SELinux 策略配置的影响,攻击者对资源的访问权限和可能受到的破坏会受到限制。以下示例演示了在自己的域中运行的 PostgreSQL 进程。本例假设安装了 postgresql-server 软件包:
- 运行 getenforce 命令,确认 SELinux 是否在 enforcing 模式下运行:
getenforce
~]$ getenforce EnforcingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当 SELinux 处于 enforcing 模式时,命令会返回Enforcing。 - 以 root 用户身份输入以下命令来启动
postgresql:systemctl start postgresql.service
~]# systemctl start postgresql.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确认 服务正在运行。输出中应包括以下信息(只有时间戳有所不同):systemctl start postgresql.service
~]# systemctl start postgresql.service postgresql.service - PostgreSQL database server Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled) Active: active (running) since Mon 2013-08-05 14:57:49 CEST; 12sCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 输入以下命令查看
postgresql进程:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 与postgresql进程关联的 SELinux 上下文为system_u:system_r:postgresql_t:s0。上下文的最后一部分(postgresql_t)是类型。类型定义进程的域以及文件的类型。在这种情况下,postgresql进程在postgresql_t域中运行。