named-checkzone:以非 root 用户身份 chroot 选项“-t”

named-checkzone:以非 root 用户身份 chroot 选项“-t”

我们在 chroot 环境中运行绑定名称服务器。我们在另一台主机上编辑区域文件,希望named-checkzone在上传之前验证这些文件。我们使用参数-w来调整目录,但当我们开始在区域文件中使用绝对路径的包含时,它就停止工作了。因此,我尝试使用参数-t来模拟实际服务器的 chroot 行为,但要实现这一点,named-checkzone需要 chroot 的权限。我正在考虑创建一个 named-checkzone 的副本并赋予它 CAP_SYS_CHROOT 功能,以避免需要以 root 身份运行它。然后,该副本将对负责编辑区域文件的用户组可执行。

由于 CAP_SYS_CHROOT 可能导致安全问题(如“创建自己的 etc/passwd,chroot + su”),我宁愿避免使用它。有没有更好的方法可以named-checkzone在这种设置下工作?

答案1

创建一个特权脚本或服务,设置 chroot 并named-checkzone在内部以非特权方式运行(即在 chroot 之后将权限降至原始 UID)。这就是 BIND 本身和其他网络服务实现其“chroot”选项的方式。

或者,创建一个非特权用户命名空间使用unshare --user,您将能够设置自定义挂载命名空间 - 用户命名空间内的 UID 0 不会自动映射到父命名空间中的 UID 0,并且在那里没有特殊权限。(用户命名空间通常用作容器实现的一部分。)

(或者,最后,不要使用绝对路径......)

相关内容