保护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你的Python脚本转换成一个可执行文件,它会显示一个图形用户界面,并具有指定的图标。如果将参数--onefile--windowed省略,将会有一小堆文件(如DLL和可执行文件)显示控制台。阅读documentation,特别是section about usage

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

[编辑]

您也可以使用标准的封装py_compile。输出将是一个扩展名为“.pyc”的文件。验证工作目录是设置为你的scipt的路径,并从你喜欢的Python控制台调用该编译器。

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

然后你会看到文件“the_greatest_script.pyc”您的文件夹,可以通过其他的Python脚本进行分配和进口英寸

+0

听起来很有希望,但在阅读了这个方法之后,pyinstaller生成的.exe文件似乎很容易恢复为Python代码。这不正确吗? – user3170354

+0

不确定关于exe,但pyc文件可以很容易地反编译为py –

+0

你从哪里阅读了关于从可执行文件恢复到Python的内容? PyInstaller的文档甚至说你可以用[PyCrypto](https://pypi.python.org/pypi/pycrypto)加密你的可执行文件,例如使用SHA。 –

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

您可以使用Cython将Python模块编译为本地库并仅提供编译文件;尽管它涉及很多麻烦,并且在某些情况下不起作用。它们仍然可以反编译为C代码,但它大部分是不可读的。优点:1.编译的库可以作为普通Python模块导入。

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