我正在使用Python中的shutil.copy来复制一组文件。但是当我将文件复制到/usr/lib/位置时,由于需要管理员权限,因此会收到权限被拒绝的错误提示。
那么,我该如何以管理员权限复制文件, 或者如何获取用户的管理员密码以复制文件呢?
欢迎提供您的想法。
那么,我该如何以管理员权限复制文件, 或者如何获取用户的管理员密码以复制文件呢?
欢迎提供您的想法。
补充一下 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)
让用户以管理员身份运行脚本:
sudo python-script.py
Unix已经具备认证和密码管理功能。你不需要自己编写,如果你试图这样做,必然会存在安全漏洞。
使用允许写入的用户启动程序。例如,首先登录到root (su
)或使用sudo myscript.py
运行脚本。
我来这里是为了寻找另一种做事情的替代方式。 我使用的一个快速而简单的技巧,因为我不想让整个脚本以 root 权限运行:
try:
shutil.os.remove(file1)
except PermissionError:
shutil.os.system('sudo chown $USER "{}"'.format(file1))
# try again
try:
shutil.os.remove(file1)
except:
print('Giving up on'.format(file1))
这可能并不完全没有错误,但它们适用于我草拟的快速脚本
糟糕,我看到你在询问副本权限。 但你可以应用同样的逻辑
try:
shutil.os.copy(file1,destination)
except PermissionError:
shutil.os.system('sudo cp "{}" "{}"'.format(file1,destination))