Как параметр Fstab exec noexec влияет на общие ресурсы Samba

Как параметр Fstab exec noexec влияет на общие ресурсы Samba

Я смонтировал несколько дисков с данными и использовал noexecпараметр. Думая, что поскольку это только данные, мне это не нужно exec. Теперь у меня возникли некоторые проблемы с разрешениями, и я хотел бы исключить это как причину, а также лучше понять этот параметр.

Имеет ли execпараметр in /etc/fstabтот же эффект, что и предоставление разрешений на выполнение всем каталогам и файлам в смонтированной системе?

Как это влияет на исполняемые файлы Windows ( .exe), доступ к которым осуществляется через общие папки Samba или другие сетевые протоколы?

Смонтированные диски будут объединены с aufsили mhddfsи будут доступны через центральную точку монтирования в /mnt/virtual. Затем доступ будет осуществляться через сеть (сейчас это Samba). Также будет возможен локальный доступ ( xbmc). Я не уверен, следует ли предоставить ему прямую ссылку или ссылку Samba на файлы?

Какова наилучшая практика в этом случае?

решение1

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

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

выдержка - страница руководства mount.cifs

Эта команда может использоваться только пользователем root, если не установлен setuid, в этом случае флаги монтирования noeexec и nosuid включены. При установке в качестве программы setuid программа следует соглашениям, установленным программой монтирования для пользовательских монтирований, с дополнительным ограничением, что пользователи должны иметь возможность 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справочной странице объясняется предполагаемое назначение exec/noexec, но не уточняется, относится ли оно ко всем исполняемым файлам или только к Unix.

выдержка из страницы руководства fstab

исполняемый / неисполняемый

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

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

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

А как насчет двоичных файлов Windows?

Однако настройка 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.

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

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

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

Выводы

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

Связанный контент