setuid(2)
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=seteuid">seteuid</a>(2)

1장. seteuid(2)

차례
1.1절. »ç¿ë¹ý
1.2절. ¼³¸í
1.3절. ¹Ýȯ°ª
1.4절. ¿¡·¯
1.5절. ¿¹Á¦

À¯È¿ »ç¿ëÀÚ ID¸¦ ¼³Á¤ÇÑ´Ù.


1.1절. »ç¿ë¹ý

#include <unistd.h>

int seteuid(uid_t euid);
		


1.2절. ¼³¸í

À¯È¿ »ç¿ëÀÚ ID ¼³Á¤À» Çϱâ À§Çؼ­ »ç¿ëµÈ´Ù. À¯È¿ »ç¿ëÀÚ ID ´Â ÆÄÀÏ »ý¼º°ú Á¢±Ùµî¿¡ ¿µÇâÀ» ¹ÌÄ¡°Ô µÈ´Ù.


1.3절. ¹Ýȯ°ª

¼º°øÇÒ°æ¿ì 0À» ½ÇÆÐÇßÀ»°æ¿ì¿¡´Â -1À» ¹ÝȯÇϸç, Àû´çÇÑ errno °ªÀ» ¼³Á¤ÇÑ´Ù. º¸Åë ½´ÆÛÀ¯Àú±ÇÇÑÀÏ °æ¿ì »ç¿ë°¡´ÉÇÑ ÇÔ¼öÀÌ´Ù.


1.4절. ¿¡·¯

´Ù¾çÇÑ ¿øÀο¡ ÀÇÇØ¼­ ¿¡·¯°¡ ¹ß»ýÇÒ¼ö ÀÖÀ¸¸ç ¾Æ·¡¿Í °°Àº ¿¡·¯ ¸Þ½ÃÁöµéÀÌ ÀÖ´Ù.

EPERM

ÇöÀç ÇÁ·Î¼¼½ºÀÇ ±ÇÇÑÀÌ ½´ÆÛÀ¯Àú±ÇÇÑÀÌ ¾Æ´Ò¶§


1.5절. ¿¹Á¦

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
    int fd;
    int state;

    // 500 Àº yundream À̶ó´Â °èÁ¤ÀÇ UID ÀÌ´Ù.
    // yundream À¯ÀúID·Î effective UID ¸¦ ¼³Á¤ÇÑ´Ù.  
    state = seteuid(500);

    if (state < 0)
    {
        perror("error ");
        exit(0);
    }

    // Å×½ºÆ®¿ë ÆÄÀÏÀ» Çϳª »ý¼ºÇÑ´Ù. 
    if ((fd = open("setuid.txt", O_CREAT|O_RDWR, S_IRWXU|S_IRUSR)) < 0 )
    {
        perror("error ");
        exit(0);
    }

    close(fd);
}
		
À§ ÇÁ·Î±×·¥À» ½ÇÇà½Ã۸é ÇöÀç µð·ºÅ丮¿¡ setuid.txt ¶ó´Â ÆÄÀÏÀ» »ý¼ºÇϴµ¥ ´ÙÀ½°ú °°Àº ±ÇÇÑÀ¸·Î »ý¼ºµÈ´Ù.
[root@localhost testdir]# ls -al
drwxr-xr-x    2 yundream yundream     4096 10¿ù 31 23:25 .
drwxr-xr-x    8 root     root         4096 10¿ù 31 23:13 ..
-rwx------    1 yundream root            0 10¿ù 31 23:13 setuid.txt
		
ÆÄÀÏÀÌ »ý¼ºµÉ¶§ effective UID ÀÎ yundream ID ·Î »ý¼ºµÇ¾úÀ½À» ¾Ë¼ö ÀÖ´Ù.


EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.