2

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

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

但是,该脚本不是由 root 执行的,而是由另一个用户执行的。脚本执行时,passwd 更改未完成。似乎这是 passwd 上的用户权限问题。

但是似乎只有root才能修改passwd。这是真的?可以做点别的吗?从某种意义上说 passwd 可以被其他用户修改?

4

2 回答 2

1

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

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

于 2013-06-05T09:59:54.030 回答
0

该进程应具有CAP_SETUID能力,并且用户 id 将设置为0.

于 2013-06-05T09:58:17.377 回答