2

Я думаю, что я близок к тому, чтобы моя среда разработки была настроена именно так, как я хочу, но остается одна заключительная ошибка. Я использую VirtualBox на хосте Windows 7 x64 с моей средой разработки в гостевой системе Ubuntu 12.04. Я хочу сохранить файлы для своих проектов в файловой системе хоста - отчасти, чтобы я мог получить к ним доступ, когда гостевой Ubuntu не запущен, но также и для того, чтобы я мог использовать Tortoise и другие инструменты на основе Windows (кашель Photoshop), и это также облегчает мой Схема резервного копирования несколько.

Итак, у меня на диске NTFS есть папка "Rails", которой я поделился с хоста пользователем, специально созданным для гостя Ubuntu. Точка монтирования была настроена и запись добавлена ​​в fstab (cifs) с использованием файла учетных данных и параметров iocharset=utf8,file_mode=0777,dir_mode=07‌​77 Это монтируется нормально, и у моего пользователя Ubuntu есть права на чтение и запись. к содержанию, но когда я пытаюсь запустить приложение Rails, я получаю ошибки прав доступа к любым файлам, в которые приложение должно записать (например, к файлу журнала). Что дает?

1 ответ1

2

Оказывается, я просто искал не в том месте - я забыл, что для учетной записи на хосте Windows должны быть установлены правильные права доступа к общей папке; он имел только содержимое папок Read & execute , Write и List folder contents . Doh! Добавление Modify решило проблему. Так что ничего, кроме глупой ошибки - но я также узнал немного больше о синтаксисе cifs и fstab и выяснил, как монтировать как скромный пользователь, позволяя точкам монтирования находиться в моей папке /home/user . Последняя строка монтирования в моем fstab выглядит следующим образом (мои значения заменены на [tokens]):

//[server]/[share] /home/[user]/[folder] cifs credentials=/home/[user]/.config/samba/.[server],uid=[user],gid=[group] 0 0

Так что вам нужно только установить uid и gid для пользователя и группы, которым вы хотите владеть файлами на общем ресурсе после монтирования - больше ничего не нужно. Я также поместил необходимые учетные данные пользователя Windows в отдельный файл под моим каталогом .config и выполнил chmod 400 чтобы другие пользователи не могли ее прочитать.

Потребовалось на удивление много времени, чтобы разобраться во всем этом, поскольку существует миллион аргументов для использования с cif, и многие, кажется, неправильно их поняли - так много людей рекомендуют использовать file_mode/dir_mode 777 (что звучит для меня очень плохой идеей) и перец с ненужными рассуждениями типа nounix noperm rw iocharset и noacl - ни один из которых необходимо , чтобы сделать эту работу. Так что, хотя моя проблема была вызвана простой ошибкой, я оставлю вопрос (и этот ответ) здесь; надеюсь, кто-то найдет это полезным!

Редактировать: Из- за ошибки в реализации CIFS в Samba, необходимо также добавить опцию nobrl если вы собираетесь запускать базы данных SQLite на общем ресурсе. По сути, текущий клиент Samba cifs Linux не может обработать способ, которым SQLite блокирует файл базы данных. Не очень удачное решение и почти наверняка плохая идея в многопользовательской среде, но так как в моем случае это однопользовательский ресурс, размещенный на той же машине, что и клиент (что практически исключает задержки в сети), я собираюсь катись с этим.

nobrl

Не отправляйте запросы блокировки байтового диапазона на сервер. Это необходимо для некоторых приложений, которые нарушают обязательную блокировку диапазона байтов в стиле cifs (и большинство серверов cifs еще не поддерживают запрашивающие консультативные блокировки диапазона байтов).

Запись fstab теперь выглядит так:

//[server]/[share] /home/[user]/[folder] cifs nobrl,credentials=/home/[user]/.config/samba/.[server],uid=[user],gid=[group] 0 0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .