web-dev-qa-db-ja.com

Windowsでcygwinを使用して「アクセスが拒否されました」

背景:[.bat]ファイルを書き込もうとしているので、ダブルクリックするとbashスクリプトが取得されます呼び出されました。 bashスクリプトは、GPU/CPU温度を監視するいくつかのWindows GUIアプリを起動します。 cygwin v1.7.7-1(本日ダウンロード)とWindows 7の新規インストールを行いました。

コード:monitor-temps.bat:

C:\cygwin\bin\bash.exe ~/bin/monitor-temps.bash
pause

コード:monitor-temps.bash:

#!/usr/bin/bash
"/cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe" &

出力:[.bat]ファイルをダブルクリックすると、次のようになります。

C:\Users\michael\Desktop>C:\cygwin\bin\bash.exe ~/bin/monitor-temps.bash

C:\Users\michael\Desktop>pause
Press any key to continue . . . /home/michael/bin/monitor-temps.bash: line 2: /cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe: Permission denied

ディレクトリにcdして手動でアプリケーションを実行しても、同じアクセス権エラーが発生します。

権限:Linuxでの権限の問題に関する私の経験から、私は自分がそうだと思うユーザーであり、ファイルには期待される権限があります:

$ whoami
michael

$ ls -l GPU*
-rwx------+ 1 michael        None 890720 2010-12-01 19:23 GPU-Z.0.4.8.exe

質問:誰かがこれを修正する方法を知っていますか?何か不足していますか?

15
Mike

開発者として、私はショートカットを使用して、Windows環境でLinuxと同様に動作するコマンドラインインターフェイス(CLI)を提供し、ファイルをuntarしようとして同じ問題に遭遇しました。

修正は、ショートカットを「管理者として実行」に設定することでした。

この方法を使用してCygwin環境にアクセスしている場合は、ショートカットのプロパティに移動し、[詳細設定]ボタンを選択して[管理者として実行]のオプションを取得し、ボックスをチェックして[OK]をクリックします。そして、あなたは行く!ショートカットを作成して上記を実行することで、バッチファイルでこれを実行するように設定することもできます。

お役に立てば幸いです。

13
Darkstrumn

ディレクトリまたはファイルのアクセス許可を変更する必要があると思います。ファイルまたはディレクトリの権限を変更したい場合は、コードにフルパスを追加する必要があります。

C:\ yourDirectoryのcocos2d-xフォルダーのアクセス許可を変更する場合のように(私はWindowsを使用していますが、Macでは/ の代わりに \)cygwinコンソールでコードを記述します。

chmod -R 775 /cygwindrive/c/yourDirectory
10
Sajidur Rahman
  • cat /proc/mountsまたはmountを使用してマウントテーブルを確認し、//usr/bin/usr/libからのすべてのマウントポイントにnoaclフラグがあることを確認します。見つからない場合は、/etc/fstabを修正して再起動します。 (再起動すると、ルートマウントポイントのnoaclフラグが同期され、再起動せずに同じことができるかどうかわかりません)。

  • ファイルに対するicaclsの出力で、NULL SIDレコードおよびその他の奇妙なレコードを確認してください。それらはCygwinのPOSIX ACL変換層による書き込みで追加されたように見えます(/ etc/fstabで "noacl"を使用するとそれを無効にすることができますが、損傷はすでに行われています)。

    含まれている親にNULL SIDレコードがあった場合、ファイル上でWindows ACLをリセットするだけでは不十分な場合があります。走らなければならない

    icacls c:\cygwin64 /reset /t /l /c
    

    コマンドプロンプトから、各ファイルとディレクトリのWindows ACLから無関係なレコードを削除します。

pdate他のコマンドは、所有権をリセットし、デフォルトのACLを削除して、変更前後の既知のバイナリのACLを表示します。

set croot=c:\cygwin64
icacls %croot%\bin\ls.exe
%croot%\bin\getfacl /bin/ls
takeown /F %croot% /R /D Y > nul
icacls %croot% /reset /T /C /L /Q
icacls %croot%\bin\ls.exe

%croot%\bin\getfacl /bin/setfacl
%croot%\bin\getfacl /bin/find
%croot%\bin\setfacl -bk /bin/find
%croot%\bin\find -P / -xdev -exec /bin/setfacl -bk "{}" +

icacls %croot%\bin\ls.exe
%croot%\bin\getfacl /bin/ls
6
eel ghEEz

これを修正する最も簡単な方法は次のとおりです。

  1. ダウンロード Sysinternals ProcMon 、それを起動してしばらく実行します。
  2. ノイズを生成するすべてのプロセスを除外します。
  3. ログの使用率が低下したら、ファイルアクセスを試みます。
  4. ProcMonログで「アクセス拒否」メッセージを検索します。
  5. 調査。簡単に修正できるはずです。
6
Tomalak

-rwx ------ +が問題である可能性があります。一部の非表示のACLでは、xが禁止されている場合があります。次に、setfaclを使用してACLをリセットします。

$ cat >/tmp/faclx <<EOF
user::rwx
group::r--
mask:rwx
other:r--
EOF
$ setfacl -f /tmp/faclx /cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe

または、昇格した権限が必要です。

$ cygstart  --action=runas /cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe
5
rurban

私はこの問題を抱えており、cdで、作成した(パッケージ化された、または再パッケージ化された)ボックスを含むディレクトリに修正しました。次にvagrant box add <file.box> --name <name>。 PATHは問題を修正し、失敗させると思います。次に、vagrant box listで再確認します。それから私はmkdir coolbox; cd coolbox。次に、vagrant init <name>を実行すると、すべて魔法のように表示されます。

1
Felipe Alvarez

git bash、次のようなコマンドを実行:cmd "/C postgresql-10.5-2-windows-x64.exe --unattendedmodeui minimal --mode unattended --servicename 'postgreSQL'"

0
jackchen