【问题标题】:How to preserve SELinux context on a file while running from unconfined user从不受限制的用户运行时如何在文件上保留 SELinux 上下文
【发布时间】:2016-05-18 17:39:14
【问题描述】:

我的几个文件的 SELinux 上下文在我的 openstack-swift 设置中遇到了一些问题

设置详情:

一个守护进程正在运行具有以下 SELinux 上下文的 swift-object-replicator

system_u:system_r:swift_t:s0 swift ... /usr/bin/python /usr/bin/swift-object-replicator /etc/swift/object-server.conf

此守护程序定期调用脚本。该脚本创建的文件具有以下 SELinux 上下文

system_u:object_r:swift_var_cache_t:s0 /var/cache/swift/object.recon

哪个是正确的!!

问题

如果我以“root”身份从终端运行相同的脚本(该守护程序在内部调用该脚本),则 object.recon 文件 SELinux 上下文修改如下-rw-------. swift swift unconfined_u:object_r:var_t:s0 /var/cache/swift/object.recon

然后我开始在该守护进程的日志文件中看到错误消息

知道为什么上下文会发生变化以及如何保留它,即使我希望从终端触发脚本

【问题讨论】:

  • 你无法阻止它。 SElinux 就是为了做到这一点。另一方面,尝试为它创建一个目标策略。
  • @alvits 是的,我就是这么想的。那会是什么政策?可以给我详细信息吗
  • 我们有一个/var/cache/swift(/.*)? regular file system_u:object_r:swift_var_cache_t:s0 类型的策略规则,但是如何执行它。 Restorecon 修复了一些问题,但只是暂时的,直到有人再次从终端点击命令:(
  • SElinux 是强制执行还是允许执行?

标签: linux selinux openstack-swift


【解决方案1】:

我想出了两种保留上下文的方法:

  • 使用 runco​​n 以正确的上下文运行命令

    runcon -t swift_t -r system_r swift-object-replicator /etc/swift/object-server.conf -ov
    
  • 或者,定义一个 SELinux type_transition 规则,以便具有 unconfined_t 域的用户在执行脚本时转换到正确的域

    require {
     type unconfined_t;
     type swift_exec_t;
     type swift_t;
     role unconfined_r;
     class process transition;
    }
    
    role unconfined_r types swift_t;
    
    type_transition unconfined_t swift_exec_t:process swift_t;
    

【讨论】:

    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 2020-09-03
    • 1970-01-01
    • 2022-01-06
    • 2014-10-26
    相关资源
    最近更新 更多