保护Windows服务器上的python脚本

时间:2017-08-29 05:55:25

标签: python windows security server

我有一堆Python脚本,由几个不同的用户运行。脚本放在Windows服务器环境中。

我希望实现的目的是保护这些脚本,使标准用户可以运行它们,但无权读取/修改/移动它们。

这是否可能,如果是,那么最佳策略是什么?

提前致谢。

3 个答案:

答案 0 :(得分:1)

您可以使用Cython将Python模块编译到本机库中,并仅提供编译文件;虽然它涉及很多麻烦但在某些情况下不起作用。它们仍然可以反编译为C代码,但它几乎是不可读的。

优点:1。编译库可以作为普通的Python模块导入。

缺点:1。需要额外设置; 2.在某些情况下不起作用,例如celery任务不能驻留在已编译的模块中,因为:3。你失去了内省能力;追溯基本上是不可读的。

答案 1 :(得分:0)

没有办法让它们不可读但可以同时执行。

答案 2 :(得分:0)

您可以考虑分发它 - 将其转换为可执行的二进制文件。使用PyInstaller很容易生成可执行文件。它可以通过PyPi安装。

pip install pyinstaller

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将您的Python脚本转换为一个可执行文件,该文件将显示一个GUI并具有指定的图标。如果省略了参数--onefile--windowed,则会有一小堆文件(如DLL)和可执行文件将显示控制台。阅读documentation,尤其是section about usage

此批处理脚本必须位于Python脚本的文件夹中,您只需运行它,结果就是子文件夹“dist”中的文件“The_Greatest_Prog.exe”。您现在可以将此可执行文件提供给您的朋友,而不会破坏您的代码。

<强> [编辑]

您还可以使用标准包py_compile。输出将是扩展名为“.pyc”的文件。验证工作目录是否设置为scipt的路径,并从首选的Python控制台调用此compliler。

>>> import py_compile
>>> py_compile.compile("the_greatest_script.py")

然后您将在文件夹中看到文件“the_greatest_script.pyc”,该文件可由其他Python脚本分发和导入。