我正在写一个访问linux原始套接字的Qt应用程序,所以我需要root权限来运行程序。 所以我这样做了:
在我的程序中,我在开始时是这样的:
if (getuID() != 0) { fprintf(stderr,"You must be root to run this program. UID = %in",getuID()); exit(-1); }
然后,我做了“chmod 6777 myProgram”作为根。
但是,当我试图以普通用户身份运行它时,它说:“您必须是root用户才能运行此程序。UID = 1002”,其中1002是我当前正在使用的用户ID。
windows窗体Webbrowser控件 – 支持JavaScript?
修复“断开”的驱动器映射
memcpy – 从不同大小的整数转换为指针
将一个X509 PEM文件加载到windows CryptoAPI中
如何测量C#中的系统空闲时间,不包括看电影等?
任何一个人可以发表一条线索吗?
谢谢
在linux上编译一个共享库来定位所有发行版
如何在Visual C ++中以编程方式设置断点?
虚拟摄像头input为字节stream
什么是最安全的方式来检索系统驱动器
linux进程虚拟地址空间的地址范围
你正在混合getuID()和geteuID() 。 从getuID()的手册页:
getuID()函数返回调用进程的真实用户标识。 geteuID()函数返回调用进程的有效用户标识。
真正的用户ID是调用程序的用户的ID。 由于有效用户ID在执行set-user-ID模式进程期间为进程提供额外权限,因此使用getuID()来确定调用进程的真实用户ID。
linux的手册页更加简洁(前一个来自Mac OS X):
当正常程序执行时,进程的有效和真实用户ID被设置为执行该文件的用户的ID。 当执行一组ID程序时,真实用户ID被设置给主叫用户,有效用户ID对应于正在执行的文件上的设置ID位。
对于setuID程序,文件需要由您想要设置的用户标识拥有,这在大多数情况下是root用户。
总结以上是内存溢出为你收集整理的setuid和getuid似乎不工作全部内容,希望文章能够帮你解决setuid和getuid似乎不工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)