【问题标题】:Linux; Change UID to root if you are not rootLinux;如果您不是 root,请将 UID 更改为 root
【发布时间】:2013-04-13 12:33:56
【问题描述】:

我写了一个简单的程序

当你运行这个程序时,如果你不是root用户,输入root密码,然后把uid改成root

if (getuid())
{
    char *pass = getpass("");
    //how to change uid to root ?
}

当你有root密码时如何将uid更改为root?

【问题讨论】:

  • 顺便提一下:不要在程序中存储未加密的root密码,使用散列函数。
  • if (getuid)if (getuid()) 有很大不同。前者永远是真的......
  • @TNW:如果没有未经哈希处理的版本就无法进行身份验证,那么这并不是很有帮助。
  • 我已将 if (getuid) 更改为 if (getuid())
  • 在调用程序时可以简单地使用 sudo 吗?如果没有,也许您应该查找要在哪个平台上实现的 sudo 的源代码,并将其用作实现权限提升的指南。

标签: c linux root uid


【解决方案1】:

没有办法从非 root 用户更改为 root。这就是重点。 loginsshdsu 之类的程序最初以 root 身份启动,要么是因为它们的祖先,要么是在可执行文件中有 suid 位,并仔细限制了你可以直到您使用密码或其他方法进行身份验证,然后更改为适当的 uid(root 或您登录的用户)并exec'ing 另一个程序(通常是 shell)。

【讨论】:

  • 能够成为 root 的程序确实是 setuid root(例如以 root 身份启动),但更重要的是,它必须非常仔细地设计以避免在你的系统。所以不要这样做,除非你花很多时间来理解所有的技巧和含义......阅读advancedlinuxprogramming.com
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 2013-09-07
相关资源
最近更新 更多