迄今为止我所读到的所有文献都在setuid
中,以暗示它是系统调用的方式谈论seteuid
。第2节man
页面从不会说功能是否是系统调用,所以seteuid(2)
没有帮助。如果它不是系统调用,意味着内核不提供该功能,那么如何实现“设置有效的UID”?在Linux上seteuid系统调用?
3
A
回答
6
第2节手册页是全部系统调用 - 这是第2节的用途。第3节手册页都是库调用,因为这是第3节的目的。对于部分名单见人(1)(手册页man
本身)和他们是什么:
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g.
man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
0
您可以轻松地或验证,如果它是一个系统调用,如果它是在libc中编写一个定义小程序和运行strace就可以了。例如,
int main() {
seteuid();
}
gcc -o main main.c
-bash-4.2$ strace ./main 2>&1 | grep set
setresuid(-1, 1, -1) = -1 EPERM (Operation not permitted)
所以在这种情况下,seteuid是在libc中实现的。实施
相关问题
- 1. Linux系统调用getifaddr C++
- 2. 开放系统调用 - Linux
- 3. linux系统调用getpeername C++
- 4. 在Linux机器上调用系统调用
- 5. x86 linux系统调用调用约定?
- 6. 在Linux中创建系统调用
- 7. 在Linux的NFS挂载系统调用
- 8. 在Linux系统()调用的问题
- 9. 消息队列。 msgsend msgrcv。系统V在C系统调用(Linux)
- 10. 在64位系统上添加新的系统调用到Linux Kernel 3.13
- 11. linux系统中使用的for_each_zone在新系统调用中调用
- 12. 系统调用在Linux上如何实际发生?
- 13. 通过系统调用在Linux上监控内存
- 14. 本地系统调用在Linux上的Ruby
- 15. 如何禁止系统调用GNU/Linux
- 16. Linux glibc系统调用包装位置
- 17. 冗余的Linux内核系统调用
- 18. Android Linux系统调用列表
- 19. Linux:通过ptrace()执行系统调用()
- 20. Linux系统调用的Java断点
- 21. 编写一个系统调用linux
- 22. Linux系统调用返回值
- 23. x86_64汇编Linux系统调用混淆
- 24. 我怎么拦截linux系统调用?
- 25. Linux系统调用流程序列号
- 26. Armv8的Linux系统调用约定
- 27. 如何在Python中调用linux系统调用PROCESS_VM_READV?
- 28. 如何在golang中调用Linux/UNIX的系统调用
- 29. 当我寻找添加系统调用时,我添加系统调用linux-2.6.31
- 30. 在Linux系统上安装Opencv