OSX El Capitanにアップグレードしてから、SMBサーバーでいくつかの奇妙なファイル許可エラーが発生しました。
SMB各Macワークステーションへの共有フォルダーで作業ファイルをホストしているubuntuサーバーマシンがあります。SMBでGitを使用しますwithSourceTreeを使用してWebサイトを構築します(同じデータベースとファイルを共有するのに便利です)。これは、OS X El Capitanにファイル権限をアップグレードしたためです。同じではなく、パーミションが0664から0775(または0644から0755)に切り替わると、Gitはすべてのファイルを変更済みとしてマークします。
たとえば、開発サーバーでSSHを使用したls -la
出力は次のとおりです
➜ 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
ファイルの権限はOKです。次に、SMB共有フォルダ(Macから)からのls -la
を示します。
➜ 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
コマンドを入力すると、すべて問題ありません。
➜ CashierTheme git:(develop) git status
Sur la branche develop
Votre branche est à jour avec 'Origin/develop'.
rien à valider, la copie de travail est propre
そして…SMBシェアからのgit status
出力:
➜ 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で問題はありませんでした。
なぜSMBよりもGitを使用するのか不思議に思う人にとって、それは私たちが同時に多くの人々と協力してWebサイトを構築しているためです。ワークステーションのそれぞれにコピーがあると、データベースとドキュメントファイルを同期するのが難しくなります。
お読みいただきありがとうございます。
この仕事は私にとって
[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
この問題は、OS X 10.11.1にアップグレードした後も引き続き発生します。
部分的な回避策として、SMBの代わりにSSHFSを使用してファイルを共有できます。 SSHFSは権限を保持しますが、いくつかの欠点があります。
Appleサポートコミュニティ: https://discussions.Apple.com/message/29104711
また、SMB2をサポートする最新バージョン(4.2以降)のSambaを使用して、共有で vfs_fruit を有効にすることもできます。これにより、SMB2用のAppleのAAPL拡張機能のサポートが追加されます。これは、SMB1/CIFS用のUnix拡張機能よりもうまく機能するはずです。
TL; DRバージョン:
mount_smbfs -f 0644 -d 0755 //<user@Host/share> <share>
ロングバージョン:
私はこのスレッドが古いことを知っていますが、これは依然として関連する問題です。私の場合、CIFSではなくgitを使用して、仮想Linuxインスタンス上のリモートの作業ツリーを操作しています。 gitリポジトリは実際にはホストシステムに存在しますが、リモートシステムにチェックアウトしています。これは、VMを使用してmacOSでLinux固有のアプリケーションを開発できるようにするためですが、ホストにgitリポジトリを保持します。
とにかく、OPと同じ問題が発生していました。共有ドライバーはデフォルトで実行権限を持つ通常のファイルを作成したため、Gitはファイルモードで変更を検出し、実行ビットでファイルをコミットしようとしました。これを回避するために、mount_smbfs
コマンドを使用して共有を手動でマウントする方法を見つけました。重要なオプションは、ファイルモードおよびディレクトリモードの場合、それぞれ-f
および-d
です。
参考までに、macOS 10.11.6「El capitan」を使用しています。
Ubuntuのsmb.conf
ファイルで次のステートメントを使用して、UNIX拡張機能を無効にしてみてください。
unix extensions = no
次に、Sambaを再起動して、問題が解決するかどうかを確認します。