ユーザーにツールを提供し、唯一の操作ユーザーにデフォルトのスクリプト実行を許可する必要があるシナリオを考えてみましょう。これで、ツールはいくつかのファイルを使用して機密情報を保存します。私が望むのは、スクリプトがファイルのデータにアクセスできるはずですが、ユーザーはアクセスできないはずです。彼が持っている唯一のアクセス権は、スクリプトを実行することです。
簡単な場合は、ツールに2つのmain.shファイルが含まれているとします。スクリプトユーザーは実行のみを実行でき、読み取ることもできず、info_fileにいくつかの機密情報が含まれているため、ユーザーではなくmain.shのみを使用する必要があります。 。
このツールは、他のコンピュータの他のユーザーに提供できます。 Linuxでこれらのシナリオを処理するさまざまな方法は何ですか?
答え1
SUIDを使用する1つの方法。
グループおよび他のユーザーにのみ、シェル・スクリプトおよび情報ファイルに対する実行権限を付与します。
シェルスクリプトを呼び出すラッパーCプログラムを作成します。
C 実行ファイルに SUID ビットを設定します。 (chmod u+s ファイル)
エンドユーザーは C 実行可能ファイルを呼び出します。
答え2
簡単なオプションは、補助ファイルを暗号化/復号化することです。これを行う方法についてはこちらをご覧ください。https://serverfault.com/questions/489140/what-is-a-good-solution-to-encrypt-some-files-in-unix
スクリプト自体が実際にコンパイルされたコードでない限り、スクリプトを読み取ると、キーを簡単に検索して使用された暗号化方法を理解することができます。コンパイルされた言語コードの場合、ほとんどの言語には暗号化/復号化スクリプトを呼び出す方法があり、暗号化されたバージョンを保存するだけです。
答え3
機密情報を保護する唯一の方法は次のとおりです。いいえユーザーが所有するどのパソコンや中央サーバーから直接アクセスできます。
たとえば、
- 使用するために提供される実行専用(つまり、読み取りアクセスなし)ラッパースクリプトを作成します
sudo
。これはrootとして実行する必要はなく、rootではなく専用のユーザーで十分です。 - ユーザーが自分のコンピュータで実行できるようにスクリプトのコピーを提供しないでください。代わりに、サーバーから(たとえば経由で
ssh servername sudo myscript.sh
)実行するように依頼してください。これは、サーバーがアクセス制御を維持できる唯一の場所であるためです。