SELinux 访问问题。作为特定用户的进程 运行 无法更新同一用户拥有但由不同进程创建的文件

SELinux access issue. Process run as specific user cannot update files owned by same user but created by separate process

我们有一个系统,其中 Chef 部署了一个监控代理 AppDynamics,作为特定用户 - 为此 post 让我们称该用户为 sysXYZ。 AppDynamics 代理创建一个每日日志文件,所有文件都具有 sysXYZ 用户所有权。

Tomcat,也是 运行 作为 sysXYZ 用户,托管由 AppDynamics 代理监视的应用程序。每天,Tomcat 实例都会重新启动(项目有其原因),启动过程包括重命名昨天的 AppDynamics 日志的步骤。但是,这被阻止为权限问题。 Tomcat 运行作为用户 sysXYZ 无法修改由用户 sysXYZ 拥有但由非 Tomcat.

的人创建的文件

我知道 SELinux 是为了防止意外访问——比如引入了恶意行为者——我对这个概念很满意。我们可以在这里做些什么来让 Tomcat 实例在每次重新启动时适当地重命名文件?

正确而困难的方法是修改 Tomcat 目录上的 SELinux 布尔值以允许 Tomcat 修改其他用户创建的文件。 阅读 here.

简单而肮脏的解决方案是 start-up process includes a step for renaming yesterdays AppDynamics logs 作为用户 sysXYZ。这样你就可以避免问题。

使用su - sysXYZ <script>命令或sudo -iu sysXYZ <script>命令或sudo -t <Tomcat role> <script>

祝你好运。