共有パス外のシンボリックリンクにSambaをどのように追従させますか


61

これは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は共有ディレクトリの外部/上にあるリンクでジャンプするように制限していると思います。

編集:

Ubuntu +最新のsambaバージョンというタイトルのこの質問も参照してください。シンボリックリンクはWindowsにマウントされた共有では動作しません

置くのがベストと思われるunix extensions = noグローバルセクションとにfollow symlinks = yeswide links = yesだけあなたが本当にそれを必要とする株式セクション、に。

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


シンボリックリンクの代わりにハードリンクを試すことはできますか?
ファルマーリ

回答:


92

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 symlinkswide linksフラグ:https : //www.samba.org/samba/docs/using_samba/ch08.html#samba2-CHP-8-TABLE-1


なぜこれが良い解決策であるかについては、上記の質問の最後にある説明も参照してください。
MIT

場合によっては、誰かがこの短いファイルを難読化するすべてのコメントに苦労しています:バックアップにコピーし、フィルターを再作成します:1:cp /etc/samba/smb.conf /etc/samba/smb.conf.bak2:grep -o '^[^#;]*' smb.conf.bak >smb.conf
Frank Nocke

ない[share]わけ[<share_name>]
ネックウィ

@neckTwi-それは私が仮定したことであり、それは私のために働いた。
ジェフ

@Geoffそれは私にはうまくいきませんでした!に切り替えられましたsshfs
Necktwi

11

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

[global]                                                                        
unix extensions = no

Qiqiのの答えは、この1に同意する:superuser.com/questions/128716/...
ヤヌス

はい、これは私の環境の問題を確実に修正します。
TML

10

他の回答の代わりに、Unix拡張機能を有効にしておくために、以下を使用することができます。

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

ない[share]わけ[<share_name>]
ネクトウィ

はい、「共有リソース(「共有」と呼ばれます)を説明する」smb.confセクションを使用できます(ドキュメントから引用)。[homes]私が使用する特別なセクションにもあるかもしれません。詳細については、ドキュメントを参照してください。
user1182474

4

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

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

[myShare]
wide links = yes

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

注意:「yes」にデフォルト設定されているため、「follow symlinks」ディレクティブは不要です。

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

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

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
    
  3. 再起動して設定をリロードする

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

ソース:


0

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.