我有一个应用程序,它作为守护进程运行,并由 /etc/init.d 中的脚本控制
有时我们需要更改这些脚本的启动/控制的一些参数,然后重新启动守护进程。这些脚本只有 root 用户的写权限,所以在编辑这些脚本时我需要 root 权限。
我在想的是,我应该让非 root 用户成为这些脚本的所有者。这样只有 root 和特殊用户才能编辑这些脚本。
在 /etc/init.d 目录下保留一些非 root 拥有的文件是否可以接受?
还是荒谬的,扰乱了系统的自然秩序?
Tim*_*ost 17
立即想到的是一个弱势用户能够以root 身份在启动时运行东西,这对破解者来说是可取的:
如果您的弱势用户以某种方式受到损害,可能是通过其他服务 (http/etc),这是可能的。大多数攻击者会快速运行一个ls或一个find/所有的东西,/etc只是为了看看是否存在这种可能性,他们使用各种语言编写的 shell 使这变得简单。
如果您远程管理服务器,主要是通过 SSH,除非您检查 init 脚本,否则很有可能您甚至看不到这一点,因为您不会在启动时看到输出(不过,您应该使用一些根据已知哈希检查这些脚本的哈希值,以查看是否有更改,或版本控制软件等)
您绝对不希望这种情况发生,root 确实需要拥有该 init 脚本。您可以将开发用户添加到 sudoers 列表中,这样更新脚本就足够方便了,但我建议不要允许对 init.d 中的任何内容进行低权限写访问
除了 Tim Post 提出的非常好的观点之外,我还要补充一点,对于需要多人将更改推送到服务器的设置,您应该考虑使用某种配置管理系统。
例如,如果您使用 puppet、chef 或 cfengine,您可以让相关用户在本地编辑文件,然后使用配置管理推送更改。确切的设置方式当然会因您使用的系统而异,但正确设置它将包括版本控制软件,以便在(注意:当,而不是如果!)有人犯了一个错误。它还可以让您更轻松地将配置复制到单独的测试系统等。