Создать переменную для пути к приложению

Просмотр страниц руководства

Если вы посмотрите на страницу руководства для mount.cifs, который используется для монтирования любых ресурсов, перечисленных в /etc/fstab, там есть примечание, в котором упоминается noexec.

выдержка - mount.cifs man page

Эта команда может быть использована только root, если только не установлен setuid, в в этом случае включены флаги монтирования noeexec и nosuid. Когда установленная как программа setuid, программа следует соглашениям, установленным установленным программой mount для пользовательского монтирования, с дополнительным ограничением что пользователи должны иметь возможность chdir() в точку монтирования до монтирования монтирования, чтобы иметь возможность подключиться к ней.

Некоторые клиентские инструменты samba, такие как smbclient(8), почитают клиентские параметры конфигурации, присутствующие в файле smb.conf. В отличие от этих клиентских инструментов, mount.cifs полностью игнорирует smb.conf.

Учитывая это, я бы ожидал, что он будет учитывать опцию exec/noexec, если она включена в любую попытку монтирования. Кроме того, просмотр использования mount.cifs показывает, как эта опция будет использоваться.

выдержка - использование mount.cifs
Less commonly used options:
    credentials=<filename>,guest,perm,noperm,setuids,nosetuids,rw,ro,
    sep=<char>,iocharset=<codepage>,suid,nosuid,exec,noexec,serverino,
    mapchars,nomapchars,nolock,servernetbiosname=<SRV_RFC1001NAME>
    directio,nounix,cifsacl,sec=<authentication mechanism>,sign,fsc

Просмотр страницы fstab man объясняет предназначение опции exec/noexec, но не уточняет, для всех ли исполняемых файлов или только для Unix.

выдержка из man-страницы fstab

exec / noexec

exec позволяет выполнять двоичные файлы, находящиеся на данном разделе, тогда как noexec не позволяет этого делать. noexec может быть полезен для раздела, который не содержит двоичных файлов, например /var, или содержит двоичные файлы которые вы не хотите выполнять в своей системе, или которые даже не могут быть выполнены исполняться на вашей системе, как в случае раздела Windows.

Делает ли exec/noexec все исполняемым?

Нет, атрибут exec/noexec просто закрывает доступ к вещам, которые помечены как исполняемые через их биты разрешений, он не влияет непосредственно на разрешения.

А как насчет исполняемых файлов Window?

Однако установка exec/noexec не имеет контроля над исполняемыми файлами Windows, только над исполняемыми файлами Unix, которые также могут находиться на этих ресурсах.

Также я не совсем понимаю, как это может повлиять, если вы монтируете CIFS/Samba ресурс через /etc/fstab, когда ОС Windows вообще может вмешаться в этот сценарий. Windows могла бы смонтировать этот ресурс напрямую и даже не утруждать себя прохождением через Linux.

Проверка

Пример из Unix

Вы можете проверить это, используя mount.cifs непосредственно через командную строку, как показано ниже. Предположим, что у нас есть файл на CIFS/Samba ресурсе следующим образом:

$ cat cmd.bash 
#!/bin/bash

echo "hi"

$ chmod +x cmd.bash

Теперь мы монтируем его так, и пытаемся запустить сценарий, cmd.bash:

$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser,noexec

$ cd /path/to/cifsmnt
$ ./cmd.bash
bash: ./cmd.bash: Permission denied

Если мы опустим эту опцию, noexec:

$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser

$ cd /path/to/cifsmnt
$ ./cmd.bash
hi
Из Windows

Единственный сценарий, который я могу себе представить, это если я использую что-то вроде Virtualbox и монтирую CIFS/Samba ресурс внутри каталога, который затем может быть использован Windows VM.

Когда я тестировал это, я смог успешно запустить .exe файлы через эту установку.

ПРИМЕЧАНИЕ: Я использовал механизм общего доступа \\\vboxsrv в Virtualbox для монтирования моего домашнего каталога, который является локальным в моей системе, /home/saml. Затем я выполнил эту команду, смонтировав ресурс CIFS/Samba как каталог внутри /home/saml.

$ mkdir /home/saml/cifsmnt
$ mount //server/cifsshare cifsmount -o user=joeuser,noexec

Выводы

Выполнение вышеописанных действий, похоже, указывает на то, что exec/noexec не имеет никакого влияния на доступ Windows к файлам.

0
01.03.2018, 19:11
1 ответ

La solución más simple aquí es decirle a su shell que expanda la variable PYTHONEXEC antes de ejecutarla; lo haces anteponiendo un $, como comentó thrig:

$PYTHONEXEC

Si va a usar esa sintaxis en una entrada de crontab, necesitará obtener un archivo que defina la variable antes de usarla.

3
28.01.2020, 02:24

Теги

Похожие вопросы