开始 pty 询问登录凭据

Start pty asking for login credentials

我一直在用 c++ 编写一个程序,该程序 fork 一个 pty。一切顺利,除了一件事:当 root 运行 程序时,pty 以 root 用户身份登录。同样,如果用户 'x' 运行 使用该程序,则新的 pty 将以 'x' 用户身份登录。 它如何启动一个 pty 请求用户凭据并登录?我知道 ssh 或 pty1(ctr + alt + 1) 可以。

编辑:这就像我分叉了 pty http://pastebin.com/3vLQynz2

要允许 运行 作为不同的用户,您必须有权更改为 uid (man setuid)。通常你只能以用户 'root'.

的身份执行此操作

因此,如果您想实现这样的功能,要么您的程序必须 运行 作为 suid root,要么您必须使用其他可执行文件,即 suid root。例如,您可以询问用户它想成为哪个用户。然后 运行 /bin/su 向用户询问他的密码。

顺便说一句:提到的二进制文件 /bin/login 仅当您已经 运行 作为用户 'root' 时才有效。