使用 setuid 更改 root 的密码

使用 setuid 更改 root 的密码

是否可以使用 setuid 更改 root 的密码?

我尝试编写一个简单的程序,该程序调用system("passwd root")root 拥有的并设置其 setuid 位,但它不起作用。输出是:You may not view or modify password information for root.

答案1

在您的程序中,您可能忽略了将真实有效的 uid 设置为相同的值。 Gids 还应该与 root 的 gid 匹配。像这样的东西:

setuid(geteuid());
setgid(getegid());

参见示例sue(一个简单的 setuid/setgid 包装器)。

答案2

托马斯·迪基是绝对正确的。但是,不要这样做。代替使用sudo

创造/etc/sudoers.d/change_root_pass

YOURUSERNAME ALL = (ALL) passwd root

(更改您的用户名)。

相关内容