У меня есть общий ресурс smb в Linux, который я могу просмотреть в проводнике:
\\ 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"
скрипт работает без проблем.
Начиная с Samba 4 принудительно применяются права на выполнение для файлов. Старое поведение с клиентами Windows заключалось в разрешении выполнения независимо. На самом деле Windows открывает файл несколько иначе, если он выполняет его, а не просто читает, поэтому вы можете без проблем распечатать файл.
Либо установите разрешения на выполнение для файла, либо добавьте эту опцию в общий ресурс:
acl allow execute always
Это восстановит старое поведение, разрешающее запуск любого исполняемого файла.
Видеть этот отчет об ошибке Больше подробностей.