본문으로 바로가기
homeimage
  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 루트 디렉토리 지정 함수 chroot()

C언어 루트 디렉토리 지정 함수 chroot()

· 댓글개 · 바다야크

C함수 루트 디렉토리 지정 chroot()

특정 디렉토리를 루트 디렉토리 "/"로 지정합니다. 이 함수를 사용하는 이유는 특정 디렉토리 안에서만 작업을 한다면, 매우 긴 작업 디렉토리 이름 대신에 "/"로 짧게 사용할 수 있어서 작업이 편리합니다. 단, 이 함수는 수퍼 유저만 사용할 수 있습니다.

  • 헤더: unistd.h
  • 형태: int chroot(const char *path)
  • 인수: char *path 루트 디렉토리로 지정할 디렉토리
  • 반환: int 0 == 성공, -1 == 실패

C언어 chroot() 함수 예제

현재 작업 디렉토리를 "/"로 지정합니다. "/"로 지정하면 이후로 작업을 "/"를 기준으로 진행할 수 있습니다.

#include <stdio.h>
#include <unistd.h>
#include <pwd.h>
#include <sys/stat.h>

int main()
{
   int            fd;
   struct passwd *root_pw;

   if ( 0 != getuid())
   {
      printf( "수퍼유저만 사용할 수 있습니다.\n");
      return -1;
   }
   if ( -1 == chroot( "."))
   {
      printf( "chroot() 실행 실패.\n");
      return -1;
   }
   chdir( "/");
   mkdir( "test_dir_A", 0755);
   mkdir( "/test_dir_A/test_dir_B" ,0755);
}

C언어 chroot() 예제 실행 결과

]$ ./a.out
수퍼유저만 사용할 수 있습니다.
]$ su -
Password: 
]# ./a.out
]# ls -al
합계 24
drwxr-xr-x 3 jwjw jwjw 4096  9월 25 12:25 .
drwxr-xr-x 7 jwjw jwjw 4096  9월 25 06:20 ..
-rwxrwxr-x 1 jwjw jwjw 5223  9월 25 12:24 a.out
-rw-r--r-- 1 jwjw jwjw  469  9월 25 12:24 test.c
drwxr-xr-x 3 root root 4096  9월 25 12:25 test_dir_A
]# cd test_dir_A/
]# ls -al
합계 12
drwxr-xr-x 3 root root 4096  9월 25 12:25 .
drwxr-xr-x 3 jwjw jwjw 4096  9월 25 12:25 ..
drwxr-xr-x 2 root root 4096  9월 25 12:25 test_dir_B
]$
SNS 공유하기
💬 댓글 개
최근글
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.