私はいくつかの異なるユーザーによって実行されるPythonスクリプトをたくさん持っています。スクリプトはWindowsサーバー環境に置かれます。Windowsサーバー上のPythonスクリプトを保護する
私が達成したいのは、これらのスクリプトを標準ユーザーが実行できるように保護することですが、そのスクリプトの読み取り/変更/移動の権限はありません。
これも可能ですか、もしそうなら、最適な戦略は何ですか?
ありがとうございます。
私はいくつかの異なるユーザーによって実行されるPythonスクリプトをたくさん持っています。スクリプトはWindowsサーバー環境に置かれます。Windowsサーバー上のPythonスクリプトを保護する
私が達成したいのは、これらのスクリプトを標準ユーザーが実行できるように保護することですが、そのスクリプトの読み取り/変更/移動の権限はありません。
これも可能ですか、もしそうなら、最適な戦略は何ですか?
ありがとうございます。
あなたはそれを配布することを考えることができます - それを実行可能なバイナリファイルに変換します。 PyInstallerを使用して実行可能ファイルを作成するのは簡単です。これはPyPi経由でインストールできます。 pyInstallerの程度
pip install pyinstaller
一つの良いところは、あなたがあなたの実行可能配分を行うために、Windowsのバッチスクリプトを書くことができるということです。
例:
@echo off
mkdir dist
mkdir dist/build
pyinstaller^
--onefile^
--windowed^
--workpath=dist\build^
--distpath=dist^
--icon="gui\icon.ico"^
--name="The_Greatest_Prog"^
the_greatest_script.py
rmdir /S /Q dist\build
cd dist
The_Greatest_Prog
PAUSE
ここで何が起こるのpyInstallerのは、GUIを表示し、指定されたアイコンを持っています1つの実行可能ファイルにあなたのPythonスクリプトに変換ということです。引数--onefile
と--windowed
が残っていると、DLLのようなファイルと実行可能なファイルがコンソールに表示されます。 documentation、特にsection about usageを読んでください。
このバッチスクリプトはPythonスクリプトのフォルダ内にある必要があり、実行するだけで結果は "dist"というサブフォルダ内の "The_Greatest_Prog.exe"というファイルになります。この実行可能ファイルは、コードを壊さずに友人に与えることができます。
[EDIT]
ます。また、標準パッケージpy_compile
を使用することができます。出力は拡張子 ".pyc"のファイルになります。作業ディレクトリがあなたのsciptのパスに設定されていることを確認し、このコンパイラをPythonコンソールから呼び出します。
>>> import py_compile
>>> py_compile.compile("the_greatest_script.py")
その後、あなたは他のPythonスクリプトで配布してインポートすることができ、あなたのフォルダにファイル「the_greatest_script.pyc」を参照してくださいます。
読み込み不可能で実行可能にする方法はありません。
CythonでPythonモジュールをネイティブライブラリにコンパイルし、コンパイル済みのファイルのみを提供できます。それは多くの面倒を含み、場合によっては機能しません。それらはまだCコードに逆コンパイルできますが、ほとんど読むことができません。
長所:1.コンパイルされたライブラリは、通常のPythonモジュールとしてインポートできます。
短所:1.追加設定が必要です。いくつかのケースでは機能しません。セロリのタスクはコンパイルされたモジュールに常駐できません:3.あなたはイントロスペクション能力を失います。 4.トレースバックは基本的に読めません。
これは有望だが、このアプローチについて読んだ後、pyinstallerによって生成された.exeファイルは比較的簡単にPythonコードに戻っているようだ。これは正しいのではないですか? – user3170354
exeについては分かりませんが、pycファイルは簡単にpyに逆コンパイルできます –
実行ファイルからPythonへの復帰についてはどこでお読みになりましたか? PyInstallerのドキュメントでは、SHAなどを使用する[PyCrypto](https://pypi.python.org/pypi/pycrypto)で実行ファイルを暗号化することもできます。 –