it-swarm-vi.com

Làm thế nào để bạn thực hiện samba theo symlink bên ngoài đường dẫn được chia sẻ

Đây là máy chủ Ubuntu 10.04 64 và samba 3.4.7.

Tôi có một thư mục chia sẻ /home/mit/share và một cái khác /home/temp mà tôi liên kết vào một chia sẻ:

ln -s /home/temp /home/mit/share/temp

Nhưng trên windows, sau khi sử dụng internet, tôi không thể mở S:/temp, nhưng trên Linux có thể truy cập /home/mit/share/temp như mong đợi.

Điều này hoạt động nếu tôi liên kết các thư mục bên trong /home/mit/share/temp, vì vậy tôi đoán samba đang hạn chế nhảy với một liên kết bên ngoài/phía trên thư mục chia sẻ.

CHỈNH SỬA:

Xem thêm câu hỏi này có tiêu đề buntu + phiên bản samba mới nhất, symlink không còn hoạt động trên chia sẻ được gắn trong Windows .

Có vẻ tốt nhất để đặt unix extensions = no vào phần toàn cầu và follow symlinks = yeswide links = yes chỉ vào phần chia sẻ, nơi bạn thực sự cần nó.

Các unix extension cờ phải sống trong phần toàn cầu chứ không phải trong các phần chia sẻ riêng lẻ. Nhưng vì lý do bảo mật, tốt hơn là chỉ sử dụng các tùy chọn khác khi bạn cần chứ không phải trên toàn cầu.

65
mit

Chỉnh sửa smb.conf

[global]
unix extensions = no

[share]
follow symlinks = yes
wide links = yes

Lưu ý: Nếu bạn đang sử dụng phiên bản samba mới hơn, những thứ sau đây có thể phù hợp với bạn:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

tài liệu về follow symlinkswide links cờ: https://www.samba.org/samba/docs/USE_samba/ch08.html#samba2-CHP-8-TABLE-1

102
Mahesh

Ngoài ra, với các câu trả lời khác, để bật tiện ích mở rộng unix, có thể sử dụng:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes
11
user1182474

Xin chào, tôi đã thử đặt cấu hình này để sửa lỗi liên kết tượng trưng cho windows để thiết lập, nhưng tôi không chắc liệu nó có ảnh hưởng đến máy khách windows hay không, nếu không nó sẽ theo liên kết tượng trưng khi tôi kết nối với hộp này.

[global]                                                                        
unix extensions = no
11
Qiqi

Để cho phép khách hàng Samba theo dõi các liên kết ngoài đường dẫn được chia sẻ, tất cả những gì bạn cần trong cấu hình Samba là:

[global]
allow insecure wide links = yes
unix extensions = no

[myShare]
wide links = yes

(tất nhiên, ngoài các định nghĩa chia sẻ Samba, tất nhiên). Điều này là đủ về mặt lý thuyết cho các khách hàng * nix.

Lưu ý: Chỉ thị "theo liên kết tượng trưng" là không cần thiết vì nó mặc định là "có"

Đối với các máy khách Windows, vẫn còn thiếu 1 cài đặt để cho phép chúng theo các liên kết như vậy. Làm như vậy :

  1. mở Windows Shell có đặc quyền Quản trị viên
  2. chạy :

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
    
  3. khởi động lại để tải lại cài đặt

NB: kết quả tương tự có thể bị cản trở bằng cách chỉnh sửa sổ đăng ký Windows. Xem các liên kết dưới đây

nguồn:

4
Httqm

Bạn có thể cần phải giải quyết nhiều hơn chỉ tệp cấu hình Samba nếu bạn đang chạy AppArmor.

Bạn cần các chỉ thị sau trong smb.conf:

follow symlinks = yes
wide links = yes
unix extensions = no
# No need for "allow insecure wide links" unless you want "unix extensions = yes"

Nhưng, AppArmor chặn truy cập vào các phần của hệ thống tệp theo ngữ nghĩa quy tắc riêng của nó. Vì vậy, nếu liên kết tượng trưng của bạn trong Samba chỉ đến một vị trí mà AppArmor sẽ chặn, Samba sẽ từ chối quyền truy cập.

Trên hệ thống của tôi, Samba cập nhật hồ sơ AppArmor trên dịch vụ bắt đầu/dừng dịch vụ, vì vậy tôi có thể thay đổi hồ sơ AppArmor, nhưng có nguy cơ Samba hoặc chương trình khác ghi đè lên nó. Thay vào đó, tôi quyết định tạo một chia sẻ không thể truy cập trong Samba khi tham chiếu vị trí chứa mục tiêu liên kết tượng trưng mà tôi muốn truy cập (vẫn trong smb.conf):

# The following is a hack for AppArmor to allow the path
[share1 for AppArmor] # Or whichever name you choose
    browseable = no
    path = /home # Point to directory or parent directory of the location to access
    read only = yes
    guest ok = no
    valid users = none
0
palswim