簡體   English   中英

如何在沒有root的情況下“裝載”在我的過程空間中?

[英]How can I “mount” within my process space without being root?

我試圖掛載overlayfs而不是C ++代碼的 我希望能夠發生這種mount並且僅對我自己的進程及其后代可見:

if(-1 == mount("overlay", "./mnt", "overlay", MS_MGC_VAL, "lowerdir=/,upperdir=./upper,workdir=./work"))
    std::cerr << "e: " << errno << std::endl;
    ....

不幸的是,我得到的錯誤是Operation not permitted 我怎樣才能做到這一點? 即使是簡單的tmpfs掛載也不能不成為root用戶 我在4.4.0-53內核上4.4.0-53

可以通過user namespaces進行編程; 通過調用:

clone(child_func, ..., CLONE_NEWNS | CLONE_NEWUSER | SIGCHLD, ...);
...
int child_func(void* args) {
    mount("overlay", "./mnt", "overlay", MS_MGC_VAL, "lowerdir=/,upperdir=./upper,workdir=./work");
    ...
}

理想情況下,您還希望設置/proc/<pid>/uid_map/proc/<id>/gid_map以便更好地執行。 也許最好的例子可以在手冊頁上找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM