1

一連のカスタム メソッドを含む別のファイル (required.rb) を「必要とする」Linux システムに ruby​​ スクリプト (script.rb) をインストールしました。

ユーザーにrequired.rbを読ませたくありません。

読み取りアクセス (つまり、chmod 600 required.rb) を削除してから、ユーザーとしてスクリプトを実行しようとすると、次のエラーが発生します。

no such file to load -- /etc/required.rb

ruby がこの必要なファイルを読み取れるようにする一方で、ユーザーがそれを表示できないようにする方法はありますか?

4

1 に答える 1

2

プロセスがファイルを読み取れるかどうかは、そのプロセスの有効なUIDによって決まります。ファイルのアクセス許可を変更すると、ユーザーによるプロセス(rubyプロセスを含む)はファイルを読み取ることができなくなります。

1つの解決策は、rubyインタープリターを他の誰かが所有し、それをsetuidにすることですが、これにより、実行するスクリプトに関係なく、これらの「保護された」ファイルを読み取ることができます。要するに、これをしないでください。

もう1つのオプションは、データをファイルシステム以外の場所に保持し、そのために別の認証システムを使用することです。

私の意見では、スクリプトにすべてのメソッドを含めることですが、ユーザーに実行させたくないメソッドへのアクセスを制限する、ある種のAAAハーネスを使用することです。その後、任意のAAAバックエンドを使用してユーザー(LDAP、パスワードファイルなど)を認証できます。

于 2011-12-01T08:27:25.577 に答える