问题描述
我们有一个系统,其中Chef已作为特定用户部署了监视代理AppDynamics-为了本文的方便,请将该用户称为sysXYZ。 AppDynamics代理会创建一个每日日志文件,所有日志文件均具有sysXYZ用户所有权。
Tomcat(也以sysXYZ用户身份运行)托管由AppDynamics代理监视的应用程序。每天,Tomcat实例都会重新启动(项目是由其原因造成的),并且启动过程包括重新命名昨天的AppDynamics日志的步骤。但是,这被阻止为权限问题。以sysXYZ用户身份运行的Tomcat无法修改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>
祝你好运。