Thư mục được chia sẻ giữa QEMU Windows khách và máy chủ Linux


24

Trước đây tôi đã sử dụng Virtual Box có hỗ trợ rất tốt để chia sẻ thư mục trên máy chủ với khách Windows. Tôi đang tìm kiếm chức năng tương tự cho QEMU.

Tài liệu gợi ý để lộ máy chủ Samba chạy ở đâu đó trong mạng hoặc sử dụng -net user,smb=/path/to/folderđể khởi động máy chủ samba.

Tôi không có may mắn với -net user,smblựa chọn của QEMU. Tất cả những gì nó làm là bắt đầu smbd(xung đột với một dịch vụ khác chạy cục bộ do xung đột cổng). Đủ để nói, điều này là không thể sử dụng, đặc biệt là với nhiều khách trong tâm trí. (Đối với Linux, -virtfs(Gói 9) có thể được sử dụng để chia sẻ thư mục dễ dàng.)

Các vấn đề khác với Samba là nó không bị giới hạn trong việc chia sẻ thư mục, nó cũng không chia sẻ máy in, lập bản đồ người dùng và không có gì. Tất cả những gì tôi cần là chia sẻ một (hoặc nhiều?) Thư mục với khách Windows.

Có tồn tại một phương pháp chia sẻ thư mục thay thế cho QEMU hoạt động với khách Windows không?

Hoặc có cách nào để cấu hình Samba giới hạn bản thân trong một bộ tính năng rất hạn chế và tích hợp nó vào QEMU không? Nó nên:

  • Không phải ai trong mạng cũng có thể truy cập thư mục.
  • bao gồm người dùng địa phương (nếu khả thi).
  • Không cung cấp chức năng khác (chia sẻ máy in).
  • Ca sử dụng: hiển thị thư mục git cho Windows, biên dịch nó trong Windows và sử dụng Linux để phân tích.
  • Có tốc độ chấp nhận được, Windows sử dụng virtio-scsi và virtio-net.
  • Có thể chia sẻ thư mục từ máy chủ Linux với khách Windows 7.

một câu hỏi bất khả tri hơn về hệ điều hành: superuser.com/questions/628169/ từ
Ciro Santilli 改造 心 心 事件

1
@CiroSantilli 露 宪 六四 事件 question Câu hỏi đó được gắn thẻ với Linux, nơi -virtfshoạt động rất tốt (cũng xem câu hỏi này), nhưng tôi không biết trình điều khiển 9p cho Windows.
Lekensteyn

vâng, không nói đó là một bản dupe hay bất cứ thứ gì, chỉ liên quan.
Ciro Santilli 心 心 事件

Câu trả lời:


14

Dịch vụ Samba tích hợp của QEMU

-net user,smbTùy chọn không hoạt động là do không tương thích với các phiên bản Samba mới hơn (> = 4). Điều này được sửa trong QEMU v2.2.0 và mới hơn với những thay đổi sau:

(Debian đã nhập hai bản vá sau vào 2.1 + dfsg-6 hiện có trong Jessie.)

Sử dụng

Bạn có thể xuất một thư mục như \\10.0.2.4\qemukhi sử dụng Mạng người dùng:

qemu-system-x86_64 \
    -net user,smb=/absolute/path/to/folder \
    -net nic,model=virtio \
    ...

Khi QEMU được khởi động thành công với các tùy chọn này, một /tmp/qemu-smb.*-*/thư mục mới sẽ được tạo có chứa a smb.conf. Nếu bạn đủ nhanh, thì tệp này có thể được sửa đổi để tạo đường dẫn chỉ đọc hoặc xuất thêm thư mục.

Phương thức hoạt động

Trình nền samba được thực thi bất cứ khi nào các cổng 139 hoặc 445 được truy cập qua mạng "người dùng". Giao tiếp xảy ra thông qua đầu vào / đầu ra / lỗi tiêu chuẩn của quá trình smbd. Đây là lý do tại sao các trình tiện ích mới hơn không thành công, nó sẽ ghi thông báo lỗi của nó vào đường ống thay vì các thông báo giao thức.

