cygwinのchmodは機能しているように動作しますが、機能しません
Cygwinのインストールがおかしな動作をしています:chmod
が機能しません。
[09:45 Administrator@DellIns14 ~] > ls -ls /usr/bin/chmod
64K -rwxr-xr-x 1 Administrator None 38K Feb 6 2012 /usr/bin/chmod
[09:47 Administrator@DellIns14 ~] > rm /tmp/example.sh
rm: remove regular empty file `/tmp/example.sh'? y
[09:48 Administrator@DellIns14 ~] > touch /tmp/example.sh
[09:48 Administrator@DellIns14 ~] > ls -ls /tmp/example.sh
0 -rw-r--r-- 1 Administrator None 0 Jul 8 09:48 /tmp/example.sh
[09:48 Administrator@DellIns14 ~] > chmod -v +x /tmp/example.sh
mode of `/tmp/example.sh' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
[09:48 Administrator@DellIns14 ~] > ls -ls /tmp/example.sh
0 -rw-r--r-- 1 Administrator None 0 Jul 8 09:48 /tmp/example.sh
[09:48 Administrator@DellIns14 ~] >
ファイルが作成されるときに、ディレクトリは書き込み可能であることに注意してください。
このディレクトリをwindowsの観点から見ると、読み取り専用として報告されます(読み取り/書き込みに変更すると、読み取り専用に戻ります)。
画面キャプチャは cygwinの/ tmpはWindowsでは読み取り専用であり、読み取り/書き込みに変更できません
デバッグ/解決する方法を提案できますか?
環境:
Windows 7、Cygwin 1.7.29(0.272/5/3)i686
この回答への称賛 https://stackoverflow.com/questions/25730041/updating-file-permissions-with-git-bash-on-windows-7 以下に貼り付けられたコンテンツ
WindowsでNTFSまたはFAT32を使用している可能性があり、これらのファイルシステムは実行可能アクセス許可をサポートしていません。代わりに cygwinはファイル名と内容を調べて実行可能かどうかを判断します :
ファイル名が.bat、.com、または.exeで終わる場合、またはその内容が#!で始まる場合、ファイルは実行可能であると見なされます。
したがって、bashファイルがShebangで始まることを確認する必要があります。そうすれば、ls
のパーミッション出力を無視して、ファイルを実行できるはずです。
/ etc/fstabに次のものが含まれていることがわかるまで、chmodを実行できませんでした。
none /cygdrive cygdrive binary,noacl,posix=0,user 0 0
しかし、次のようにする必要があります。
none /cygdrive cygdrive binary,posix=0,user 0 0
開いているすべてのCygwinプロセスを閉じて再起動した後、すべてが機能しました。
この回答 役に立ちました。
所有者、グループ、その他のアクセスを制御する通常のPOSIXアクセス許可に加えて、Cygwinのファイルアクセス許可もWindowsACLの影響を受ける可能性があります。
あなたの場合、試してみてください
ls -l /tmp/example.sh
getfacl /tmp/example.sh
setfacl -b /tmp/example.sh
ls -l /tmp/example.sh
chmod -v +x /tmp/example.sh
ls -l /tmp/example.sh