5

ファイルの属性を変更するために使用できる MSYS シェル コマンドを教えてください。次のようにコマンドを実行するとls -l、次のようになりました。

-rw-r--r-- 1 lenovo Admin .....m4sugar.m4

完全なアクセス権を提供したい。

どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

3

@cdhowie は正しいです。これはそこで追跡された msys のバグです -> http://sourceforge.net/tracker/?func=detail&atid=102435&aid=3071537&group_id=2435

Cygwin のように POSIX エミュレーションで偽造しない限り、これまで以上に役立つことはありません。ただし、Cygwin が行うことはほとんど無関係です。MSYS は Cygwin-1.3 からフォークされたため、その偽造のほとんどは意図的に無効にされました。MSYS の目的は、偽造された POSIX 機能を Cygwin がサポートする範囲で提供することではありません。Cygwin の動作が必要で、MSYS が必要に応じて十分に保持できない場合は、Cygwin を使用する必要があります。

MSYS は、MinGW でサポートされているネイティブのMS-Windows 機能との統合を改善するように設計されています。このネイティブの MS-Windows 環境では、ファイルを実行可能としてマークできるファイル システム属性はありません。これは、ファイルのデータ スペース内のマジック バイト シーケンスによって示されます (通常、一致するファイル名拡張子によって修飾されます)。Cygwin のエミュレーションをより完全に採用する以外に、MSYS chmod がファイル破損のリスクなしにそれを安全に変更する方法はありません。しかし、それは MSYS プロジェクトの目的とは正反対です。

@kbulgrien は、権限を変更するための良いアプローチを提供します。

注:icaclsは、いくつかの問題を修正した新しいバージョンですがcacls、Windows XP には存在しないようです。

次のコマンドのいずれかを使用して、Everyone に完全なアクセス権を与えることができます。

  • cacls "$file_path" //E //P Everyone:F
  • icacls "$file_path" //grant Everyone:F

ls -lMsys では、caclsまたはの使用後に実際の ACL に関する正確な情報が表示されないことに注意してくださいicacls

于 2012-09-19T02:15:56.887 に答える
1

この問題は、MSYS ツールの最小限の実装の 1 つである可能性が非常に高いです。また、attrib.exe などの Windows ツールでは変更できない変更を行うことも制限されます。

$ >test
$ ls -l test
-rw-r--r--    1 kbulgrie Administ        0 Aug 24 13:51 test
$ chmod u-w test
$ ls -l test
-r--r--r--    1 kbulgrie Administ        0 Aug 24 13:51 test
$ chmod u+w test
$ ls -l test
-rw-r--r--    1 kbulgrie Administ        0 Aug 24 13:51 test

ご覧のとおり、chmod は正常に動作します。次に、Windows バイナリである attrib.exe で何が起こるかを見てみましょう。

$ ls -l test
-rw-r--r--    1 kbulgrie Administ        0 Aug 24 13:51 test
$ attrib +R test
$ ls -l test
-r--r--r--    1 kbulgrie Administ        0 Aug 24 13:51 test
$ attrib -R test
$ ls -l test
-rw-r--r--    1 kbulgrie Administ        0 Aug 24 13:51 test

Windows ツールである attrib は、ugoa のアクセス許可にとらわれず、権利の有無を単純化します。

$ attrib +R test
$ attrib test
     R     C:\msys\1.0\home\kbulgrien\test

MSYSツールがWindowsの「同等」以上のことを期待するのは当然だと思います。MSYS の M は「最小」を意味します。

cacls.exe は、MSYS の下でいくつかのことを行うことができます。たとえば、これは、Administrat にls -lは書き込みがないと表示されているように見えますが、I と Administrators にはフル コントロールがあることを示しています。気をつけて。Windows の場合は、おそらく Windows メソッドを使用します。$ cacls test
C:\msys\1.0\home\kbulgrien\test BUILTIN\Administrators:F NT AUTHORITY\SYSTEM:F APD\kbulgrien:F BUILTIN\Users:R

次のコマンドは、アーカイブから復元した後に SQL データベース ファイルのアクセス許可を修正するために MSYS 環境で使用するコマンドです。MSYS から Windows バイナリを実行できます。私はいつもそうしています...たとえば、スクリプトはcmd.exeを呼び出さずにMSYSシェルでdiskpart、formatなどを実行します。

$ cacls "Mantis*.*" //E //G "NETWORK SERVICE":F
于 2012-08-24T19:08:44.007 に答える