include('/home/users/hman/www/include/header.inc') ?>
Manpage of EXECVE
EXECVE
Section: Linux Programmer's Manual
(2)
Updated: 1997³â 11¿ù 3ÀÏ
Index
HOME
À̸§
execve - ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù.
»ç¿ë¹ý
#include <unistd.h>
int execve (const char *filename, char *const argv
[], char *const envp[]);
¼³¸í
execve()´Â ÆÄÀÏ¸í¿¡ ÀÇÇØ ÁöÁ¤µÈ ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù. ÆÄÀϸíÀº ¹ÙÀ̳ʸ®½ÇÇàÀ̳ª ½ºÅ©¸³Æ®À̾î
¾ß¸¸ÇÑ´Ù. ÈÄÀÚÀÇ °æ¿ì, interpreter´Â ½ºÅ©¸³Æ® ÀÚ½ÅÀÌ ¾Æ´Ñ ½ÇÇàÀ» À§ÇÑ À¯È¿ÇÑ °æ·Î¸íÀ̾î¾ß¸¸ ÇÑ´Ù.
argv´Â »õ·Î¿î ÇÁ·Î±×·¥Àº Åë°úÇÏ´Â Àμö ¹®ÀÚ¿ÀÇ ¹è¿ÀÌ´Ù.
envp´Â ÁøºÎÇϰԵµ key=valueÇüÅÂÀÇ ¹®ÀÚ¿ ¹è¿ÀÌ´Ù.
±×°ÍÀº »õ·Î¿î ÇÁ·Î±×·¥À¸·Î ȯ°æÃ³·³ Àü´ÞµÈ´Ù. argv¿Í envp´Â ¸ðµÎ nullÆ÷ÀÎÅÍ¿¡ ÀÇÇØ Á¾·áµÇ
¾î¾ß¸¸ ÇÑ´Ù. Àμö º¤ÅÍ¿Í È¯°æÀº È£ÃâµÈ ÇÁ·Î±×·¥ÀÇ mainÇÔ¼ö¿¡ ÀÇÇØ Á¢±ÙµÉ ¼ö ÀÖ´Ù. ±×¶§ int main(int
argc, char *argv[], char *envp[])¿Í °°ÀÌ Á¤ÀÇ µÈ´Ù.
execve()´Â ¼º°øÀûÀ¸·Î ¹ÝȯÇÏÁö ¾Ê´Â´Ù.±×¸®°í È£ÃâÇÑ ÇÁ·Î¼¼½ºÀÇ ÅØ½ºÆ®, µ¥ÀÌŸ, bss¿Í ½ºÅÃÀº
·ÎµåµÈ ÇÁ·Î±×·¥¿¡ ÀÇÇØ µ¤¾î¾²±â µÈ´Ù. ÇÁ·Î±×·¥Àº È£ÃâÇÑ ÇÁ·Î¼¼½ºÀÇ PID¿Í ¸ðµç exec¿¡ ´ÝÈ÷°Ô
¼³Á¤ÇÏÁö ¾ÊÀº ¿¸° ÆÄÀÏ µð½ºÅ©¸³Å͸¦ »ó¼ÓÇÏ°Ô ÇÑ´Ù. ¸ðµç ½Ã±×³ÎÀº È£Ãâ ÇÁ·Î¼¼½º°¡ ±âº»¼³Á¤À¸·Î Àç¼³Á¤
µÇ´Â °Í¿¡ ÀÇÇØ ¼³Á¤µÈ´Ù.
ÇöÀç ÇÁ·Î±×·¥ÀÌ ÃßÀûµÇ¾îÁö¸é, SIGTRAP´Â execve()ÈÄ¿¡ º¸³»Áö°Ô µÈ´Ù.
set-uid ºñÆ®°¡ ÆÄÀÏ¸í¿¡ ÀÇÇØ ÁöÁ¤µÈ ÇÁ·Î±×·¥ ÆÄÀÏÀ» ¼³Á¤ÇÑ´Ù¸é È£ÃâÇÑ ÇÁ·Î¼¼½ºÀÇ À¯È¿ÇÑ »ç¿ëÀÚ ID´Â
ÇÁ·Î±×·¥ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ°¡ ¹Ù²ï´Ù. ºñ½ÁÇϰÔ, ÇÁ·Î±×·¥ ÆÄÀÏÀÇ set-uidºñÆ®°¡ ¼³Á¤µÉ¶§, È£Ãâ ÇÁ·Î¼¼½ºÀÇ À¯È¿ÇÑ
±×·ì ID´Â ÇÁ·Î±×·¥ ÆÄÀÏÀÇ ±×·ìÀ¸·Î ¼³Á¤µÈ´Ù.
¹Ýȯ°ª
¼º°ø½Ã, execve()´Â ¹ÝȯµÇÁö ¾Ê°í, ¿¡·¯½Ã -1ÀÌ ¹ÝȯµÇ°í,
errno
´Â ÀûÀýÈ÷ ¼³Á¤µÈ´Ù.
¿¡·¯
- EACCES
-
ÆÄÀÏÀ̳ª ½ºÅ©¸³Æ® ÇØ¼®±â´Â Á¤±ÔÆÄÀÏÀÌ ¾Æ´Ï´Ù.
- EACCES
-
½ÇÇà ±ÇÇÑÀº ÆÄÀÌÀ̳ª ½ºÅ©¸³Æ® ÇØ¼®±â¿¡¼ °ÅºÎµÆ´Ù.
- EACCES
-
ÆÄÀÏ ½Ã½ºÅÛÀº
noexec
¿¡ ¸¶¿îÆ®µÆ´Ù.
- EPERM
-
ÆÄÀϽýºÅÛÀº »ç¿ëÀÚ°¡ ½´ÆÛÀ¯Àú°¡ ¾Æ´Ñ
nosuid
¿¡ ¸¶¿îÆ®µÆ°Å³ª, ÆÄÀÏÀÌ SUID³ª SGIDºñÆ® ¼³Á¤À» °®´Â´Ù.
- EPERM
-
ÇÁ·Î¼¼½º°¡ ÃßÀûµÈ´Ù.
- E2BIG
-
Àμö¸®½ºÆ®°¡ ³Ê¹« ±æ´Ù.
- ENOEXEC
-
½ÇÇàÀÌ À߸øµÈ ¾ÆÅ°ÅØÃ³Æ÷¸ËÀ» ÀÎÁöÇϰųª ¸î°³ÀÇ ½ÇÇàµÉ ¼ö ¾øÀ½À» ÀǹÌÇÏ´Â ´Ù¸¥ Æ÷¸Ë¿¡·¯¸¦ °®´Â´Ù.
- EFAULT
-
ÆÄÀ̸í
ÀÌ ´ç½ÅÀÌ Á¢±Ù °¡´ÉÇÑ ÁÖ¼Ò°ø°£ ¹ÛÀ» °¡¸®Å²´Ù.
- ENAMETOOLONG
-
ÆÄÀϸí
ÀÌ ³Ê¹«±æ´Ù.
- ENOENT
-
ÆÄÀϸí
À̳ª ½ºÅ©¸³Æ®, ELFÇØ¼®±â°¡ ¾ø´Ù.
- ENOMEM
-
Ä¿³Î ¸Þ¸ð¸®°¡ Àû´Ù.
- ENOTDIR
-
A component of the path prefix of
ÆÄÀϸí
°æ·ÎÀÇ ±¸¼ºÀÌ ½ºÅ©¸³Æ®,ELFÇØ¼®±â°¡ µð·ºÅ丮°¡ ¾Æ´Ï´Ù.
- EACCES
-
ã´Â ±ÇÇÑÀÌ
ÆÄÀϸí
À̳ª ½ºÅ©¸³Æ® ÇØ¼®±âÀÇ À̸§ÀÇ °æ·Î¿¡ ±¸¼ºÀ» °ÅºÎÇÑ´Ù.
- ELOOP
-
³Ê¹« ¸¹Àº ½Éº¼¸¯ ¸µÅ©°¡ ÀÖ´Ù.
- ETXTBUSY
-
½ÇÇàÀÌ ÇϳªÀÌ»óÀÇ ÇÁ·Î¼¼½º¿¡ ÀÇÇÑ ±â·ÏÀ» À§ÇØ ¿·È´Ù.
- EIO
-
ÀÔÃâ·Â ¿¡·¯.
- ENFILE
-
ÆÄÀÏÀÇ ÃѰ¹¼ö Á¦ÇÑ¿¡ ´Ù´Ù¶ú´Ù.
- EMFILE
-
ÇÁ·Î¼¼½º°¡ ÆÄÀÏ¿±â ÃÖ´ë°ª¿¡ °É·È´Ù.
- EISDIR
-
ELFÇØ¼®±â°¡ µð·ºÅ丮ÀÌ´Ù.
- ELIBBAD
-
ELFÇØ¼®±â°¡ Æ÷¸ËÀ» ÀνÄÇÒ ¼ö ¾ø´Ù.
ȣȯ
SVr4, SVID, X/OPEN, BSD 4.3. POSIXÀº #!½ÇÇàÀ» ¹®¼È ÇÏÁö¾Ê¾ÒÁö¸¸, ±× ¿Ü¿¡´Â ȣȯ¼ºÀÌ ÀÖ´Ù.
SVr4´Â Ãß°¡ÀûÀÎ ¿¡·¯»óÅ EAGAIN, EINTR, ELIBACC, ENOLINK, EMULTIHOP¸¦ ¹®¼ÈÇß´Ù; POSIXÀº
ETXTBSY, EPERM, EFAULT, ELOOP, EIO, ENFILE, EMFILE, EINVAL,
EISDIR ,ELIBBAD ¿¡·¯»óŸ¦ ¹®¼ÈÇÏÁö ¾Ê¾Ò´Ù.
ÁÖÀÇ
SUID¿Í SGID ÇÁ·Î¼¼½ºµéÀº SUID ³ª SGID¸¦ ptrace()d¾Ê°Ô ÇÒ ¼ö ÀÖ´Ù.
127¹®ÀÚ ÃÖ´ë±æÀÌ´Â #! ½ÇÇà ½© ½ºÅ©¸³Æ®¿¡¼ ùÇàÀ» Çã°¡ÇÑ´Ù.
¸®´ª½º´Â ½ºÅ©¸³Æ®ÀÇ SUID¿Í SGIDºñÆ®¸¦ ¹«½ÃÇÑ´Ù.
°ü·Ã Ç׸ñ
chmod(2),
fork(2),
execl(3),
environ(5),
ld.so(8)
¿ªÀÚ
ASPLINUX<man@asp-linux.co.kr>, 2000³â 7¿ù 29ÀÏ
Index
- À̸§
-
- »ç¿ë¹ý
-
- ¼³¸í
-
- ¹Ýȯ°ª
-
- ¿¡·¯
-
- ȣȯ
-
- ÁÖÀÇ
-
- °ü·Ã Ç׸ñ
-
- ¿ªÀÚ
-
include('/home/users/hman/www/include/tailer.inc') ?>