我写一个简单的程序Linux;更改UID为root,如果你不是根
当你运行这个程序,如果你不是root
用户,输入root
密码,然后更改uid根
if (getuid())
{
char *pass = getpass("");
//how to change uid to root ?
}
如何当你得到root
密码时,将uid更改为root?
我写一个简单的程序Linux;更改UID为root,如果你不是根
当你运行这个程序,如果你不是root
用户,输入root
密码,然后更改uid根
if (getuid())
{
char *pass = getpass("");
//how to change uid to root ?
}
如何当你得到root
密码时,将uid更改为root?
无法从非root用户更改为root用户。这就是整个问题。像login
,sshd
或su
这样的程序最初以作为根开始工作,或者是因为它们的祖先或在可执行文件上有suid位,并且仔细地限制了您可以执行的操作,直到您使用密码或其他方法进行身份验证,然后切换到适当的uid(root或用户登录的用户)和另一个程序(通常是shell)。
能够成为root的程序确实是* setuid * root(例如以root身份启动),但更重要的是它必须经过非常仔细的设计,以避免在系统中打开巨大的安全漏洞。所以不要这样做,除非你花费大量的时间来了解所有的技巧和影响....阅读http://advancedlinuxprogramming.com/ – 2013-04-20 08:21:09
只需提及:不要在您的程序中存储未加密的root密码,请使用散列函数。 – TNW 2013-04-20 03:10:13
'if(getuid)'与'if(getuid())'有很大不同。前者永远是真的...... – 2013-04-20 03:15:31
@TNW:如果没有未经过哈希处理的版本就无法进行身份验证,这并没有什么帮助。 – Ryan 2013-04-20 03:22:54