Mô phỏng chroot với unshare


13

Tôi đang cố gắng viết một bootstrapper để phân phối linux từ nguồn tối thiểu.

Tôi muốn xây dựng trong một môi trường giống như chroot. Điều này sẽ đơn giản hóa bao bì. Tôi không quan tâm đến an ninh tại thời điểm này. Bootstrapper không nên yêu cầu bất kỳ lệnh bên thứ ba không chuẩn nào. Nó sẽ là tuyệt vời nếu không cần phải root.

Đây là lý do tại sao fakechroot (1) fakeroot (1) chroot (1) không chính xác như những gì tôi đang tìm kiếm.

Có thể giả mạo / sử dụng unshare (1) và / bin / sh không?


AFAICS, unshare(1)là một trình bao bọc khá mỏng xung quanh bộ sưu tập các cuộc gọi hệ thống chỉ dành cho root và (ít nhất là trên Fedora 18) nó không SUID, vì vậy tôi nghi ngờ rất nhiều điều đó sẽ hoạt động cho người dùng không root.
vonbrand

Oh đó là một sự xấu hổ. Tôi đã có ấn tượng unshare là setuid. Tôi đoán tôi ổn với việc root.
Rooties

4
Với việc phát hành kernel Linux 3.8 mới, bạn có thể sử dụng các tính năng không gian tên dưới dạng không root. Nhưng đây là công cụ mới sáng bóng: trước tiên bạn cần một không gian tên uid và unshare chưa hỗ trợ điều đó. Và hành động của bạn vẫn sẽ bị hạn chế.
BatchyX

Câu trả lời:


5

Đúng. Nếu kernel của bạn hỗ trợ user_namespaces (và chúng được bật) , trước tiên bạn có thể "mô phỏng người dùng root", sau đó có quyền gọi chroot(với tư cách là người dùng root thực sự). (Điều mà trước đây chỉ cần được giới hạn cho người dùng root vì khả năng leo thang đặc quyền của người dùng thông thường (giả sử, thông qua các nhị phân gốc set-UID và thư viện tùy chỉnh trong thư mục chroot).)

Bạn có thể thử điều này trong vỏ của bạn:

unshare --user --map-root-user --mount-proc --pid --fork
/sbin/chroot ......
su - user1

tùy chọn không được nhận dạng '--map-root-user'
Zibri

1
@Zibri Nó hoạt động với tôi bây giờ, với unsharetừ produc-linux-2.30.2-alt1
imz - Ivan Zakharyaschev

1

Chỉ cần gói hoặc cài đặt fakeroot / fakechroot, vì chúng đã hoàn toàn thích hợp cho việc này. Nhìn vào cdebootstrap cho cảm hứng.

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.