在使用shutil.copy复制文件时获取管理员密码?
我正在用Python的shutil.copy来复制一系列文件。但是当我把文件复制到/usr/lib/这个位置时,系统提示我权限被拒绝,因为我需要管理员权限才能这样做。
那么,我该如何用管理员权限来复制文件呢?或者我该如何从用户那里获取管理员密码,以便复制这些文件呢?
任何想法都很受欢迎。
4 个回答
1
首先,你需要用一个有权限写入的用户来启动你的程序。比如,你可以先登录为超级用户(root),可以用命令su
来实现,或者直接用sudo myscript.py
来运行你的脚本。
4
让用户以管理员身份运行脚本:
sudo python-script.py
Unix系统本身已经有了身份验证和密码管理的功能。你不需要自己去写这些东西,如果你尝试这样做,肯定会出现安全漏洞。
4
补充一下katrielalex说的内容:如果你想的话,可以让这个脚本自己通过sudo
来运行。这里有个概念验证的例子:
import sys, os, subprocess
def do_root_stuff():
print('Trying to list /root:')
for filename in os.listdir('/root'):
print(filename)
if __name__ == '__main__':
print('Running as UID %d:' % os.geteuid())
if os.geteuid() == 0:
do_root_stuff()
else:
subprocess.check_call(['sudo', sys.executable] + sys.argv)