Tại sao tôi không thể liên kết gắn kết giữa các ứng dụng trong không gian tên người dùng?


13

Tại sao điều này không làm việc?

$ unshare -rm mount --bind / /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /, missing codepage or helper program, or other error.

Những việc này ổn

$ unshare -rm mount --bind /tmp /mnt
$ unshare -rm mount --bind /root /mnt
$

$ uname -r  # Linux kernel version
4.17.3-200.fc28.x86_64

Câu trả lời:


16

Sự khác biệt là /có gắn kết trẻ em. Trong không gian tên người dùng, bạn không được phép tách các gắn kết được kế thừa từ các gắn kết con của chúng. Một ví dụ rõ ràng hơn là bạn không được phép umount /proc. Nếu không, nó có thể đột nhiên cấp cho bạn quyền truy cập vào các tệp bị ẩn bên dưới các giá trị gắn kết khác. Overmounts đôi khi được sử dụng có chủ ý như một biện pháp bảo mật.

Thay vào đó, bạn được phép tạo ra một liên kết gắn kết đệ quy, bảo tồn tất cả các gắn kết phụ:

$ unshare -rm mount --rbind / /mnt
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.