mount_namespaces sẽ cho phép bạn mount --bind
không nhìn thấy các quy trình khác. Nhưng thông thường mount --bind
chỉ giới hạn cho người dùng root (vì lý do bảo mật). Vì vậy, để mount_namespaces được sử dụng cho người dùng không phải root, trước tiên bạn nên sử dụng user_namespaces để trở thành "root cục bộ" trong không gian tên mới, khi đó thao tác này sẽ được phép.
Bạn có thể chơi với cái này trong shell của mình như thế này - ví dụ này cho thấy cụ thể việc sử dụng không gian người dùng & mount để chuẩn bị thư mục chroot (và chroot
hoạt động cũng thường được đặc quyền):
unshare --user --map-root-user --mount-proc --pid --fork
mkdir -p newroot/dev
mount --rbind /dev newroot/dev
....other chroot preparation....
chroot newroot
su - user1
Lưu ý rằng tôi đang sử dụng mount --rbind
(thay vì mount --bind
), vì chỉ điều này mới hoạt động trong không gian tên người dùng & mount mới, nếu thư mục bao gồm các điểm gắn kết khác (và /dev/
trong trường hợp của tôi).
Có lẽ lời giải thích cho điều này là người dùng không nên tìm cách nhìn thấy thứ mà thông thường người dùng không có đặc quyền sẽ không nhìn thấy, tức là các thư mục con bị ẩn bởi "phần phụ". Không tước bỏ các phần phụ, chỉ --rbind
được phép.