2015-09-04 56 views
1

我一直在用C++編寫一個fork一個pty的程序。除了一件事情之外,一切都進展順利:當root運行程序時,pty以root用戶身份登錄。同樣,如果用戶'x'運行程序,則新的pty以'x'用戶身份登錄。 它如何啓動一個請求用戶憑證並登錄的pty?我知道ssh或pty1(ctr + alt + 1)。開始pty要求輸入登錄憑證

編輯:這裏是像我用叉子叉PTY http://pastebin.com/3vLQynz2

+0

你怎麼分叉?您可能想要在新進程中運行'login',而不僅僅是當前用戶的默認shell。 – chepner

+0

如果程序在新進程中運行「登錄」命令,因此可以運行「註銷」,用戶可以以root用戶身份運行命令。 :( – Carlochess

回答

1

被允許運行一些爲不同的用戶,你必須有向右改爲UID(setuid的人)。通常,您只能以用戶'root'的身份執行此操作。

因此,如果你想要實現這樣的事情,無論你的程序必須作爲suid root運行,或者你必須使用一些其他可執行的suid root。例如,您可以詢問用戶想要成爲哪個用戶。然後運行/bin/su以詢問用戶密碼。

順便說一句:所提到的二進制文件/bin/login只有在您已經以用戶'root'運行時纔會起作用。

+0

地獄男人,「suid」可以解決我所有的問題,我現在就試試! – Carlochess