Samba でシンボリックリンク先を参照する

DocumentRoot 内の一部ディレクトリを Samba(CIFS)経由 で編集したくなったので、Samba に設定を追記することにしました。

目次

方法

DocumentRoot の指定ディレクトリを共有フォルダ内に設置しました。
設置にはシンボリックリンクを使います。

設定

シンボリックリンクの作成

Samba を設定する前に、シンボリックリンクを作成しておきます。

    • シンボリックリンク元
      /var/www/html/files
    • シンボリックリンク先
      /media/share/symlinkDir
# cd /media/share/
# ln -s /var/www/html/files symlinkDir

Samba 設定

smb.conf の [global] セクションにシンボリックリンクを利用するための設定を追記します。
※ [global] は全体設定を記述するセクションです。

概要

シンボリックリンクを利用するためには「unix extensions = no」を設定し、合わせて「wide links = yes」を設定する必要があります。

base on smb.conf

allow insecure wide links (G)
通常動作時においては、共有パスの外側へのシンボリックリンク許可 を制御するwide linksオプションは、 unix extensionsがSambaサーバー上で有効な 時には、自動的に無効にされる。
ほとんどの 通常のSambaの設定では、これを行うとセキュリティホールに なり、このパラメーターを設定することは推奨されない。
このパラメーターは unix extensionsオプションがonの場合は、 (その旨をログに記録して)自動的に無効となる。

  • 既定値: allow insecure wide links = no

unix extensions (G)
この真偽値パラメーターは、Samba が HP 社によって定義された CIFS の UNIX拡張を利用するかどうかを制御する。
これらの拡張は、UNIX クライアントから UNIX サーバーに対して接続する際に有用な CIFS を有効にし、 シンボリックリンクやハードリンクなどを利用可能にする。 これらの拡張により、Samba は UNIX の CIFS クライアントに対して、 シンボリックリンクやハードリンクといった機能を提供することが可能となる。

  • 既定値: unix extensions = yes

設定内容

[global] セクションに追記します。

# diff -u /root/smb.conf /etc/samba/smb.conf 
--- /root/smb.conf  2019-04-25 10:17:32.493930763 +0000
+++ /etc/samba/smb.conf 2019-04-25 10:23:07.887679329 +0000
@@ -25,6 +25,9 @@

 ## Browsing/Identification ###

+unix extensions = no
+wide links = yes
+
 # Change this to the workgroup/NT-domain name your Samba server will part of
    workgroup = WORKGROUP

権限変更

Apache・Samba 双方で都合のいい権限を割り当てます。

確認

Samba 経由で閲覧・(必要に応じて)編集ができることを確認して完了です。