簡體   English   中英

如何在不以root身份運行時檢查linux中的登錄憑據?

[英]How to check login credentials in linux when not running as root?

我在C中編寫了一個cgi-bin應用程序,它在瀏覽器中運行,允許用戶打開交互式shell並在Linux機器上查看和編輯文件。 它作為標准的apache“www-data”用戶運行。 我剛剛添加了一個登錄屏幕,用戶輸入了他們的名稱和密碼(在表單中),但是我無法使用getspnam對用戶進行身份驗證,因為此功能僅在以root身份運行時才有效。

在不以root用戶身份運行時,我有哪些選項可以檢查用戶的登錄憑據?

PS:在我的交互式shell中,我可以輸入“su root”,然后鍵入我的密碼,它確實提升到root,所以顯然可以交互式完成。

我想你想看一下Pluggable認證模塊 AFAIK,PAM為你處理所有雜亂的東西,你只需要做一些函數調用來驗證用戶在Linux主機上驗證用戶的任何后端(無論是影子密碼,nis,ldap,等等)

這是一個關於將C代碼與它們集成的簡短指南

關於你的PS:嗯,當你做su root你會切換到root用戶。 所以是的,當然,root可以讀取影子文件,你們都准備好了。

關於你的問題:你不能暫時將你的apache進程升級到root(通過調用setuid或類似的)來執行身份驗證嗎?

祝好運!

正如所建議的那樣,我認為PAM是實現這一目標的現代方式。 但是如果你想上學,你需要創建一個setuid-root程序(而不是腳本)來進行身份驗證。

有很多關於setuid-root程序的問題,這就是為什么PAM可能更好。

這里有一些關於安全編寫setuid-root程序的好文章的鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM