2010-09-28 58 views
2

我米用蟒蛇shutil.copy複製文件的列表。但是,當我將文件複製到/ usr/lib中/位置,I M越來越不準,因爲我需要是管理員才能做到這一點。同時使用shutil.copy拷貝文件獲得管理員密碼?

所以我怎麼可能複製文件以管理員權限或 我怎麼能得到用戶的管理員密碼複製文件?

想法,將不勝感激

+0

上的超級用戶不屬於;這是如何用Python(腳本語言)編寫複製命令。 – 2010-09-28 09:12:18

回答

0

與被允許寫有用戶啓動程序。例如登錄到第一(su)根或sudo myscript.py運行該腳本。

2

使用戶運行該腳本作爲管理員:

sudo python-script.py 

的Unix已經認證和口令管理。你不需要自己編寫,如果你嘗試的話,無疑會有安全漏洞。

3

要添加到什麼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) 
0

我來找她尋找一種替代方式做事。 一個快速和骯髒的黑客我用的,因爲我不希望我的整個腳本以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))