无法在与 Windows 7 客户端配合使用的 Samba 共享上获取执行位

无法在与 Windows 7 客户端配合使用的 Samba 共享上获取执行位

我将大部分文件保存在 Ubuntu 14.04 的 Samba 共享中,并从 Windows 7 客户端计算机访问它们。我使用 Ubuntu 11.10 时一切正常,但在移至 14.04 时不知何故出现了问题。服务器内有一个额外的间接层,通过 greyhole(通过 Samba 的 jbod 存储池),但它只是 Samba 的一个插件,不会更改权限。

问题:

  1. W7 客户端将 EXE 保存到 Samba 共享。
  2. 从服务器上的命令行看来权限是正确的
  3. W7-客户端无法执行文件(由于信誉低,我无法发布图像)。

“Windows 无法访问 \\server\Software\Internet\WinApps\Multimedia\SetupProg.exe。您无权访问 \\server\Software\Internet\WinApps\Multimedia\SetupProg.exe。”

Windows 在该 EXE 上看到以下权限:

Everyone: Read
root (Unix User\root): Read & Execute, Read, Write, Special
sambashare (Unix Group\sambashare): Read, Write

我使用组“sambashare”作为所有通过 Samba 共享访问的用户的公共组。我已设置粘性位,如下所示:

drwsrwsr-x 31 root     sambashare 12288 Apr 25 20:11 ../

因此我总是得到所有者=root,组=sambashare。没有问题。

从服务器端看,我看到:

$ ls -l /mnt/lsi11/shares/Software/Internet/WinApps/Multimedia
lrwxrwxrwx  1 root sambashare    69 Apr 25 16:14 SetupProg.exe -> /mnt/lsi4/gh/Software/Internet/WinApps/Multimedia/SetupProg.exe

$ ls -l /mnt/lsi4/gh/Software/Internet/WinApps/Multimedia
-rwxrw-r--  1 root sambashare 11800240 Apr 25 15:23 SetupProg.exe

未设置组执行位。

查看我拥有的共享的 smb.conf(包括来自@Terrance 的项目):

[Global]
   wide links = yes
   unix extensions = no
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   wins support = yes
   dns proxy = no
   name resolve order = lmhosts host wins bcast
   log file = /var/log/samba/log.%m
   max log size = 5000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   security = user
   encrypt passwords = true
   server role = standalone server
   passdb backend = tdbsam
   obey pam restrictions = no
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   printing = bsd
   printcap name = /dev/null
   usershare allow guests = yes

   follow symlinks = yes
   ntlm auth = no
   lanman auth = no
   client ntlmv2 auth = yes
   usershare owner only = no

[Software]
   comment = Software files
   browsable = yes
   path = /mnt/lsi11/shares/Software
   read only = no
   valid users = user1 user2
   guest ok = no
   inherit owner = yes
   inherit permissions = yes
   dfree command = /usr/bin/greyhole-dfree
   vfs objects = greyhole

我能够从 Linux 手动设置执行位并修复现有文件。任何关于去哪里检查的建议都会很有帮助。

答案1

[global]您的部分中/etc/samba/smb.conf添加以下行:

[全球的]

仅限用户共享所有者 = false
unix 扩展 = 无
跟随符号链接 = 是
宽链接 = 是

ntlm 身份验证 = 否
lanman 身份验证 = 否
客户端 ntlmv2 身份验证 = 是

另外,检查 NTFS 分区在文件中的安装方式/etc/fstab。我必须将其添加default 0 0到 NTFS 安装的末尾,这样它就会打开所有权限,使文件可以访问。我举了一个安装示例。

UUID=0A485DBF485DAA69 /media/500GB ntfs 默认 0 0
UUID=6AAA4323AA42EB61 /media/SGUSB ntfs 默认 0 0

希望这有帮助。

编辑: 我完全忘记了这个还处于打开状态,我错过了一些东西。事实证明,这是一个错误,可以通过以下几行来修复:

解决方法:

– /etc/samba/local.conf
[全球的]
  acl 允许始终执行 = True
--

信息可以在错误报告中找到这里

相关内容