如何锁定python(.py)文件以进行编辑?

iszxjhcz  于 2023-03-04  发布在  Python
关注(0)|答案(6)|浏览(198)

我写了一个自动化程序,登录到一个网站来执行某项任务。.py文件将提供给一些用户,但我不希望他们能够阅读代码,并看到用于登录的密码。我如何确保他们只能执行文件,但不能阅读它?

hgc7kmma

hgc7kmma1#

要锁定Python脚本使其无法编辑,请将PY文件编译为PYC文件。这可确保用户无法对脚本中的现有代码进行任何更改。PYC文件本质上是二进制文件,无法直接读取。以下是将PY文件编译为PYC文件的代码:

import py_compile

script = "C:\\temp\\myscript.py"
py_compile.compile(script)

这段代码将使myscript.pyc.PYC文件运行,即使PY文件不存在。
来源:https://support.esri.com/en/technical-article/000010321

l7wslrjt

l7wslrjt2#

你不能这么做,如果你给予用户一个密码,不管你怎么隐藏,总有可能被发现。
你可以通过加密和模糊处理让密码更难找到,但这只能阻止不懂技术的用户,而且这些用户可能不会想到去读一堆代码来寻找一个明文密码。
正确的方法是让用户知道他们自己的密码也没问题。让服务器端的位阻止人们做他们不应该做的事情(如果你没有,你需要做一个)。为每个用户使用单独的帐户,这样你就可以在需要的时候单独停用他们。

gjmwrych

gjmwrych3#

在代码中包含以下内容:

import py_compile
if not '.pyc' in __file__:
    TheNewPathGoesHear=__file__.replace('file.py', 'file.pyc')
    py_compile.compile(__file__, TheNewPathGoesHear)

这个if语句确保在编译之前这不是一个pyc,如果你编译时没有这个if语句,那么每次你打开pyc文件时,你都会有一个新的文件。
NOTE:新文件路径的格式中必须有一个“.pyc”,您不能定义新路径,这样会将其发送到主文件夹中的__pycache__文件夹。

daupos2t

daupos2t4#

一种可能性是运行一个守护进程(服务)来保存密码。这将在一个受限用户下运行,该用户已经应用了常规安全性。用户应该不能访问守护进程用户下的任何内容。
用户有一个python程序,它通过IPC机制将登录请求传递给守护进程,您可以使用套接字、命名管道等。守护进程代表用户执行任务并将结果传递回来。
这是否实用取决于用户和服务器之间的通信量。如果这是一个交互式任务,则会有性能问题。
守护进程可能必须是多线程的,具体取决于卷,因此这可能是一项繁重的工作。
类似的可能性是守护进程可以是一个Web服务器(使用Apache),然后用户使用浏览器访问。这可能更容易编程和维护,但如果可行,这取决于您的环境。

a2mppw5e

a2mppw5e5#

最好的方法是@cdarke提供的方法,但是更快的方法是将.py文件存储在一个隐藏的、受密码保护的文件夹中。

eimct9ow

eimct9ow6#

使用chmod

如果你使用的是linux(或者mac),你可以使用命令行工具chmod来编辑文件的属性,例如,要允许读取和执行www.example.com文件(但不允许写入),请使用以下命令:hello.py file (but not write access), use the following command:

chmod a=rx hello.py

这对于共享服务器特别有用,因为您不希望用户意外地覆盖关键文件。

    • 然而**:如果用户在他们的本地机器上下载文件,他们总是可以使用chmod来反转命令并允许再次编辑。2这不会阻止开发人员编辑文件的本地副本。

正在反转chmod

如果要使文件再次可编辑,请使用以下命令:

chmod a=rwx hello.py

答案取自我的另一个帖子here。那边的帖子更详细,可能更有用!

相关问题