noaclを指定する(rsync, lftp)
参考サイト:
技術/Windows/Cygwin/NTFSをnoaclでマウントする
Cygwinのいくらかましな使い方
rsync も lftp もcygwinのDLLを使って実装されている。cygwinはファイルのパーミッション(アクセス権)をWindowsのACL(アクセス制御リスト)を使って実装している。cygwinで作ったファイルのACLを見ようとセキュリティタブを開くと、このようなエラーが表示される。
・・・のアクセス許可の順序が正しくありません。これによりいくつかのエントリが無効になる可能性があります。
ACLにはNULL SIDから始まるエントリが並んでいる。
困るのは、Windowsの一部アプリからはcygwinの作ったファイルが読み取れない場合があることだ。
例えば、rsyncやlftpで、稼働中のリモートサイトからDokuWikiをダウンロードして実行しようとすると、ファイルにアクセスできないというエラーを食らったりする。
これについては、/etc/fstab ファイルに
none /cygdrive cygdrive binary,posix=0,user,noacl,notexec 0 0
という一行を設定すれば良い。noacl と noexec を指定することによって、/cygdrive 以下のファイルに対して、cygwinがWindowsのACLを参照・変更しなくなる。
C:\etc フォルダに fstab ファイルを作成して、上記の一行を書いておく。
既にcygwinをインストールする場合(例えばcygwinがC:\cygwin64にインストールされた場合)、cygwinの /etc/fstab を編集し、
mklink /j c:\etc c:\cygwin64\etc
として、C:\etc から C:\cygwin64\etc にシンボリックリンクを貼っておくと良い。
このようにして、rsyncやlftp(や他のcygwin1.dllを使ったアプリ)がACLをイジらないように設定してから転送を行うと良い。
なお、noacl設定前にできてしまったファイルは、
icacls folder /reset /t
というコマンドでACLをリセットする。