Bagaimana Anda membuat samba ikuti symlink di luar jalur bersama


61

Ini adalah server Ubuntu 10.04 64 dan samba 3.4.7.

Saya memiliki direktori bersama /home/mit/sharedan direktori lain /home/tempyang saya tautkan ke direktori bersama:

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

Tetapi di windows, setelah menggunakan internet, saya tidak bisa membuka S:/temp, tetapi di Linux adalah mungkin untuk mengakses /home/mit/share/tempseperti 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.

SUNTING:

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

Tampaknya terbaik untuk dimasukkan unix extensions = noke bagian global dan follow symlinks = yesdan wide links = yeshanya ke bagian saham, di mana Anda benar-benar membutuhkannya.

The unix extensionbendera harus hidup di bagian global dan tidak di bagian saham individu. Tetapi untuk alasan keamanan, lebih baik menggunakan opsi lain hanya di tempat yang Anda butuhkan, dan tidak secara global.


Bisakah Anda mencoba hardlink, bukan symlink?
Falmarri

Jawaban:


92

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 follow symlinksdan wide linksbendera: https://www.samba.org/samba/docs/using_samba/ch08.html#samba2-CHP-8-TABLE-1


Lihat juga penjelasan di akhir pertanyaan di atas mengapa ini adalah solusi yang baik.
mit

Dalam hal, orang lain bergumul dengan semua komentar yang mengacaukan file yang agak pendek ini: salin ke cadangan, dan buat ulang yang difilter: 1: cp /etc/samba/smb.conf /etc/samba/smb.conf.bak2:grep -o '^[^#;]*' smb.conf.bak >smb.conf
Frank Nocke

tidak [share]berarti [<share_name>]?
Necktwi

@neckTwi - Itulah yang saya asumsikan, dan itu berhasil untuk saya.
Geoff

@ Geoff Itu tidak berhasil untuk saya! beralih kesshfs
Necktwi

11

Salam, saya sudah mencoba menempatkan ini ke dalam konfigurasi untuk memperbaiki symlink untuk windows untuk pengaturan 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

Jawaban Qiqi setuju dengan yang ini: superuser.com/questions/128716/...
Janus

Ya, ini pasti memperbaiki masalah di lingkungan saya.
TML

10

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

tidak [share]berarti [<share_name>]?
Necktwi

Ya, itu bisa berupa bagian smb.conf yang 'menggambarkan sumber daya bersama (dikenal sebagai “berbagi”)' (dikutip dari dokumentasi). Mungkin juga di bagian khusus [homes], di mana saya menggunakannya. Lihat dokumentasi untuk detailnya.
user1182474

4

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 shell Windows 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:


0

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

Anda memang perlu arahan berikut dalam diri Anda 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 yang merujuk lokasi yang berisi target symlink yang ingin saya akses (masih ada 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.