这是 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 = yes
并且wide links = yes
仅放入您真正需要的共享部分。
该unix extension
标志必须位于全局部分,而不是单个共享部分。但出于安全原因,最好仅在需要时使用其他选项,而不是全局使用。
答案1
编辑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
答案2
除了其他答案之外,为了保持 UNIX 扩展处于启用状态,可以使用:
[global]
allow insecure wide links = yes
[share]
follow symlinks = yes
wide links = yes
答案3
您好,我尝试将其放入配置中以修复我的设置的 Windows 符号链接,但我不确定它是否会影响 Windows 客户端,否则当我连接到此框时它会遵循符号链接。
[global]
unix extensions = no
答案4
如果您运行的是 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