在Unix中以编程方式从用户名获取UID和GID?
我正在尝试使用 setuid() 和 setgid() 来设置程序各自的 id,以从 root 删除权限,但要使用它们,我需要知道我想要更改为的用户的 uid 和 gid。
有系统调用可以做到这一点吗? 我不想对其进行硬编码或从 /etc/passwd 进行解析。
另外,我想以编程方式执行此操作,而不是使用:
id -u USERNAME
任何帮助将不胜感激
I'm trying to use setuid() and setgid() to set the respective id's of a program to drop privileges down from root, but to use them I need to know the uid and gid of the user I want to change to.
Is there a system call to do this? I don't want to hardcode it or parse from /etc/passwd .
Also I'd like to do this programmatically rather than using:
id -u USERNAME
Any help would be greatly appreciated
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
看看 getpwnam() 和 getgrnam() 函数。
Have a look at the getpwnam() and getgrnam() functions.
您可以使用以下代码片段:
参考:getpwnam() getgrnam()
You can use the following code snippets:
Ref: getpwnam() getgrnam()
您想要使用 getpw* 系列系统调用,通常在 pwd 中。 h。 它本质上是 /etc/passwd 中信息的 C 级接口。
You want to use the getpw* family of system calls, generally in pwd.h. It's essentially a C-level interface to the information in /etc/passwd.
查看 getpwnam 和 struct passwd。
Look at getpwnam and struct passwd.