web-dev-qa-db-ja.com

サンバに共有パス外のシンボリックリンクを追跡させるには

これは、Ubuntuサーバー10.04 64およびsamba 3.4.7です。

共有ディレクトリ/home/mit/shareと、共有ディレクトリにリンクする別のディレクトリ/home/tempがあります。

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

しかし、Windowsでインターネットを使用した後はS:/tempを開くことができませんが、Linuxでは予想どおり/home/mit/share/tempにアクセスできます。

これは/home/mit/share/temp内のディレクトリをリンクする場合に機能するので、sambaは共有ディレクトリの外/上のリンクでジャンプするように制限していると思います。

編集:

buntu +最新のsambaバージョン、シンボリックリンクがWindowsにマウントされた共有で機能しない というタイトルのこの質問も参照してください。

unix extensions = noをグローバルセクションに配置し、follow symlinks = yeswide links = yesを、本当に必要な共有セクションのみに配置するのが最善のようです。

unix extensionフラグは、個々の共有セクションではなく、グローバルセクションに存在する必要があります。ただし、セキュリティ上の理由から、他のオプションは必要な場合にのみ使用し、グローバルには使用しないことをお勧めします。

65
mit

Smb.confを編集する

[global]
unix extensions = no

[share]
follow symlinks = yes
wide links = yes

注:新しいバージョンのsambaを使用している場合は、代わりに以下が機能する場合があります。

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

follow symlinksおよびwide linksフラグに関するドキュメント: https://www.samba.org/samba/docs/using_samba/ch08.html#samba2-CHP-8-TABLE-1 =

102
Mahesh

他の回答の代わりに、unix拡張機能を有効にしておくには、以下を使用できます。

[global]
allow insecure wide links = yes

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

こんにちは、これを設定に入れて、セットアップ用のウィンドウのシンボリックリンクを修正しようとしましたが、それがWindowsクライアントに影響するかどうかはわかりません。

[global]                                                                        
unix extensions = no
11
Qiqi

Sambaクライアントが共有パス外のシンボリックリンクをたどれるようにするには、Samba構成で必要なのは次のとおりです。

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

[myShare]
wide links = yes

(もちろん、Sambaは定義自体を共有しています)。これは理論的には* nixクライアントには十分です。

注意:「symlinksに従う」ディレクティブはデフォルトで「yes」になっているため必要ありません。

Windowsクライアントについては、そのようなリンクをたどる1つの設定がまだありません。そうするには :

  1. 管理者権限を持つWindowsシェルを開く
  2. 実行:

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
    
  3. 再起動して設定を再読み込み

注意:Windowsレジストリを編集しても同じ結果が得られます。以下のリンクを参照してください

出典:

4
Httqm

AppArmorを実行している場合は、Samba構成ファイル以外にも対処する必要がある場合があります。

smb.confには次のディレクティブが必要です。

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

ただし、AppArmorは独自のルールセットセマンティクスに従ってファイルシステムの一部へのアクセスをブロックします。したがって、Samba内のシンボリックリンクがAppArmorがブロックする場所を指している場合、Sambaはアクセスを拒否します。

私のシステムでは、Sambaはサービスの開始/停止時にAppArmorプロファイルを更新するため、AppArmorプロファイルを変更できますが、Sambaまたは別のプログラムがそれを上書きする危険があります。代わりに、アクセスしたいシンボリックリンクターゲットが含まれている場所を参照するSambaにアクセスできない共有を作成することにしました(まだ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