我编写了一个c ++脚本,可以在Solaris环境中禁用或启用用户。这是通过调用passwd来完成的。
sprintf(cmd, "/usr/bin/passwd -l %s", argv[1]);
但是,脚本不是由root执行,而是由其他用户执行。 虽然脚本执行passwd更改没有完成。似乎这是passwd用户权限的问题。
然而似乎只有root才能修改passwd。这是真的?可以做别的事吗?在某种意义上,passwd可以被其他用户修改吗?
答案 0 :(得分:1)
您需要root权限才能执行此操作。
但是,您可以配置sudo
以允许以指定用户的root身份执行二进制文件。
另一种解决方案是setuid二进制文件。但是,这样做时必须小心。
答案 1 :(得分:0)
该流程应具有CAP_SETUID
功能,并且用户ID应设置为0
。