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


61

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

Tôi có một thư mục được chia sẻ /home/mit/sharevà một thư mục khác /home/tempmà tôi liên kết vào thư mục được 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 thì có thể truy cập /home/mit/share/tempnhư 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 được chia sẻ.

BIÊN TẬP:

Xem thêm câu hỏi này có tiêu đề Ubuntu + 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 để đưa unix extensions = novào phần toàn cầu và follow symlinks = yeswide links = yeschỉ vào phần chia sẻ, nơi bạn thực sự cần nó.

Các unix extensioncờ phải sống trong phần toàn cầu và không có trong cổ phần 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.


Bạn có thể thử một liên kết cứng thay vì một liên kết tượng trưng?
Falmarri

Câu trả lời:


92

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 mới hơn của samba, những điều 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 linkscờ: https://www.samba.org/samba/docs/USE_samba/ch08.html#samba2-CHP-8-TABLE-1


Xem thêm lời giải thích ở cuối câu hỏi trên tại sao đây là một giải pháp tốt.
mit

Trong trường hợp, ai đó đấu tranh với tất cả những lời bình luận làm xáo trộn tập tin khá ngắn này: sao chép vào bản sao lưu và tạo lại được lọc: 1: cp /etc/samba/smb.conf /etc/samba/smb.conf.bak2:grep -o '^[^#;]*' smb.conf.bak >smb.conf
Frank Nocke

[share]nghĩa là [<share_name>]gì?
Necktwi

@neckTwi - Đó là những gì tôi giả định và nó hiệu quả với tôi.
Geoff

@Geoff Điều đó không làm việc cho tôi! chuyển sangsshfs
Necktwi

11

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 thì 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

Câu trả lời của Qiqi đồng ý với câu hỏi này: superuser.com/questions/128716/ mẹo
Janus

Vâng, điều này chắc chắn khắc phục vấn đề trong môi trường của tôi.
TML

10

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

[share]nghĩa là [<share_name>]gì?
Necktwi

Có, nó có thể là bất kỳ phần smb.conf nào 'mô tả tài nguyên được chia sẻ (được gọi là một phần chia sẻ trực tuyến)' (trích dẫn từ tài liệu). Nó cũng có thể là trong một phần đặc biệt [homes], nơi tôi sử dụng nó. Xem tài liệu để biết chi tiết.
dùng1182474

4

Để 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.

NB: 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ở một vỏ Windows 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:


0

Bạn có thể cần 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 còn 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
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.