Python を使用して Web ベースのアセット管理システムを構築し、短い CG フィルムの制作を管理します。アプリは、ローカル ネットワーク上の centos マシンで実行されるイントラネット ベースになります。すべてのアセットとショットを参照し、クライアント マシン (centos も実行) 上の適切なプログラムでそれらのいずれかを開くことができることを願っています。アプリがコマンドを実行できるようにするには、クライアント側で何らかのセットアップが必要になると思いますが、それを使用するすべてのクライアントにアクセスできるため、これは問題ありません (ただし、 root アクセス権がない)。このようなことは可能ですか?
3 に答える
これは標準的な方法ではないことに注意してください。あなたが何かにアクセスしたりクリックしたりすると、自由にメモ帳やマインスイーパを開くことができる Web サイトを想像してみてください。
これを行うには、特定の API を公開し、Web アプリ呼び出しからの要求を信頼できるクライアント マシンで実行されているサービスが必要です。これは常にクライアント マシンで実行されている必要があり、Web アプリでは、このサービスに要求を送信して、必要なアプリケーションを起動できます。
すでにお察しのとおり、クライアント PC でサービスを実行し、所定のポートをリッスンする必要があります。
クライアントがアセットを開くように要求すると、Web アプリケーションは実行中のサービスに要求を送信して、アセットをダウンロードして実行します。あなたのポート番号である限り。が 1024 を超えており、root アクセスを必要とするアプリケーションを実行していない場合、root なしでこのサービスを実行できます。
しかし、これはクライアントが悪意のある攻撃にさらされるため、非常に悪い考えです。クライアント サービスへのすべての要求が適切に署名されていること、およびクライアントが各要求を実行する前に有効であることを確認する必要があります。クライアント サービスの実装によっては、他にも考慮しなければならないセキュリティ要素が多数ある場合があります。しかし、一般に、リモート マシンから任意のリクエストを実行できるサービスを持つことは、非常に危険なことです。
会社の IT ポリシーによっては、クライアント PC でこのようなサービスを実行することも許可されない場合があります。
クライアントにリソースを通常どおりダウンロードさせてから、ユーザーにリソースを手動で実行させる方がよいでしょう。
PS: 1024 未満のポートでクライアント サービスを実行することはできますが、ルートとして開始し、ポートにバインドした後、すべてのルート権限を削除し、実行中のユーザーをsetuidを使用して別のユーザーに変更する必要があります (または、選択した言語)
クライアントシステムで実行されるアプリケーションの特定のサブセットがある場合(つまり、ジョブを分散している場合)、Pythonソルトを検討することをお勧めします。これは、安全なプロトコルと認証を使用してジョブを分散し、結果を提供する分散RPCです。
http://docs.saltstack.org/en/latest/topics/index.html
特定の更新に基づいてコンテンツ生成を自動化することを検討している場合は、さまざまなリビジョン管理システムとビルドシステム用のプラグインを備えたJenkinsを検討することをお勧めします。
https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins
使用している特定のツールと統合されていない可能性がありますが、統合されている場合は、一般的なソルト自動化よりもセットアップと管理が迅速になる可能性があります。
-デビッド