【问题标题】:Do Linux capabilities work with binfmt_misc?Linux 功能可以与 binfmt_misc 一起使用吗?
【发布时间】:2015-07-24 01:51:36
【问题描述】:

我可能有兴趣为程序使用 Linux 功能(具体来说,cap_net_bind_service 允许程序绑定到小于 1024 的 TCP 端口)。

但是,我想为在 Mono 下运行的 C# 程序执行此操作。通常,我认为这意味着 Mono 解释器本身需要设置功能,而不是它运行的 whatever.exe 程序。

不过,Linux 也可以有Mono binary kernel support,通过内核binfmt_misc 机制。

那么,内核 binfmt_misc 机制是否适用于功能?也就是说,启用 binfmt_misc 的特定可执行文件可以使用特定的功能集运行。

【问题讨论】:

    标签: linux mono linux-capabilities


    【解决方案1】:

    通常,我认为这意味着 Mono 解释器本身需要设置功能[...]

    如果您在有问题的进程树上而不是在文件上设置功能,那么 binfmt_misc 就没有问题了。

    请参阅cap_set_proc(),以及用于操作它的工具。例如,如果您使用的是 systemd:

    [Service]
    ExecStart=/usr/bin/mono /path/to/your/executable.exe
    User=your_service_account
    Capabilities=CAP_NET_BIND_SERVICE
    

    【讨论】:

    • 那么setcap 是做什么的呢?例如,请参阅this answer
    • 嘿。好的,这是功能工具的一个完全不同的分支,与我所知道的部分不同。但是,它不是您需要使用的分支——如果更适合您的用例,您可以使用流程树表单,而不是基于文件的表单。
    • 所以实际上,如果我使用 systemd 而不是 sysvinit 来启动进程,我可以这样做吗?也就是好像sysvinit缺乏对能力的控制?
    • 还有更多的选择——如果你设置了可继承标志,那么你可以把这个功能放在一个编译的启动器上,然后从你的 sysvinit 脚本中调用它。
    • 我很想知道您在这里得到的其他答案;我对使用 binfmt_misc 实际测试行为没有足够的兴趣,但可能值得这样做。
    猜你喜欢
    • 2021-11-11
    • 2021-08-23
    • 2017-08-04
    • 2015-08-08
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    相关资源
    最近更新 更多