我一直在研究用c ++编写的程序。一切顺利,除了一件事:当root运行程序时,pty以root用户身份登录。以同样的方式,如果用户' x'运行该程序,新的pty登录为' x'用户。 如何启动pty询问用户凭证并登录?我知道ssh或pty1(ctr + alt + 1)确实如此。
编辑:这就像我叉子一样 http://pastebin.com/3vLQynz2答案 0 :(得分:1)
要允许以不同的用户身份运行某些内容,您必须有权更改为uid(man setuid)。通常,您只能以用户“root”身份执行此操作。
因此,如果你想实现这样的东西要么你的程序必须以suid root运行,要么你必须使用suid root的其他可执行程序。例如,您可以询问用户想要的用户。然后运行/bin/su
以询问用户他的密码。
顺便说一句:提到的二进制/bin/login
只有在您已经以“root”用户身份运行时才会起作用。