私はLinuxファイルシステムでDockerとKubernetesを使用して実行可能ファイルを実行しようとしました(結果はディレクトリです)。
権限を台無しにしたと思わせる「権限拒否」エラーが発生しましたが、確認してみるとすべてが正確でした。
後で私はこれが私が実行しようとしていたディレクトリであることに気づきました。
私の質問は、この場合、「ディレクトリを実行できません」または同様のエラーの代わりに「許可拒否」エラーが発生するのがどれほど合理的ですか?
私はLinuxの経験があまりないので、この質問は見慣れないかもしれませんが、事前に答えてくれてありがとう。
ディストリビューション: Debian 10. FS: 拡張4
答え1
「許可拒否」は、ファイル権限ビットが要求されたアクセス権を付与しない場合に通常現れる EACCES エラーコードです。
そうですね。 EISDIR(「ディレクトリです」)のようなものがより意味があるかもしれません。 FIFOの使用など、より一般的な場合は他のものが必要です。エラーメッセージがファイル形式(Linuxの「Exec形式エラー」)を参照しても、ENOEXECはこれを行うことができます。これはあなたが得る一般的なファイルであり、十分な権限を持っていますが、オペレーティングシステムはファイルを認識しません。
「一般ファイルではない」の標準エラーはないと思います。
とにかくそうです。POSIXでEACCESとして指定:
[EACCES]。
新しいプロセスイメージファイルは通常のファイルではなく、この実装はその種類のファイルの実行をサポートしません。
選択の後に実際の論理的な理由があるかどうかはわかりませんが、この場合、一般的な理由は最初にそのタスクを実行し、他のすべてのシステムにコピーして互換性のために保持することを提案したいと思います。 100%正確に一致しない唯一のエラーコードではありません。