2017-08-14 61 views
1

我試圖在sudo模式下僅運行我的腳本task.py的一部分。理想情況下我會用以下結構運行task.py作爲sudo運行python腳本的一部分

if __name__ == '__main__': 
    print('running normal parts')   
    .   .    . 
    . [running normal commands] . 
    .   .    . 

    print('running sudo parts') 
    .   .    . 
    . [running sudo commands] . 
    .   .    . 

,我不必爲腳本的須藤部分輸入密碼,這樣我可以只是讓命令行單個呼叫$ python task.py

是否有一個很好的告訴Python運行第二個塊爲sudo?我看到subprocess模塊有辦法用sudo privelages調用命令,但我寧願不將「sudo部分」放入單獨的腳本中以執行「運行sudo命令」部分。

+0

可能的誘惑:[this](https://stackoverflow.com/questions/34189165/python-running-select-sections-of-code-as-sudo)和[this](https://stackoverflow.com /問題/ 34281235 /怎麼辦 - 你 - 臨時運行的代碼,如根)。 – ForceBru

+1

''sudo'不會以root用戶的身份運行命令,除非您在'/ etc/sudoers'中爲用戶或root用戶運行一個沒有密碼的命令的規則。你需要格外謹慎。 – direprobs

回答

1

我會高度建議把sudo件到一個單獨的腳本只是作爲文檔建議。這種方法極大地提高了腳本的安全狀態,因爲只有使用提升特權執行的部分才能完成(又稱「最小特權」 - 安全原則)。

我還沒有詳細閱讀該文檔,但我懷疑它還提到限制對腳本sudo部分的寫權限以及它可以讀取的任何文件或資源。