我正在創建一個應該在Linux上運行的圖形安裝程序。安裝應該包括將文件複製到/usr
中的某些地方。目前安裝程序是用Python編寫的。以編程方式在Linux上升級特權
當我需要複製文件時,如何升級安裝程序的權限?我看着PolicyKit但
- 一)似乎沒有成爲一個通用的「安裝文件」動作id爲PolicyKit的
- b)該行動的ID,我可以使用,我不認爲他們在發行版中是標準的
我也看了一下PAM,我有使用libpam的代碼,但我似乎無法用它做任何事情。驗證用戶身份(通過提供用戶名和密碼)後,我沒有對/usr
的寫入訪問權限。我嘗試更改我的用戶os.setuid(0)
認證後,但我從操作系統得到一個錯誤。
此外,奇怪的是,我提供給pam_start
的服務似乎並不重要。只要用戶名和密碼正確,我就可以通過我想要的任何東西。我看到我有/etc/pam.d/sudo
。下面的代碼被簡化了,密碼被正確地存儲在一個pam_conversation
對象中,我確實傳遞了一個句柄對象。
pam_start("my_user", "my_pass", "sudo_garbage_12345");
作品一樣好
pam_start("my_user", "my_pass", "sudo");
也就是說,他們都成功。
作爲最後的手段,我可以執行gksudo
或kdesudo
但我不希望被綁定到這些程序。要求用戶用sudo
調用我的安裝程序是(非常)最後的手段。
所以,讓我直接得到這個...你想能夠給任何用戶無限制(根)訪問權限? – davethegr8 2009-12-17 21:39:22
我想通過允許用戶輸入密碼來模擬sudo。如果用戶無法通過使用sudo獲得權限,則他們也不能使用我的安裝程序執行此操作。我只是想給他們一個noob友好的方式來使用sudo。 – jonr 2009-12-17 21:59:43