CygwinはNTFSのACLをPOSIXで扱えるように色々とマッピングをいじったりしています。
その影響か、Windowsプログラムで普通に作成したディレクトリやファイルをCygwin上で見てみると、パーミッションが"000"になっていてあたかも所有者含めて一切の権限がロストしているかのように見える時があります。
個人で、しかも開発用のマシンで管理者としてログインして操作可能な状態であれば、Cygwin上でNTFSとPOSIXのACLマッピングを無効化したほうがスッキリします。
・・・というか、デーモンやらサービスやらをあれこれ起動したりいじる環境で、Cygwinのマッピングを「正しく」維持しても、発生しうるトラブルに対するメリットが少ないというか・・・。
環境:
Win7SP1日本語版 $ cygcheck -c cygwin Cygwin Package Information Package Version Status cygwin 1.7.16-1 OK
※本記事はCygwin 1.7以降を元にしています。"noacl"って1.7以降のオプションで、"/etc/fstab"への記述でOKなのも1.7以降から、らしいです。1.7より前は、"ntsec"とか"nontsec"とかいじる必要があったっぽいです。
noaclの設定例 - "/etc/fstab" :
... C:/Users /home ntfs override,noacl,binary,auto 0 0 C:/Users/Foo /home/Foo ntfs override,noacl,binary,auto 0 0 none /cygdrive cygdrive binary,noacl,posix=0,user 0 0
詳しくは"man mount"でマウントオプションを確認してください。
もしnoaclなしのデフォルト状態でファイルとかディレクトリを作ってしまったら?
→icaclsコマンドを使います。"/reset"オプションでACLをリセットして親ディレクトリから継承させ直すことができます。
例:時既に遅く、C:\work\cygtest\hello.txtを作ってしまっていた・・・。ただし、Cygwinで作ったのは"cygtest\hello.txt"までで、"C:\work"まではWindowsのエクスプローラで作った。
→コマンドプロンプトを立ち上げ、
> cd c:\work > icacls cygtest /reset /t
でC:\workからACLを継承させ直すことができます。
参考:
Win2kとか古いCygwin時代に、NTFSのACLをCygwinのPOSIXマッピングを細かく調整するための資料: