我的C/C++应用程序如何确定root用户是否正在执行命令?
发布时间:2020-05-23 05:54:24 所属栏目:Linux 来源:互联网
导读:我正在编写一个需要root用户权限才能执行的应用程序.如果由非root用户执行,它将以perror消息退出并终止,例如: pthread_getschedparam: Operation not permitted 我想使应用程序更加用户友好.作为其早期初始化的一部分,我希望它检查它是否由root执行.如果不是
|
我正在编写一个需要root用户权限才能执行的应用程序.如果由非root用户执行,它将以perror消息退出并终止,例如:
我想使应用程序更加用户友好.作为其早期初始化的一部分,我希望它检查它是否由root执行.如果不是root,它将显示一条消息,指示它只能由root运行,然后终止. 在此先感谢您的帮助. 最佳答案 getuid或geteuid将是明显的选择.getuid检查实际用户的凭据. geteuid中添加的e代表有效.它会检查有效凭据. 例如,如果您使用sudo以root用户身份运行程序(超级用户),您的实际凭据仍然是您自己的帐户,但您的有效凭据是root帐户(或轮组的成员等)的凭据. 例如,考虑这样的代码:
如果你正常运行,getuid()和geteuid()将返回相同的值,所以它会说“作为self运行”.如果你改为sudo ./a.out,getuid()仍将返回你的用户ID,但geteuid()将返回root或wheel的凭据,所以它会说“像其他人一样运行”. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – SVN 1.7.1问题
- 在Linux上寻找odbc.ini和odbcinst.ini文件的良好文档
- linux – “file”和“./file”路径之间有什么区别吗?
- linux – 如何获取/etc/security/limits.conf更改反映在无头
- linux – LVM镜像VS RAID1
- 详解Centos7 修改mysql指定用户的密码
- linux – 处理SSH主机验证错误的最顺畅的工作流程?
- DenyHosts安装提示错误:Unable to locate package denyhos
- linux – 如何使用历史记录实用程序复制以前输入的命令而不
- linux – 使用Express提供网页时使用`path.join`的节点JS T
