我在 Linux 机器上设置了一个 smb 共享,可以在资源管理器中查看:
\\XXX.YYY.ZZZ.QQQ\分享
此共享中有一个批处理文件:
\\XXX.YYY.ZZZ.QQQ\共享\Scripts\Script.bat
我可以从资源管理器中在记事本中打开该文件,右键单击“编辑”,甚至编辑该文件。
如果我双击资源管理器中的批处理文件,或者桌面上有该文件的快捷方式,我最初会收到“打开文件 - 安全警告”提示,但是当我单击“运行”时,我会收到一条错误消息:
Network Error
Windows cannot access \\\\XXX.YYY.ZZZ.QQQ\Share\Scripts\Script.bat
You do not have permission to access \\\\XXX.YYY.ZZZ.QQQ\Share\Scripts\Script.bat.
Contact your network administrator to request access.
奇怪的是,如果我打开一个cmd
窗口并简单地输入"\\\\XXX.YYY.ZZZ.QQQ\Share\Scripts\Script.bat"
脚本,它就会毫无问题地运行。
答案1
从 Samba 4 开始,文件的执行权限被强制执行。Windows 客户端的旧行为是无论如何都允许执行。Windows 实际上在执行文件和读取文件时打开文件的方式略有不同 - 这就是您可以毫无问题地打印文件的原因。
设置文件的执行权限或将此选项添加到共享:
acl allow execute always
这将恢复允许任何可执行文件运行的旧行为。
看此错误报告更多细节。