ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

Windows上でgVimを使うと、Cygwinで見た時ファイルのパーミッションが変えられてしまう件

最近は基本的に、PHPの編集はgVimを使うことが多いです。http://www.kaoriya.net/Windows用のgVimです。7.1が出てますね。
で、SVNTortoiseSVN・・・ではなくて、CygwinSVNを使ってます。趣味の問題で、vimの方はCygwinvimじゃないんですよね。

で、前から気になってたんですが。Cygwin上で、chmodとかで実行フラグを落としても、gVimで編集すると勝手にパーミッションが変わって755とかにされてしまってたんです。さらに他のaclも変えられてしまうのか、例えばApacheが作成したYakiBikiのデータファイル、これを一度gVimで読んで、弄って保存すると、Apacheから読めなくなってしまうんです。これ、結構嵌められました。

なんでかなーと思って、ようやく重い腰を上げてGoogleに聞いてみたんですが。

7.3. When I save a file with Vim, the file permissions are changed.
How do I configure Vim to save a file without changing the file
permissions?

http://vimdoc.sourceforge.net/htmldoc/vimfaq.html

に有るように、

set backupcopy=yes

とすれば良いらしいですね。

試してみたところ、これだけで問題は解決しました。自分の_gvimrcではbackup*系はこんな感じの設定になりました。

set nobackup
set backupcopy=yes

うーん、"nobackup"にしてあるけどどうよ?ってな感じですが、これは前から入ってた行です。下の行が今回付け足したんですが、本当にこれだけでオッケーでした。

そう言えば、以前SELinux関連の記事を読んでいた時、「selinuxはi-nodeでファイルのラベリングをしている。古いvimだと、保存した時に古いi-nodeを消し、新しいi-nodeでファイルを作り直そうとする為、相性が云々」とか言っていたのを思い出したりします。今はどうなっているのかは知りませんが、なるほどなー、という感じでした。