我有使用 bash 脚本运行的 Python 代码。我希望非 sudo 用户能够运行它而不使 Python 代码可读。推荐的模式是什么?
我考虑的两种方式:
- 将所有代码放在用户的代码下
HOME
,并根据需要使其不可读且可执行 - 将所有代码放在下面
/usr/local
并添加相关的bash脚本sudoers
- 将所有代码放在下面
/root
并将相关的 bash 脚本添加到用户PATH
或bin
文件夹中
由于有多种方法可以构建它,我很想听听您的想法标准或者受到推崇的方式是。
答案1
确保用户无法阅读其源代码的一种常见方法导致运行将会是编写代表用户操作的服务具有必要的特权。然后为用户提供与服务器通信的方式,例如套接字或 TCP 端口。此时,代码不再在用户可用的上下文中运行。编写此内容并不简单,因为您可能需要考虑例如尝试使用您的服务进行权限升级的用户。
答案2
对我有用的解决方案如下:
将以下行添加到/etc/sudoers
:
user ALL = (root) NOPASSWD: /path/to/script
作为用户,运行脚本如下:
sudo /path/to/script
这样,脚本本身(以及所有后续的 Python 脚本)都会以 root 身份运行,但同时它们都不可读或可写