c++ - 开始 pty 询问登录凭据

标签 c++ bash ubuntu fork pty

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

编辑:这就像我 fork the pty http://pastebin.com/3vLQynz2

最佳答案

要被允许以不同的用户身份运行某些东西,您必须有权更改为 uid (man setuid)。通常您只能以用户“root”的身份执行此操作。

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

顺便说一句:提到的二进制文件 /bin/login 仅在您已经以用户“root”身份运行时才有效。

关于c++ - 开始 pty 询问登录凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32402480/

相关文章:

linux - 更准确地显示shell命令的执行时间

bash - 使用Powershell从CSV中剥离奇数格式的IP

php - 模块 pcntl 已在第 0 行的未知中加载 - Apache x Cli

node.js - Nodejs Sails 命令行不起作用

ubuntu - 如何在启用 ares 的情况下安装 curl

c++ - 多级继承 C++

c++ - GLFW 的 VC++ LNK 错误

c++ - auto、decltype(auto) 和尾随返回类型

c++ - Taglib:性能和崩溃问题

linux - 用于将目录结构从源目录复制到目标目录的 Bash 脚本