我在C中編寫了一個在瀏覽器中運行的cgi-bin應用程序,允許用戶打開交互式shell並在Linux機器上查看編輯文件。它作爲標準apache「www-data」用戶運行。我剛剛添加了一個登錄屏幕,用戶輸入他們的名稱和密碼(在表單中),但我無法使用getspnam對用戶進行身份驗證,因爲此功能僅在以root身份運行時纔有效。如何在不以root身份運行時檢查linux中的登錄憑據?
如果沒有以root用戶身份運行,必須檢查用戶的登錄憑據有哪些選項?
PS:在我的交互式shell我可以鍵入「蘇根」,然後輸入我的密碼,它並提升到根細。因此很明顯可以交互進行。
應該指出,這隻適用於因爲'su'是suid root。如果不是,那麼無論您嘗試切換到哪個用戶,它都會有相同的問題。 – 2009-12-22 19:28:12
我不知道我明白你在說什麼@Evan Teran。他正在做一個'su root'來切換到root用戶。如果他做了一個'su randomUser',那麼他就不能讀取root的文件作爲'randomUser',除非'root'給了'randomUser'許可。這不是一個給定的?或者我誤解了你? – mrduclaw 2009-12-22 19:30:17
使用SetUID解決了我的問題。因爲我是Linux新手,所以之前我不知道這個功能。謝謝! – KPexEA 2009-12-22 19:48:09