2015-09-04 34 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