Вопрос: Разрешить chmod на CIFS mount


У меня есть хост Windows 7 с гостевым клиентом CentOS 6 под VirtualBox.

У меня есть каталог Windows, совместно используемый с гостевой ОС Linux с использованием CIFS.

До сих пор все работало нормально, пока я не понял, что все chmod доходность операций:

chmod: изменение разрешений `x ': операция не разрешена

Это понятно, но моя проблема в том, что некоторые инструменты, на которые я не могу контролировать, пытаюсь chmod файлы для меня, и в результате не получается.

Это возможно позволять но игнорировать все chmod() звонит на крепление CIFS? Обратите внимание, что эти вызовы выполняются с языка программирования, а не из командной строки chmod утилита.

Редактировать: руководство для mount.cifs говорит (подчеркиваю мое):

В базовом CIFS-протоколе отсутствует информация о владельце unix или режиме для файлов и каталогов. Из-за этого файлы и каталоги, как правило, будут принадлежать любым значениям, заданным параметрами uid = или gid =, и будут иметь разрешения, установленные для файла file_mode по умолчанию и dir_mode для монтирования. Попытка изменить эти значения с помощью chmod / chown приведет к успеху, но не имеет никакого эффекта.

Это то, что я потом, поэтому почему он не работает для меня?


2
2018-04-21 21:47


Источник


Пожалуйста, не могли бы вы уточнить какие языка программирования и того, чего вы на самом деле пытаетесь достичь с помощью программирование язык. Позволять но игнорировать на первый взгляд кажется противоречивым. С дополнительным опытом поможет нам понять вашу проблему. - David
Я не думаю, что вы можете игнорировать все изменения разрешений. , , действительно ли сценарий фактически выручается при изменении прав доступа к файлу или он освобождается позже, поскольку разрешения недостаточны? Если их недостаточно, вы можете использовать параметры монтирования (file_mode и dir_mode), чтобы установить для всех файлов необходимые разрешения. , , - ernie
@David Снова у меня нет контроля над инструментом, который, я считаю, запрограммирован на C, и вызывает вызовы системы chmod() функция. @ernie Он выручает, когда права на файл (пытается быть) изменены и не завершены. - Benjamin
Для получения информации, я пытаюсь установить ГРУША пакет для PHP Композитор, и скрипт терпит неудачу, поскольку его PHAR установщик пакетов пытается chmod() некоторые файлы. Точная ошибка: Извлечение из phar «...» не удалось: невозможно извлечь «package.xml» в «...», не удалось установить права доступа к файлам, - Benjamin
Спасибо, это был тот фон, который мы искали. Можете ли вы добавить дополнительные разрешения для своей системы Windows, чтобы разрешить происходящее в сценарии установки? Это звучит почти так, как будто скрипт пытается установить что-то исполняемое, что просто не может работать с общим ресурсом Windows. - David


Ответы:


Обнаружил: noperm параметр mount делает именно это:

//192.168.56.1/www /mnt/www cifs noperm,username=www,password=xxx, ...

Обратите внимание, что mount -a не применяет параметр, вам нужно перезагрузить его, чтобы он работал.
Мне потребовалось много проб и ошибок, чтобы понять это.

Теперь chmod отлично работает, команда не дает никаких ошибок и просто игнорируется.


6
2018-04-25 11:36



Зачем перезагружаться, когда вы можете снова отключить и снова установить? Возможно, CIFS может даже перемонтироваться. - Daniel B
не должны mount -a размонтировать и перемонтировать? - Benjamin
Нет. Это было бы смертельно. Он только монтирует в настоящее время размонтированные файловые системы из /etc/fstab - Daniel B


Попробуйте добавить опцию exec. Я считаю, что установка как пользователя, не являющегося пользователем root, отключит exec.

https://unix.stackexchange.com/questions/34822/is-it-possible-to-enable-execution-of-files-from-a-cifs-mount-in-bash


0
2018-04-23 22:46



То же самое, что я боюсь exec: операция не разрешена, - Benjamin
попробуйте установить как root? - David
Ну, глядя на пару других статей, вы не можете chmod + x в файл на долю Windows. Вы отметили все файлы как исполняемые, используя опцию file_mode=0777 так или иначе. Я бы предложил установить модуль груши в папку в файловой системе linux, а затем скопировать ее. - David
askubuntu.com/questions/11840/...  superuser.com/questions/624368/... - David