Xem / thao tác các không gian tên mount trong Linux


8

Có cách nào để xem hoặc thao tác không gian tên mount cho một quá trình tùy ý không?

Ví dụ, một container docker đang chạy có gắn kết cục bộ với máy chủ NFS. Nó có thể được nhìn thấy từ bên trong container, nhưng ở bên ngoài, chủ nhà không có kiến ​​thức về nó. Với không gian tên mạng, điều này là có thể làm được. ví dụ đường ống

Tuy nhiên, tôi không thấy gì về điều này đối với không gian tên mount. Có một lớp API hoặc sysfs nào được hiển thị để xem các mount này và thao tác hoặc tạo các cái mới không?

Câu trả lời:


6

Đúng. Bạn có thể nhìn vào nó /proc/$PID/mountinfohoặc nếu không bạn có thể sử dụng công findmnt -Ntắc - nói về findmnt --help:

  • -N, --task <tid>
    • sử dụng không gian tên thay thế ( /proc/<tid>/mountinfotệp)

findmntcũng theo dõi PROPAGATIONcờ là mountinfotrường báo cáo chính xác thông tin này - quá trình chia sẻ gắn kết nào.

Ngoài ra, bạn luôn có thể nsenterbất kỳ loại không gian tên nào bạn thích - tất nhiên với điều kiện bạn có quyền chính xác.

 nsenter --help
Usage:
 nsenter [options] <program> [args...]

Options:
 -t, --target <pid>     target process to get namespaces from
 -m, --mount [=<file>]  enter mount namespace
 -u, --uts   [=<file>]  enter UTS namespace (hostname etc)
 -i, --ipc   [=<file>]  enter System V IPC namespace
 -n, --net   [=<file>]  enter network namespace
 -p, --pid   [=<file>]  enter pid namespace
 -U, --user  [=<file>]  enter user namespace
 -S, --setuid <uid>     set uid in user namespace
 -G, --setgid <gid>     set gid in user namespace
 -r, --root  [=<dir>]   set the root directory
 -w, --wd    [=<dir>]   set the working directory
 -F, --no-fork          do not fork before exec'ing <program>

 -h, --help     display this help and exit
 -V, --version  output version information and exit

For more details see nsenter(1).

0

Hạt nhân cũng cung cấp một truy cập trực tiếp dễ dàng cho trường hợp cụ thể của không gian tên mount của pid / tid đã cho : /proc/<pid>/root/.

Đây là một liên kết đến thư mục gốc ( /) của quá trình đó, bao gồm tất cả các điểm gắn kết (nó xuất hiện dưới dạng một liên kết tượng trưng /nhưng thực sự giải quyết theo quy trình ' /, giống như đang xử lý các liên kết tượng trưng của các tệp bị xóa /proc/<pid>/fd/).

Ví dụ, điều này rất hữu ích để sao chép một tệp giữa máy chủ và / hoặc các thùng chứa khi các thùng chứa đó không có môi trường và lệnh có sẵn (ví dụ: không có vỏ) để làm như vậy. Điều này sẽ không thể thực hiện được khi sử dụng nsenter, ít nhất là không có phần mềm chuyên dụng không dựa vào fork / exec sau này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.