是否可以使用 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
(更改您的用户名)。