【问题标题】:AOSP: Android privilaged port, file group and starting serviceAOSP:Android 特权端口、文件组和启动服务
【发布时间】:2024-01-07 20:27:02
【问题描述】:

我正在尝试将 http 服务器添加到基于 5.1 的自定义 ROM。我设法通过 device.mk 中的 PRODUCT_COPY_FILES 将 lighttpd 二进制文件放入 system/xbin 中,并且能够在 eng build 的设备中成功运行它。服务器正在监听端口80

但在用户构建中,服务器无法绑定到80。选中后,文件所有者/组为 root/shell。这是不允许端口 80 的原因吗?如何在放置二进制文件时更改为root/root?有没有其他方法可以绑定到 80

EDIT-1

我尝试的另一个选项是使用 iptables.. 但同样,权限被拒绝。 有没有办法在 android 源代码中添加 iptable 规则并构建?

还阅读了有关“更新 linux 配置”以将端口 80 标记为非特权端口的信息。但不知道如何做到这一点。

提前致谢。

【问题讨论】:

    标签: android linux android-source


    【解决方案1】:

    您不应让它在端口 80 上以 root 身份运行。这可能会导致安全漏洞。

    要么在高于 1024 的端口上运行,要么阅读此 answer ,尤其是解释如何使用 su 的部分

    【讨论】:

    • 感谢您的回复。我几乎没有其他系统试图连接到端口 80 .. 因此这次尝试。在 6 个月内,我们将更新它们以指向更高的端口。我尝试通过 su .. 但没有运气。仍然拒绝端口 80 权限。有趣的是,su 也是 root:shell。看起来将 lighttpd 更改为 root:root 是唯一的选择..
    • 如果在这个 android 设备上启用了 selinux。你可能也必须处理这个问题。
    • 我使用 android_filesystem_config.h 为 su 管理了 root:root。还将权限设置为 6755。但令我惊讶的是,仍然不允许使用端口 80。此外,su 无法在 system/xbin 中设置另一个文件的 chown。其他哪个方面会是破坏点?正如我所提到的,在 eng build 端口 80 是开放的。 SELinux 已禁用。
    • 我不确定使用 su 或以 root 身份运行它与安全视图是否真的不同。