如何使samba遵循共享路径之外的symlink


61

这是Ubuntu服务器10.04 64和samba 3.4.7。

我有一个共享目录/home/mit/share,另一个/home/temp链接到共享目录:

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

但是在Windows上,使用Internet后,我无法打开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标志必须位于全局部分中,而不是单个共享部分中。但是出于安全原因,最好仅在需要时使用其他选项,而不要全局使用。


您可以尝试使用硬链接而不是符号链接吗?
法尔玛里2011年

Answers:


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


另请参阅上述问题末尾的解释,这是一个好的解决方案。
麻省理工学院

以防万一,有人对所有这些简短的文件感到困惑:将其复制到备份中,然后重新创建过滤器:1:cp /etc/samba/smb.conf /etc/samba/smb.conf.bak2:grep -o '^[^#;]*' smb.conf.bak >smb.conf
Frank Nocke

没有[share]意思[<share_name>]
Necktwi

@neckTwi-这就是我的假设,对我有用。
杰夫(Geoff)

@Geoff对我不起作用!切换至sshfs
Necktwi

11

问候,我尝试将其设置为配置以修复Windows的符号链接以进行设置,但是我不确定它是否会影响Windows客户端,否则当我连接到此框时会遵循符号链接。

[global]                                                                        
unix extensions = no

Qiqi的答案与此一致:superuser.com/questions/128716/…–
Janus

是的,这肯定可以解决我的环境中的问题。
TML

10

除了其他答案以外,要保持启用unix扩展,可以使用:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

没有[share]意思[<share_name>]
Necktwi

是的,它可以是任何“描述共享资源(称为“共享”)”的smb.conf部分(从文档中引用)。它可能也在[homes]我使用它的特殊部分中。有关详细信息,请参见文档
user1182474

4

为了允许Samba客户端遵循共享路径之外的符号链接,在Samba配置中所需要做的就是:

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

[myShare]
wide links = yes

(当然,除了Samba本身也共享定义)。从理论上讲,这对于* nix客户端是足够的。

注意:“ follow symlinks”指令不是必需的,因为它默认为“ yes”

对于Windows客户端,仍然缺少1设置来让他们跟踪此类链接。为此:

  1. 打开具有管理员权限的Windows Shell
  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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.