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

Mat*_*ski 5 server permissions windows samba 14.04

我将大部分文件保存在 Samba 共享中的 Ubuntu 14.04 机器上,并从 Windows 7 客户端计算机访问它们。我让这一切都与 Ubuntu 11.10 一起工作,但在移动到 14.04 时以某种方式打破了这一点。服务器中有一个额外的间接层,通过greyhole(通过Samba 进行jbod 存储池),但它只是Samba 的一个插件,不会更改权限。

问题:

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

“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
Run Code Online (Sandbox Code Playgroud)

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

drwsrwsr-x 31 root     sambashare 12288 Apr 25 20:11 ../
Run Code Online (Sandbox Code Playgroud)

所以我一直得到 owner=root, group=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
Run Code Online (Sandbox Code Playgroud)

未设置组执行位。

查看 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
Run Code Online (Sandbox Code Playgroud)

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

Ter*_*nce 7

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

[全球的]

仅用户共享所有者 = false
unix 扩展 = 否
遵循符号链接 = 是
广泛的链接 = 是

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

此外,请检查 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
——

可以在此处的错误报告中找到信息。