2015-05-13 58 views
3

我可能對程序使用Linux功能感興趣(特別是,cap_net_bind_service允許程序綁定到小於1024的TCP端口)。Linux功能是否適用於binfmt_misc?

不過,我想要做一個程序,它是在Mono下運行的C#。通常情況下,我認爲這意味着Mono解釋器本身需要設置其功能,而不是它運行的whatever.exe程序。

但是,Linux也可以有Mono binary kernel support,通過內核binfmt_misc的機制。

那麼,內核binfmt_misc機制是否可以使用功能?也就是說,一個特定的啓用binfmt_misc的可執行文件可以運行特定的功能集。

回答

0

通常情況下,我認爲這將意味着單聲道解釋本身就需要有它設置的功能[...]

如果您在設置功能它將採取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 
+0

那麼,什麼是['setcap'(http://linux.die.net/man/8/setcap)呢?例如,請參閱[此答案](http://stackoverflow.com/a/414258/60075)。 –

+0

Heh。好的,這是功能工具的一個完全不同的部門,而不是我知道的部分。但是,它不是您需要使用的分支 - 您可以使用進程樹表單,而不是基於文件的表單,如果這更適合您的用例。 –

+0

所以實際上,如果我使用systemd而不是sysvinit來啓動進程,我可以這樣做嗎?也就是說,sysvinit似乎無法控制功能? –