我想知道用户是否是 root,而不介意该用户是否使用类似 fakeroot 的工具。
我尝试了函数 getuid()
、 geteuid()
和 getlogin()
,但是当我启动 fakeroot
命令时,每个函数都会发送我自己的帐户信息而不是 root
。
对于此代码:
printf("%d %d %s\n", getuid(), geteuid(), getlogin());
这是我得到的:
% fakeroot ./busybox rm
1000 1000 julien
当我想得到类似的东西时:
0 0 root
(登录就足够了)
最佳答案
nneonneo 的原因是正确的,但这是解决方案: Fakeroot-ng 。它使用 ptrace
和系统调用拦截,而不是 LD_PRELOAD
和库调用拦截,这使得它与静态链接兼容,更加健壮,甚至能够处理来自 libc 内部的调用(否则将无法 Hook )。
关于c - 如何知道用户是root还是fakeroot?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18675686/