我一直在用C++編寫一個fork一個pty的程序。除了一件事情之外,一切都進展順利:當root運行程序時,pty以root用戶身份登錄。同樣,如果用戶'x'運行程序,則新的pty以'x'用戶身份登錄。 它如何啓動一個請求用戶憑證並登錄的pty?我知道ssh或pty1(ctr + alt + 1)。開始pty要求輸入登錄憑證
編輯:這裏是像我用叉子叉PTY http://pastebin.com/3vLQynz2
我一直在用C++編寫一個fork一個pty的程序。除了一件事情之外,一切都進展順利:當root運行程序時,pty以root用戶身份登錄。同樣,如果用戶'x'運行程序,則新的pty以'x'用戶身份登錄。 它如何啓動一個請求用戶憑證並登錄的pty?我知道ssh或pty1(ctr + alt + 1)。開始pty要求輸入登錄憑證
編輯:這裏是像我用叉子叉PTY http://pastebin.com/3vLQynz2
被允許運行一些爲不同的用戶,你必須有向右改爲UID(setuid的人)。通常,您只能以用戶'root'的身份執行此操作。
因此,如果你想要實現這樣的事情,無論你的程序必須作爲suid root運行,或者你必須使用一些其他可執行的suid root。例如,您可以詢問用戶想要成爲哪個用戶。然後運行/bin/su
以詢問用戶密碼。
順便說一句:所提到的二進制文件/bin/login
只有在您已經以用戶'root'運行時纔會起作用。
地獄男人,「suid」可以解決我所有的問題,我現在就試試! – Carlochess
你怎麼分叉?您可能想要在新進程中運行'login',而不僅僅是當前用戶的默認shell。 – chepner
如果程序在新進程中運行「登錄」命令,因此可以運行「註銷」,用戶可以以root用戶身份運行命令。 :( – Carlochess