AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 32333
In Process
Matt Solnit
Matt Solnit
Asked: 2009-06-27 09:22:07 +0800 CST2009-06-27 09:22:07 +0800 CST 2009-06-27 09:22:07 +0800 CST

SELinux 如何影响 /home 目录?

  • 772

我正在将 CentOS 5.3 系统从 MySQL 迁移到 PostgreSQL。我们机器的设置方式是将最大的磁盘分区挂载到/home. 这是我无法控制的,由托管服务提供商管理。/home无论如何,出于这个原因,我们显然希望数据库文件处于打开状态。

使用 MySQL,我们执行了以下操作:

  • 编辑my.cnf并将datadir设置更改为/home/mysql
  • 添加了一个新的“文件类型”策略记录(我希望我使用正确的术语)设置/home/mysql(/.*)?为mysqld_db_t
  • 跑来restorecon -R /home/mysql分配标签

一切都很好。

然而,使用 PostgreSQL,我做了以下事情:

  • 分别将和变量编辑/etc/init.d/postgresql和更改为和PGDATAPGLOG/home/pgsql/data/home/pgsql/pgstartup.log
  • /home/pgsql/pgstartup.log添加了要设置为的新策略记录postgresql_log_t
  • /home/pgsql/data(/.*)?添加了要设置为的新策略记录postgresql_db_t
  • 跑来restorecon -R /home/pgsql分配标签

此时,我仍然无法启动 PostgreSQL。pgstartup.log 说:

# cat pgstartup.log
postmaster cannot access the server configuration file "/home/pgsql/data/postgresql.conf": Permission denied

/var/log/messages奇怪的是我在or中没有看到任何与此相关的消息/var/log/secure,但是如果我关闭 SElinux,那么一切正常。

我确保所有权限都正确(文件为 600,目录为 700)以及所有权(postgres:postgres)。

谁能告诉我我做错了什么?

我正在使用来自commandprompt.com的 Yum 存储库,版本 8.3.7。

编辑: 我的问题特别提到/home目录的原因是,如果我对任何其他目录(例如/var/lib/pgsql2or )执行所有这些步骤/usr/local/pgsql,那么它会按预期工作。

centos postgresql selinux
  • 4 4 个回答
  • 3648 Views

4 个回答

  • Voted
  1. Milen A. Radev
    2009-06-30T01:49:20+08:002009-06-30T01:49:20+08:00

    这个线程看起来很相关 - http://archives.postgresql.org/pgsql-admin/2007-11/msg00228.php。

    • 2
  2. rev
    2009-07-30T13:39:50+08:002009-07-30T13:39:50+08:00

    首先检查conf文件上的标签。在 Centos5.3 系统上闲逛,我看到了

    semanage fcontext -l | grep "postgresql_etc_t"
    /etc/postgresql(/.*)?                              all files          system_u:object_r:postgresql_etc_t:s0
    

    政策说

    sesearch -A -s postgresql_t -t postgresql_etc_t
    Found 3 av rules:
    allow postgresql_t postgresql_etc_t : file { ioctl read getattr lock }; 
    allow postgresql_t postgresql_etc_t : dir { ioctl read getattr lock search }; 
    allow postgresql_t postgresql_etc_t : lnk_file { read getattr }; 
    

    尝试做一个

    ls -Z /home/pgsql/data/postgresql.conf
    

    如果标签不正确,有多种方法可以更改它。一个快速的谷歌给了我http://docs.fedoraproject.org/selinux-user-guide/f10/en-US/sect-Security-Enhanced_Linux-SELinux_Contexts_Labeling_Files-Persistent_Changes_semanage_fcontext.html

    管理是一种方式。如果您想尝试进行快速测试,请尝试

    chcon -t postgresql_etc_t /home/pgsql/data/postgresql.conf
    

    还要确保 postgresql 守护进程在正确的域(即 SELinux 上下文)中运行。您可能会很快发现它不是通过拖尾日志,见下文。有关启动 init 脚本以使其位于正确域中的详细信息,请参阅 run_init。posgresql 可能作为 unconfined_t 运行(在这种情况下不应该有问题, unconfined 可以做很多事情)。

    SELinux 可能还有其他问题需要进一步分析,请尝试跟踪审核日志。(请注意,在 auditd 启动之前不会写入审计日志,我之前被它所困扰。在这种情况下,请检查 /var/log/messages 以获取预审计日志消息)

    试试看 SELinux 可能会抱怨什么

    tail -f /var/log/audit/audit.log
    

    或寻找否认

    tail -f /var/log/audit/audit.log | grep denied
    

    然后尝试相同的访问,即启动守护进程。

    • 1
  3. Rajat
    2009-06-27T09:50:21+08:002009-06-27T09:50:21+08:00

    你检查过你的#SESTATUS

    [root@yeswedeal ~]# sestatus SELinux 状态:禁用

    • 0
  4. CesarB
    2009-06-30T02:58:44+08:002009-06-30T02:58:44+08:00

    即使您正确标记了目录,selinux 策略也很有可能禁止 postgresql/home访问自身(实际上,@Milen 的答案中提到的链接似乎暗示了这一点)。

    • 0

相关问题

  • 适合初级 Linux 管理员的资源

  • 如何配置外部 CentOS 服务器作为 HTTP 代理/中继?

  • CentOS 的百胜安全?

  • Access 通过 ODBC 连接到远程 Postgresql 数据库是否可用?

  • 哪个数据库服务器扩展性更好:PostgreSQL 还是 MySQL?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve