it-swarm-id.com

Bagaimana Anda membuat samba ikuti symlink di luar jalur bersama

Ini adalah server Ubuntu 10.04 64 dan samba 3.4.7.

Saya memiliki direktori bersama /home/mit/share dan satu lagi /home/temp yang saya tautkan ke yang dibagikan:

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

Tetapi di windows, setelah menggunakan internet, saya tidak bisa membuka S:/temp, tetapi di Linux dimungkinkan untuk mengakses /home/mit/share/temp seperti yang diharapkan.

Ini berfungsi jika saya menautkan direktori di dalam /home/mit/share/temp, jadi saya kira samba membatasi untuk melompat dengan tautan di luar/di atas direktori bersama.

EDIT:

Lihat juga pertanyaan ini berjudul buntu + versi samba terbaru, symlinks tidak lagi berfungsi pada share yang dipasang di Windows .

Tampaknya lebih baik untuk menempatkan unix extensions = no ke bagian global dan follow symlinks = yes dan wide links = yes hanya ke bagian bagikan, di mana Anda benar-benar membutuhkannya.

unix extension flag harus tinggal di bagian global dan bukan di bagian saham individu. Tetapi untuk alasan keamanan, lebih baik menggunakan opsi lain hanya di mana Anda membutuhkannya, dan tidak secara global.

65
mit

Edit smb.conf

[global]
unix extensions = no

[share]
follow symlinks = yes
wide links = yes

Catatan: Jika Anda menggunakan versi samba yang lebih baru, yang berikut ini mungkin cocok untuk Anda:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

dokumentasi pada follow symlinks dan wide links flags: https://www.samba.org/samba/docs/using_samba/ch08.html#samba2-CHP-8-TABLE-1

102
Mahesh

Atau dengan jawaban lain, agar ekstensi unix tetap aktif, dimungkinkan untuk menggunakan:

[global]
allow insecure wide links = yes

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

Salam, saya sudah mencoba menempatkan ini ke dalam konfigurasi untuk memperbaiki symlink untuk windows untuk setup saya, tetapi saya tidak yakin apakah itu akan mempengaruhi klien windows, jika tidak maka akan mengikuti symlink ketika saya terhubung ke kotak ini.

[global]                                                                        
unix extensions = no
11
Qiqi

Untuk memungkinkan klien Samba mengikuti symlink di luar jalur bersama, yang Anda butuhkan dalam konfigurasi Samba adalah:

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

[myShare]
wide links = yes

(Selain definisi Samba sendiri, tentu saja). Ini - secara teoritis - cukup untuk * nix klien.

NB: Arahan "follow symlinks" tidak diperlukan karena standarnya adalah "yes"

Adapun klien Windows, 1 pengaturan masih hilang untuk membiarkan mereka mengikuti tautan tersebut. Untuk melakukannya:

  1. buka Windows Shell yang memiliki hak Administrator
  2. lari :

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
    
  3. reboot untuk memuat ulang pengaturan

NB: hasil yang sama dapat diperoleh dengan mengedit registri Windows. Lihat tautan di bawah

sumber:

4
Httqm

Anda mungkin perlu mengatasi lebih dari sekadar file konfigurasi Samba jika Anda menjalankan AppArmor.

Anda memang perlu arahan berikut dalam smb.conf:

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

Tetapi, AppArmor memblokir akses ke bagian-bagian dari sistem file sesuai dengan semantik pengaturannya sendiri. Jadi, jika symlink Anda di dalam Samba menunjuk ke lokasi yang akan diblokir AppArmor, Samba akan menolak akses.

Di sistem saya, Samba memperbarui profil AppArmor pada layanan start/stop, jadi saya bisa mengubah profil AppArmor, tetapi berisiko Samba atau program lain menimpanya. Sebagai gantinya, saya memutuskan untuk membuat bagian yang tidak dapat diakses di Samba merujuk lokasi yang berisi target symlink yang ingin saya akses (masih di 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