我正在使用 python 中的 shutil.copy 来复制文件列表。但是当我将文件复制到 /usr/lib/ 位置时,我的权限被拒绝,因为我需要成为管理员才能这样做。
那么我怎样才能复制具有管理员权限的文件,或者我怎样才能从用户那里获得管理员密码来复制文件呢?
想法将不胜感激
[root@hostname ~]# python script.py # allow this
[user@hostname ~]$ sudo python script.py # deny this
[user@hostname ~]$ sudo -E python script.py # deny this
[user@hostname ~]$ sudo PATH=$PATH python script.py # deny this
[user@hostname ~]$ python script.py # kindly refuse this
Run Code Online (Sandbox Code Playgroud)
我正在尝试实现上述行为。如果您担心原因或示例不够充分,请进一步阅读。抱歉,我的舌头很锋利,但我的大多数Stack Exchange问题都返回了敌对问题,而不是答案。
这个问题源于要求管理员运行我的脚本,但是脚本的性质需要root环境变量(而不是环境变量sudo)。
我已经对此进行了深入研究... 以下是此答案的
if os.geteuid() == 0:
pass # sufficient to determine if elevated privileges
Run Code Online (Sandbox Code Playgroud)
但是后来我开始需要访问PATH脚本内部。我注意到
sudo -E env | grep PATH; env | grep PATH
Run Code Online (Sandbox Code Playgroud)
打印不同的PATH值。我发现这是因为的安全政策所致PATH …