Ʈ 丮 Ѵ.
: 3121

ü Լ/
ġ : ޴> ý >chroot


<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=chroot">chroot</a>(2)

1장. chroot(2)

차례
1.1.
1.2.
1.3. ȯ
1.4.
1.5.
1.6.

Ʈ 丮 Ѵ.


1.1.

#include <unistd.h>

int chroot(const char *path);
		


1.2.

chroot() path Ʈ 丮 Ѵ. 丮 "/" ϴ ̸ Ѵ. Ʈ丮 μ ڽ μ ӵȴ.

Ʈ 丮 ִ.

ý ۾ 丮 ٲ ʴ´. ׷ "." "/" Ʈ Ʈ ġ ִ.


1.3. ȯ

0 ϵǰ, ߻ϸ -1 ϵȴ.


1.4.

EPERM

ȿ UID 0 ƴϴ.

EFAULT

path ޸ Ű ִ.

ENAMETOOLONG

path ʹ .

ENOENT

ʴ´.

ENOMEM

Ŀ ޸𸮰 ʴ.

ENOTDIR

path 丮 ƴϴ.

EACCESS

㰡 źεǾ.

ELOOP

path ãư ʹ ɺ ũ Ѵ.

EIO

I/O ߻ߴ.


1.5.

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main()
{
    int pid;

    if (chroot("/home/mydir") != 0)
    {
        perror("chroot");
        exit(0);
    }
    if (execl("/bin/bash","bash", NULL) == -1) 
    {
        perror("error");
    }
}
		
ڵ带 Ű /home/mydir Ʈ(/)丮 ǰ bash ȴ. Ʈ 丮 Ƿ /home/mydir/bin ؿ bash ־ Ѵ. bash Ű ⺻ ̺귯 ־ ϴµ ldd ؼ bash Ű ʿ ̺귯 ˾Ƴ ִ. /home/mydir/lib 丮 ؿ ʿ ̺귯 Ѵ α׷ ϵ .


1.6.

  1. chdir(2)


  • DeleteMe: chroot "/bin/bash" ʰ "/bin/sh" ϵ Ǵ° ´ٰ մϴ. yundream ȮκŹ. - minzkn
    • ̰ ϼ ޴ ƴմϴ. ̻ϰ ׽Ʈ ȵǾ.. 𸣰ڴµ.. "/bin/bash" ڲ ã´ٰ.. /bin/sh غñ.. ٵ.. ٸ ׽Ʈ ȴٰ ϰ -.-;. ƹ ٸ ׽Ʈ Ǵ Ȯ Ұ ٴ minzkn ֽ .. minzkn dz ? ġ ִ 𰡰 ִ° :-?
    • ⺻ /home/mydir/bin/sh Ǵ /home/mydir/bin/bash ־ . yundream Ͻð ϽŰ? ׸ 縦 ʾƵ ǵ Ϸ chroot ش ̹ о chroot Ͽ ̹ ġ ϰ ؾ ڳ׿. ׸ /bin/sh ǹ̴ ڽ shell ̶ ˸ link ̰. Ȯ yundream ڵ带 ׽Ʈغ ؼ /usr/mydir/bin/bash ־ ϰ /usr/mydir/bin/sh ./bash ũ ɷ־ ϰ. chroot Լ root Ư ̹Ƿ root ؾ ϰڰ. ׸ chroot Ŀ chdir("/") Լ ȣǴ° ٴ ׿.

  • ȯ  Ȯ... 
    /home/mydir/bin/bash 
    /home/mydir/bin/sh -> ./bash 
    /home/mydir/lib/libtermcap.so.2 
    /home/mydir/lib/libdl.so.2 
    /home/mydir/lib/libc.so.6 
    /home/mydir/lib/ld-linux.so.2 
     

    const char __mydir__[] = {"/home/mydir"};
    const char __root__[] = {"/"};
    const char __shell__[] = {"/bin/sh"};
    
    if(chroot(__mydir__) == 0){
     chdir(__root__);
     setenv("SHELL", "/bin/bash", 1);
     setenv("LD_LIBRARY_PATH", "/lib", 1); /* ±×¹Û¿¡ ÇÊ¿äÇÑ È¯°æº¯¼öµé... */
     (void)execl(__shell__, __shell__, (void *)0);
    }
    fprintf(stdout, "¿¡·¯³µ¾î¿ä. Å«ÀÏÀÌ¿¹¿ä. Á¾·áµÇ¿ä. \n");
    
    • ŰŰŰŰ.. libc ld-linux ʾҳ׿ -.-; ϰ ׽Ʈ ϴϱ ߵdz׿ T.T - yundream