为了管理某个应用程序,定义所需的命令列表和访问权限的最佳方法是什么?

为了管理某个应用程序,定义所需的命令列表和访问权限的最佳方法是什么?

我的团队需要在 Red Hat 5.7 上安装和管理一个非常大的应用程序,并且需要能够以 root 身份执行此操作。在项目期间,Unix 支持团队(负责操作系统支持)授予我们(应用程序支持团队) sudo 所有访问权限,以便我们能够执行此操作。但是,我们的内部政策规定,一旦服务器投入运营(由我们的 Unix 团队正式支持并上线),除了他们之外,任何人都不应拥有 root 访问权限。

为了能够明确支持相关应用程序,我的团队需要向 Unix 团队提供完整的命令和访问要求列表,以便他们可以单独授予我们对所有这些命令的 sudo 访问权限。该应用程序的供应商不支持这种限制性管理,也没有明确的方法来正确执行此操作而不会出现问题。这几乎是反复试验。

也就是说,列出我们需要运行的所有必需命令以及列出我们需要的每个目录/文件访问的最佳方法是什么?

以 root 身份安装的应用程序,其安装目录下的所有文件当前均归 root 或服务用户(为应用程序的服务创建的用户)所有。

我首先列出了所有权限为 u+x 的文件,在基本、未修改的安装后,我得到了一个惊人的 2801 个文件。这还不包括 /etc/init.d 中的 init 脚本,以及我们可能还必须运行的其他系统命令(例如 chown、chmod、ps、kill 等...)。

对我来说,要做到这一点而不遇到问题几乎是不可能的(或至少是极其困难的)。我知道这不是一个简单的问题,而且有很多方法可以做到这一点,但我还是想听听社区对此的看法。

答案1

首先,我喜欢你最初找到所有可执行文件的方法。不过,供应商似乎有一个坏习惯,就是把所有东西都标记为可执行文件。我真的希望产品中没有 2,801 个二进制文件!你可以把所有这些文件都通过,file看看哪些是真正的二进制文件、脚本等。这应该可以缩小范围。

其次,一定要包括停止和启动应用程序所需的一切。听起来供应商会安装一个初始化脚本,所以这可能就是您所需要的全部内容。此外,less如果日志文件存储在系统位置(例如 /var/log)中且非特权用户无法读取,则还可以访问它们。

最后,看看他们是否可以设置 sudo 规则,以便您的团队运行特定命令 作为服务用户。例如,您可能希望vim以此用户身份运行以修改配置文件。如果他们想要更严格,请查看配置文件的命名约定。也许是允许的规则vim *.conf(或更复杂的 glob 或 glob)。

另一个想法是,如果将来出现问题,要有明确的升级路径。如果你需要紧急处理某件事,是否有人可以呼叫?他们会监控系统的运行状况吗?如果应用程序出现故障,他们能通知你的团队吗?

答案2

以下几点希望对你有用(希望如此):

  1. 通过 Web 界面,您将不再需要 ssh 访问权限,因此也不需要 sudo 权限。
  2. 一旦应用程序正常运行,系统管理员团队就有责任确保它正常运行,而不是开发人员的责任。
  3. 您可以请求修改应用程序配置文件和某些数据文件的权限(如果有)。无需修改应用程序的每个文件/文件夹。
  4. 如果这是一个测试服务器,则应该给予开发人员更多的灵活性,以便能够轻松调试应用程序。

相关内容