在使用shutil.copy复制文件时获取管理员密码?

6 投票
4 回答
10152 浏览
提问于 2025-04-16 04:41

我正在用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)

撰写回答