區別:
1.使用systemctl命令執行時,即使是以root用戶身份執行,也會關注服務的用戶組權限。這是因為systemctl在執行服務管理操作時,會檢查服務的配置文件中設置的用戶和用戶組權限,并確保當前用戶具有足夠的權限來管理服務。
2.當你以root用戶身份使用os.system執行命令時,它可能會繞過服務的用戶組權限的限制。這是因為os.system函數直接調用底層操作系統的命令解釋器來執行命令,而不會像systemctl那樣驗證服務的用戶組權限。
總結:
所以,以root用戶身份執行systemctl和使用os.system執行命令可能會導致不同的結果,因為systemctl會更加關注服務的用戶組權限,而os.system可能會繞過這些權限的限制。為了確保一致的行為并遵循正確的權限控制,建議在需要管理系統服務時使用systemctl命令。這樣可以確保服務以預期的用戶組權限運行,并且操作符合系統的安全性要求
引發的問題:
1.ck監控程序通過os.system包啟動ck服務導致日志文件權限被修改為root權限
解決方案:
使用python的 subprocess 包來執行shell命令
subprocess.run(["su", "-", username, "-c", command])

浙公網安備 33010602011771號