web-dev-qa-db-ja.com

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

3
boardrider

この回答への称賛 https://stackoverflow.com/questions/25730041/updating-file-permissions-with-git-bash-on-windows-7 以下に貼り付けられたコンテンツ


WindowsでNTFSまたはFAT32を使用している可能性があり、これらのファイルシステムは実行可能アクセス許可をサポートしていません。代わりに cygwinはファイル名と内容を調べて実行可能かどうかを判断します

ファイル名が.bat、.com、または.exeで終わる場合、またはその内容が#!で始まる場合、ファイルは実行可能であると見なされます。

したがって、bashファイルがShebangで始まることを確認する必要があります。そうすれば、lsのパーミッション出力を無視して、ファイルを実行できるはずです。

5
crowne

/ etc/fstabに次のものが含まれていることがわかるまで、chmodを実行できませんでした。

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

しかし、次のようにする必要があります。

none /cygdrive cygdrive binary,posix=0,user 0 0

開いているすべてのCygwinプロセスを閉じて再起動した後、すべてが機能しました。

1
rshdev

この回答 役に立ちました。

所有者、グループ、その他のアクセスを制御する通常の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
1
Danny Zeng

スクリプトの最初の行に#!/bin/bashを追加するだけです。

しかし重要それをnanoまたはviで行う。

保存後-ファイルは実行可能権限で緑色で表示されます。

たとえば画像を参照してください:

enter image description here

0
user1598814