내가 지금까지 읽은 모든 문헌은 setuid
은 시스템 호출임을 의미하는 방식으로 seteuid
에 대해 이야기합니다. 섹션 2 man
페이지는 함수가 시스템 호출인지 아닌지를 알려주지 않으므로 seteuid(2)
은 도움이되지 않습니다. 그리고 그것이 시스템 호출이 아니라면, 커널이 기능을 제공하지 않는다는 것을 의미하고, "효과적인 UID를 어떻게 설정할 수 있습니까?"Linux에서 시스템 호출을 설정합니까?
3
A
답변
6
섹션 2 맨 페이지는 모두 시스템 호출입니다. 이것이 섹션 2의 내용입니다. 섹션 3 맨 페이지는 모든 라이브러리 호출이며, 섹션 3의 내용입니다. 섹션의 목록 (man
자체에 대한 매뉴얼 페이지) 사람 (1)를 참조하십시오 그리고 그들은 무엇 :
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에 구현됩니다. 구현을 위해 here을 참조하십시오.