ssh、Cygwin、Windows 7、および .sh ファイルに関連する奇妙な権限エラー

ssh、Cygwin、Windows 7、および .sh ファイルに関連する奇妙な権限エラー

私は Cygwin、ssh、およびファイル権限の調整に慣れていないので、問題が発生しています。コンピューター WORKER1 で、コンピューター WORKER2 に ssh で接続し、そこから WORKER1 で .sh ファイルを実行しようとしています。以下の出力から判断すると、ls -l ではすべてを実行する権限があるはずです (これらの権限は適切ではないことはわかっていますが、なぜこの権限エラーが発生するのか理解するのに必死でした)。

root@Worker1 ~
$ ssh WORKER2
Last login: Tue Jan 31 10:51:54 2012 from worker1

root@Worker2 ~
$ cd //WORKER1/Users/Public/pMatlab/MatlabMPI/Examples/MatMPI

root@Worker2 //WORKER1/Users/Public/pMatlab/MatlabMPI/Examples/MatMPI
$ sh Dos_Commands.WORKER2.1.sh
sh: Dos_Commands.WORKER2.1.sh: Permission denied

root@Worker2 //WORKER1/Users/Public/pMatlab/MatlabMPI/Examples/MatMPI
$ ls -l
total 28
-rwxrwxrwx+ 1 Administrators None   2 Jan 31 11:01 Dos_Commands.WORKER1.0
-rwxrwxrwx+ 1 Administrators None 127 Jan 31 11:01 Dos_Commands.WORKER2.1
-rwxrwxrwx+ 1 Administrators None 250 Jan 31 11:01 Dos_Commands.bat
-rwxrwxrwx+ 1 Administrators None 636 Jan 31 11:01 MPI_COMM_WORLD.mat
-rwxrwxrwx+ 1 Administrators None  97 Jan 31 11:01 MatMPIdefs1.m
-rwxrwxrwx+ 1 Administrators None 199 Jan 31 11:01 p0_p0_t10000_buffer.ma
-rwxrwxrwx+ 1 Administrators None 199 Jan 31 11:01 p0_p1_t10000_buffer.ma
-rwxrwxrwx+ 1 Administrators None   0 Jan 31 11:01 p0_p1_t10000_lock.mat

両方のコンピューターは Windows 7 64 ビットで実行されており、それぞれで最新バージョンの Cygwin と OpenSSH を実行しています。WORKER2 で実行されている sshd も Cygwin のものです。sshd をインストールするときに、ssh-host-config を実行するときに、特権分離に「いいえ」と答え、サービスとしてインストールすることに「はい」と答えるだけで、sshd を適切に機能させることができました。公開キー RSA 認証を使用しています。//WORKER1/Users/Public/pMatlab/ をネットワーク ドライブとしてマウントし、その方法でアクセスしてみましたが、それでもうまくいきませんでした。何が間違っているのか、何か考えはありますか? よろしくお願いします!

編集: Windows のネットワーク共有設定は、私が見る限りすべてを許可するように設定されていることを忘れていました。さらに、パブリック フォルダーとその中のフォルダーはすべて読み取り専用に設定されているようです (右クリック -> プロパティ メニュー)。ただし、その中のファイルは読み取り専用ではありません。プロパティ メニューでこれを変更しようとしても何も起こりません。読み取り専用をオフにすると、プロパティ メニューを再度開くと再びオンになります。cmd.exe で attrib -r C:\Users\Public を実行してこれを変更しようとしましたが、何も起こりませんでした。

最後に、.sh ファイルをローカルで実行しているとき、コンピューター WORKER2 の Windows GUI からアクセスしようとしているとき、または WORKER2 からそれ自体に ssh してアクセスしようとしているときには、権限拒否エラーは表示されません。権限エラーは、WORKER1 から WORKER2 に ssh して、そこから WORKER1 のファイルにアクセスしようとした場合にのみ表示されます。

最終編集: 問題は解決しました。フォルダーが暗号化されていたことが判明しました。理由はわかりません。何らかの理由で、ZIP ファイルからそのように取り出されました。

答え1

1989 年の素晴らしい新しい Unix の世界へようこそ!

TRUSIXの親切な人々は、今年になって、権限情報が実際にはすべてではないls場合に視覚的に表示するためのコマンドの拡張機能を定義しました。その拡張機能は、権限フラグの後に続く文字です。ご覧のとおり、出力には文字があちこちにあります。つまり、ファイルにこれらの新しい機能が含まれているということです。rwxrwxrwx+ls+任意アクセス制御リストTRUSIXの人々が興奮しているものです。そのため、ファイルへのアクセスはない必ずしも 9 つの権限フラグだけから推測できるものではありません。

新しいスタイルのACLに対する古いスタイルのUnixツールの制限を補うために、TRUSIXの人々は、いくつかの新しいコマンド、およびも考案しましたgetaclsetacl前者は、それらのACLを参照するために使用されます。getfaclそしてsetfacl名前として。そして、MicrosoftとIBMのOS/2バージョン3が計画中でありcacls、最終的にxcaclsACLを参照するためのコマンドが名前付きで登場するかもしれないという噂が広まっている。さらに良いなぜならgetfacl、彼らは3ビットのUnixレンズを通してではなく、むしろ彼らのすべての中で実際にどのようになっているかを提示するからです。標準および特定の権利 drctpoxfew両方のアカウントそして-マシン名栄光。

このアイデアは、1990年代に誰もが参加することになるUnixの世界では、あっという間に広まるに違いありません。20年後には、9ビットの権限は時代遅れになり、ACLが標準となり、9つの権限フラグをまだ見ている頑固者でさえ、それらについて知っているだろう。 ☺

参考文献

関連情報