Do phương thức hoạt động này, daemon sẽ không lắng nghe trên các cổng máy chủ và do đó sẽ chỉ có thể truy cập được cho khách. Vì vậy, các máy khách khác trong mạng và ngay cả người dùng cục bộ cũng không thể truy cập vào các thư mục bằng trình nền này.

Do việc chia sẻ máy in QEMU v2.2.0 bị vô hiệu hóa hoàn toàn thông qua cấu hình samba, nên một lo lắng khác đã xuất hiện ở đây.

Tốc độ phụ thuộc vào bộ điều hợp mạng, do đó nên sử dụng trình điều khiển virtionetkvm trong Windows.

Cũng lưu ý rằng daemon được thực thi bởi đường dẫn tuyệt đối của nó (thông thường /usr/sbin/smbd) như được chỉ định tại thời gian biên dịch (sử dụng --smbdtùy chọn). Bất cứ khi nào bạn cần thử một nhị phân mới hoặc xen kẽ smbd, bạn sẽ cần sửa đổi tệp tại đường dẫn đó.

Hãy cẩn thận

Executables ( *.exe) phải được thực thi trên máy chủ ( chmod +x FILE) để khách có quyền thực thi. Để cho phép thực hiện bất kỳ tệp nào, hãy thêm acl allow execute always = Truetùy chọn vào chia sẻ.

Ví dụ cấu hình smb.conf chỉ đọc cho phép thực thi bất kỳ tệp nào (dựa trên QEMU v2.2.0):

...
[qemu]
đường dẫn = / home / peter / windows 
chỉ đọc = 
khách ok = đúng
buộc user = peter 
acl cho phép thực thi luôn = True

Tôi đã sử dụng tùy chọn này, tôi cần cả quyền truy cập đọc-ghi. Tôi đã khởi động lại dịch vụ qemu và cập nhật conf cho phù hợp. Tôi không thấy bất cứ điều gì trong các thư mục mạng trong trình thám hiểm trong cửa sổ khách. Ngoài ra, làm cách nào để tìm IP máy chủ (tôi giả sử đó là 10.0.2.4) trong trường hợp này ở đây? IP khách của tôi cho NIC này là 10.0.2.15. @Lekensteyn - có ý tưởng nào không?
tsar2512

@ tsar2512 Thông thường tôi vào Explorer, sau đó sử dụng Map Network Drive để gán thư cho \\10.0.2.4\qemu. Gần đây tôi đã bỏ qua bước đó và mở đường dẫn nói trực tiếp từ hộp thoại Run.
Lekensteyn

6

Năm 2018, một cách đơn giản để chia sẻ thư mục giữa máy chủ Linux và máy ảo Windowsbật RDP trong Windows guestvà kết nối vmvới Remmina Remote Desktop Client & bật Thư mục dùng chung:

Cài đặt RDP của Remmina

Điều này tạo ra một thư mục trong Máy tính này ( thư mục dùng chung trên Linuxhostname ) & \\tsclient\shared-folder-namechia sẻ mạng bên trong guest. Bạn cũng có thể ánh xạ ổ đĩa mạng:

Chia sẻ thư mục Windows Guest

  • Giải pháp này không cần sambaphải chạy.

  • Đã thử nghiệm dưới libvirt/ virt-managernhưng nên hoạt động với bất kỳ ảo hóa nào.


Kỹ thuật thú vị, Chuyển hướng hệ thống tệp dường như là một tính năng RDP. Các xfreerdp /drive:shared-folder-name,/home/user/sharedtùy chọn nên làm việc là tốt. Tham chiếu mã nguồn: Cấu hình Remmina , mã thư viện FreeRDP .
Lekensteyn

Đây có phải là một giải pháp an toàn mà không có bất kỳ nguy hiểm của những kẻ tấn công tiềm năng?
Dave
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.