/ cygwin/d/myfolder /というフォルダーがあります。また、ls -laを実行すると、cygwinからファイルを保存するたびに、ファイルに許可000が与えられていることがわかります。私のサーバーへのフォルダとアクセス可能なファイルのどれも。ファイルを取得して、適切な許可を自動的に取得するにはどうすればよいですか?
このリンクの回答を読んでください: http://cygwin.1069669.n5.nabble.com/vim-and-file-permissions-on-Windows-7-td61390.html
そこでの解決策も私のために働いた:
/ etc/fstabを編集し、ファイルの最後に次の行を追加します。
none /cygdrive cygdrive binary,noacl,posix=0,user 0 0
次に、すべてのCygwinプロセスを閉じ、新しいターミナルを開き、ファイルでls -lを再度実行します。
説明:デフォルトでは、Cygwinはファイルシステムのアクセス制御リスト(ACL)を使用して実際のPOSIX許可を実装します。一部のWindowsネイティブプログラムまたはプロセスは、CygwinがPOSIX許可を000として計算するようにACLを作成または変更する場合があります。noaclマウントオプションを使用すると、Cygwinはファイルシステムを無視しますACLは、DOSの読み取り専用属性に基づいて許可ビットのサブセットのみを偽装します。
Umaskコマンドでumaskが正しく設定されていることを確認してください。 umaskが0777の場合、新しいファイルのアクセス許可から差し引かれ、000アクセス許可になります。おそらく、それ以上に考慮すべき他のいくつかの可能性があります。
/ etc/passwdおよび/ etc/groupでIDが正しく設定されていない場合、lsが予期しない結果を表示する可能性があります。フォルダーの権限を確認してください。また、getfaclコマンドを使用してWindowsの権限を確認してください。たぶん、mountコマンドもチェックしてください。
上記の答えでは、解決策が提案されました:
/ etc/fstabを編集し、ファイルの最後に次の行を追加します。
なし/ cygdrive cygdrive binary、noacl、posix = 0、user 0 0
そして、その答えには次のコメントがありました。
これを試してみると、どんなchmod()を実行しても、すべてのファイルは-rw-r--r--です。ファイルを実行可能としてマークできません。 0644に戻るだけです(umask == 0022)
これと同じ問題がありましたが、Cygwin kshまたはmkshを実行しているときにDOSバッチファイル(* .bat)を実行できないことが明らかになりました。私はこのウェブサイトを偶然見つけました: http://pipeline.lbl.gov/code/3rd_party/licenses.win/cygwin-doc-1.4/html/faq/ この役立つアドバイスが含まれています:
Mount -xを使用すると、Cygwinでマウントポイントの下のすべてのファイルを実行可能ファイルとして処理することができます。これは、ディレクトリだけでなく個々のファイルにも使用できます。これにより、Cygwinはファイルを読み取って実行可能かどうかを判断しません。
したがって、このページとの相互参照- https://cygwin.com/cygwin-ug-net/using.html#mount-table -アドバイス付き:
cygexec-マウントポイント以下のすべてのファイルをcygwin実行可能ファイルとして扱います。
Fstabの4番目のフィールドにcygexecを追加しました。これでした。私の.batはksh/mksh内で実行可能になりました。これは、Korn Shellスタック3ファイルの深さを呼び出すJenkinsジョブを実行しているので必要です。実行に必要なのは.batだけです!
更新:上記のソリューションは、さらにテストした結果、必要なものではありませんでした。その結果、javacやclなどの一部の実行可能ファイルの動作がおかしくなりました(ユーティリティは使用法を出力して終了します)。 「cygexec」の代わりに必要なのは「exec」だけだったと思います。同じページのメモとして:
exec-マウントポイント以下のすべてのファイルを実行可能ファイルとして扱います。
Win7のPCファイルでは、通常---------- + 1 David None 69120 Jun 17 13:17 mydoc.txt
上記のすべてを試してみましたが、.zshrcに古い歴史的なマウントエントリがまだ残っていたので、これらを削除すると、ボブのアンクルの問題はなくなりました!
Cygwinターミナルでは、ディレクトリのアクセス許可を「chmod」コマンドを使用して設定できます。 「000」許可値は、特定のファイルまたはディレクトリの読み取り、書き込み、および実行の許可がオフに設定されていることを示します。 「chmod」コマンドの機能の詳細を表示するには、「man」コマンドを使用できます。