C 中的任何系统调用都可以在非 root 用户模式下更改 HP-UX 中文件的权限吗?
C 中的任何系统调用都可以在非 root 用户模式下更改 HP-UX 中文件的权限吗? 我使用了 Chmod 系统调用,它在 root 用户模式下对我有效,但在非 root 用户模式下无效。我觉得 setuid 系统调用会在这里帮助我,但我不知道如何使用它?那么对我的问题或如何使用 setuid 的任何新建议。
Any system call in C to change the permission of a file in HP-UX in a non-root user mode?.
I used Chmod system call, it worked for me in the root user mode but not in the non-root user mode. I feel setuid system call will help me here, but i dnt know how to use it?. So any new suggestions to my problem or how to make use of setuid .
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
chmod() 是正确的系统调用,但如果您没有更改文件权限的访问权限,那么您就不走运了。
正如您当然可以想象的那样,更改您无权更改权限的文件的权限会造成巨大的安全漏洞。
关于 setuid(),它往往仅限于超级用户或设置了 setuid 位的程序。同样,出于明显的安全原因,在一般情况下,随机用户不能将自己更改为其他随机用户。
因此,如果您想让 chmod() 在没有任何超级用户权限的情况下工作,解决方案是进程 UID 必须与您尝试更改权限的文件的所有者相同。
chmod() is the correct syscall, but if you don't have access rights to change the permissions of the file then you're out of luck.
As you certainly can imagine, changing permissions of files you don't have the right to change permissions of would create a gaping security hole.
Wrt setuid(), that tends to be restricted to superusers, or programs with the setuid bit set. Again, for obvious security reasons, a random user cannot change himself to some other random user in the general case.
So if you want to make chmod() work without any kind of superuser privileges, the solution is that the process UID must be the same as the owner of the file you're trying to change permissions on.