С тех пор, как мы обновились до OSX El Capitan, мы столкнулись с некоторыми странными ошибками с правами доступа к файлам на нашем SMB-сервере.
У нас есть сервер ubuntu, на котором наши рабочие файлы размещаются в общей папке SMB на каждой из наших рабочих станций Mac. Мы используем Git через SMB с участием SourceTree для создания наших веб-сайтов (удобно использовать одну и ту же базу данных и файлы), поскольку мы обновились до OS X El Capitan, права доступа к файлам не совпадают, и Git помечает все файлы, измененные, когда их права доступа изменяются с 0664 на 0775 (или с 0644 на 0755) .
Например, вот ls -la
вывод с использованием SSH на нашем сервере разработки
➜ CashierTheme git:(develop) ls -la
total 72
drwxrwsr-x 9 nestorwww nestorwww 4096 oct. 12 23:42 .
drwxrwsr-x 6 nestorwww nestorwww 4096 avril 14 17:33 ..
-rw-rw-r-- 1 nestorwww nestorwww 12261 oct. 12 23:42 CashierThemeApp.php
-rw-rw-r-- 1 nestorwww nestorwww 56 oct. 12 23:42 composer.json
-rw-rw-r-- 1 nestorwww nestorwww 352 oct. 12 23:42 config.yml
drwxrwsr-x 2 nestorwww nestorwww 4096 oct. 12 23:42 Controllers
-rw-rw-r-- 1 nestorwww nestorwww 170 oct. 12 23:42 .editorconfig
drwxrwsr-x 2 nestorwww nestorwww 4096 oct. 12 23:42 Entities
drwxrwsr-x 4 nestorwww nestorwww 4096 oct. 12 23:42 Forms
drwxrwsr-x 8 nestorwww nestorwww 4096 oct. 12 23:42 .git
-rw-rw-r-- 1 nestorwww nestorwww 35 oct. 12 23:42 .gitignore
-rw-rw-r-- 1 nestorwww nestorwww 1060 oct. 12 23:42 LICENSE.md
-rw-rw-r-- 1 nestorwww nestorwww 1819 oct. 12 23:42 README.md
drwxr-sr-x 2 nestorwww nestorwww 4096 oct. 12 23:42 Repositories
drwxrwsr-x 6 nestorwww nestorwww 4096 oct. 12 23:42 Resources
drwxrwsr-x 10 nestorwww nestorwww 4096 oct. 12 23:42 static
Разрешения файлов в порядке. Тогда вот ls -la
из нашей общей папки SMB (с моего Mac):
➜ CashierTheme git:(develop) ✗ ls -la
total 328
drwx------ 1 ambroisemaupate staff 16384 12 oct 23:42 .
drwx------ 1 ambroisemaupate staff 16384 14 avr 17:33 ..
-rwx------ 1 ambroisemaupate staff 170 12 oct 23:42 .editorconfig
drwx------ 1 ambroisemaupate staff 16384 12 oct 23:43 .git
-rwx------ 1 ambroisemaupate staff 35 12 oct 23:42 .gitignore
-rwx------ 1 ambroisemaupate staff 12261 12 oct 23:42 CashierThemeApp.php
drwx------ 1 ambroisemaupate staff 16384 12 oct 23:42 Controllers
drwx------ 1 ambroisemaupate staff 16384 12 oct 23:42 Entities
drwx------ 1 ambroisemaupate staff 16384 12 oct 23:42 Forms
-rwx------ 1 ambroisemaupate staff 1060 12 oct 23:42 LICENSE.md
-rwx------ 1 ambroisemaupate staff 1819 12 oct 23:42 README.md
drwx------ 1 ambroisemaupate staff 16384 12 oct 23:42 Repositories
drwx------ 1 ambroisemaupate staff 16384 12 oct 23:42 Resources
-rwx------ 1 ambroisemaupate staff 56 12 oct 23:42 composer.json
-rwx------ 1 ambroisemaupate staff 352 12 oct 23:42 config.yml
drwx------ 1 ambroisemaupate staff 16384 12 oct 23:42 static
Поэтому, когда я вхожу в git status
команду на dev сервере, все в порядке:
➜ CashierTheme git:(develop) git status
Sur la branche develop
Votre branche est à jour avec 'origin/develop'.
rien à valider, la copie de travail est propre
И… вот git status
вывод из общего ресурса SMB:
➜ CashierTheme git:(develop) ✗ git status
On branch develop
Your branch is up-to-date with 'origin/develop'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: .editorconfig
modified: .gitignore
modified: CashierThemeApp.php
modified: Controllers/ContactController.php
modified: Controllers/InvoiceController.php
modified: Controllers/PaymentController.php
modified: Controllers/PostingController.php
modified: Controllers/QuoteController.php
modified: Entities/BankOperationTrait.php
modified: Entities/Contact.php
modified: Entities/Invoice.php
modified: Entities/Letter.php
modified: Entities/PayableInterface.php
modified: Entities/Payment.php
modified: Entities/Posting.php
modified: Entities/PostingObject.php
modified: Entities/Quote.php
modified: Forms/ContactSelectorType.php
modified: Forms/ContactType.php
modified: Forms/DataTransformer/ContactToNumberTransformer.php
modified: Forms/Filters/ContactFilterType.php
modified: Forms/Filters/PostingFilterType.php
modified: Forms/Filters/QuoteFilterType.php
modified: Forms/InvoiceStatusType.php
modified: Forms/InvoiceType.php
modified: Forms/PaymentType.php
modified: Forms/PostingObjectType.php
modified: Forms/PostingObjectUnitType.php
modified: Forms/PostingType.php
modified: Forms/QuoteStatusType.php
modified: Forms/QuoteType.php
modified: LICENSE.md
modified: README.md
modified: Repositories/PostingRepository.php
modified: Resources/config/.gitignore
modified: Resources/config/fonts.default.xml
modified: Resources/config/pdf_stylesheet.default.xml
modified: Resources/firewalled-routes.yml
modified: Resources/imports/roles.rzt
modified: Resources/imports/settings.rzt
modified: Resources/routes.yml
modified: Resources/translations/messages.en.xlf
modified: Resources/translations/messages.fr.xlf
modified: Resources/views/404.html.twig
modified: Resources/views/admin/test.html.twig
modified: Resources/views/base.html.twig
modified: Resources/views/baseAnonymous.html.twig
modified: Resources/views/blocks/filters.html.twig
modified: Resources/views/blocks/paidtotals.html.twig
modified: Resources/views/blocks/totals.html.twig
modified: Resources/views/blocks/totals.xml.twig
modified: Resources/views/blocks/waitingtotals.html.twig
modified: Resources/views/contacts/edit.html.twig
modified: Resources/views/contacts/list.html.twig
modified: Resources/views/dashboard/list.html.twig
modified: Resources/views/forms.html.twig
modified: Resources/views/invoices/edit.html.twig
modified: Resources/views/invoices/list.html.twig
modified: Resources/views/invoices/view.xml.twig
modified: Resources/views/modules/navigation-elements.html.twig
modified: Resources/views/modules/navigation.html.twig
modified: Resources/views/payments/edit.html.twig
modified: Resources/views/payments/list.html.twig
modified: Resources/views/pdfbase.xml.twig
modified: Resources/views/quotes/edit.html.twig
modified: Resources/views/quotes/list.html.twig
modified: Resources/views/quotes/view.xml.twig
modified: Resources/views/tabledforms.html.twig
modified: composer.json
modified: config.yml
modified: static/Gruntfile.js
modified: static/bower.json
modified: static/css/main.less
modified: static/css/normalize.less
modified: static/css/postings/commons.less
modified: static/css/style.less
modified: static/css/style.min.css
modified: static/css/vars.less
modified: static/css/vendor.less
modified: static/css/vendor.min.css
typechange: static/css/widgets/debugpanel.less
modified: static/css/widgets/nav.less
modified: static/fonts/fontawesome-webfont.woff2
modified: static/js/main.js
modified: static/js/vendor/jquery-2.1.3.min.js
modified: static/js/vendor/uikit.min.js
modified: static/package.json
modified: static/public/cashier-theme.08d1e458.min.js
modified: static/public/config/assets.config.php
modified: static/public/style.7474e8a1.css
modified: static/public/vendor-cashier-theme.1a8458ff.min.js
modified: static/public/vendor.03b81695.css
no changes added to commit (use "git add" and/or "git commit -a")
С git diff
:
diff --git a/.editorconfig b/.editorconfig
old mode 100644
new mode 100755
diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
diff --git a/CashierThemeApp.php b/CashierThemeApp.php
old mode 100644
new mode 100755
diff --git a/Controllers/ContactController.php b/Controllers/ContactController.php
old mode 100644
new mode 100755
И т. Д. И т. Д.
И последний фрагмент, вот моя конфигурация общего ресурса SMB, где я явно указываю использовать 0644 для файлов и 0755 для каталогов.
[DevWebServer]
path = /var/www
force group = myuser
force user = myuser
browsable = yes
writeable = yes
create mask = 0644
directory mask = 0755
force create mode = 0644
force directory mode = 0755
hide dot files = no
guest ok = no
public = no
veto files = /._*/.DS_Store/.AppleDouble
delete veto files = yes
Раньше у нас не было проблем с OS X Yosemite.
Для тех, кто задается вопросом, почему мы используем Git вместо SMB, это потому, что мы работаем со многими людьми, одновременно создавая веб-сайты. Наличие копии на каждой из наших рабочих станций было бы проблемой для синхронизации баз данных и файлов документов.
Спасибо за чтение и за уделенное время.
Эта работа для меня
[Shared]
comment = Folder Shared
path = /path
unix extensions = no
force group = root
force user = root
browsable = yes
writeable = yes
create mask = 0644
directory mask = 0755
force create mode = 0644
force directory mode = 0755
hide dot files = no
guest ok = no
public = no
valid users = @users
TL; Версия DR:
mount_smbfs -f 0644 -d 0755 //<user@host/share> <share>
Длинная версия:
Я знаю, что эта ветка устарела, но это все еще актуальная проблема. В моем случае я использую git поверх CIFS для работы с удаленным рабочим деревом в виртуальном экземпляре Linux. Репозиторий git действительно существует в моей хост-системе, но у меня есть оформление заказа в удаленной системе. Это сделано для того, чтобы я мог разработать свое приложение для Linux на macOS с использованием виртуальной машины, но сохранить репозиторий git на хосте.
В любом случае, у меня возникла та же проблема, что и у OP. Git обнаружил изменения в файловом режиме, желая зафиксировать файлы с битами выполнения, поскольку драйвер общего доступа по умолчанию создавал обычные файлы с разрешениями на выполнение. Чтобы обойти это, я выяснил, как смонтировать общий ресурс вручную с помощью mount_smbfs
команда. Ключевые варианты: -f
и -d
для файлового режима и режима каталога соответственно.
Для справки, я использую macOS 10.11.6 «El capitan».
Эта проблема по-прежнему сохраняется после обновления до OS X 10.11.1.
В качестве частичного обходного пути вы можете поделиться файлами с помощью SSHFS вместо SMB. SSHFS сохраняет разрешения, однако имеет ряд недостатков:
См. Также обсуждение сообществ поддержки Apple: https://discussions.apple.com/message/29104711
Вы также можете попробовать использовать последнюю (4.2 или более позднюю) версию Samba, которая поддерживает SMB2 и включает vfs_fruit на акции. Это добавит поддержку расширения Apple AAPL для SMB2, которое должно работать лучше, чем расширения Unix для SMB1 / CIFS.
Попробуйте отключить расширения unix, используя следующую инструкцию в вашем Ubuntu smb.conf
файл:
unix extensions = no
Затем перезапустите Samba и посмотрите, сохраняется ли проблема.
Измените пароль своей учетной записи на локальный пароль, если вы перешли на использование учетных данных Apple ID. WINS и общий доступ к файлам не работают с вашими учетными данными iCloud.