C ++ Passwd,Root权限

时间:2013-06-05 09:45:47

标签: c++ permissions solaris passwd

我编写了一个c ++脚本,可以在Solaris环境中禁用或启用用户。这是通过调用passwd来完成的。

sprintf(cmd, "/usr/bin/passwd -l %s", argv[1]);

但是,脚本不是由root执行,而是由其他用户执行。 虽然脚本执行passwd更改没有完成。似乎这是passwd用户权限的问题。

然而似乎只有root才能修改passwd。这是真的?可以做别的事吗?在某种意义上,passwd可以被其他用户修改吗?

2 个答案:

答案 0 :(得分:1)

您需要root权限才能执行此操作。 但是,您可以配置sudo以允许以指定用户的root身份执行二进制文件。

另一种解决方案是setuid二进制文件。但是,这样做时必须小心。

答案 1 :(得分:0)

该流程应具有CAP_SETUID功能,并且用户ID应设置为0