我正在编写一个需要root用户权限才能执行的应用程序.如果由非root用户执行,它将以perror消息退出并终止,例如:
pthread_getschedparam: Operation not permitted
我想使应用程序更加用户友好.作为其早期初始化的一部分,我希望它检查它是否由root执行.如果不是root,它将显示一条消息,指示它只能由root运行,然后终止.
在此先感谢您的帮助.
最佳答案
getuid或geteuid将是明显的选择.
getuid检查实际用户的凭据.
geteuid中添加的e代表有效.它会检查有效凭据.
例如,如果您使用sudo以root用户身份运行程序(超级用户),您的实际凭据仍然是您自己的帐户,但您的有效凭据是root帐户(或轮组的成员等)的凭据.
例如,考虑这样的代码:
#include
如果你正常运行,getuid()和geteuid()将返回相同的值,所以它会说“作为self运行”.如果你改为sudo ./a.out,getuid()仍将返回你的用户ID,但geteuid()将返回root或wheel的凭据,所以它会说“像其他人一样运行”.
原文地址:https://www.jb51.cc/linux/440824.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。