2016-11-22 13 views
3

私が今までに読んだ文献のすべてはsetuidについて語っています。それはシステムコールを意味する意味でseteuidです。セクション2 manページでは、関数がシステムコールかどうかは決して言わないので、seteuid(2)は役に立ちません。そして、それがシステムコールでない場合、つまり、カーネルによって機能が提供されていない場合、「有効なUIDの設定」はどのように達成できますか?Linuxでシステムコールを設定していますか?

答えて

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に実装されています。実装については​​を参照

関連する問題