chroot 명령
목적
명령의 루트 디렉토리를 변경합니다.
구문
chroot Directory Command
설명
주의: 새로운 루트 디렉토리의 특수 파일이 실제 루트 디렉토리와 다른 주 장치 번호 및 부 장치 번호를 가질 경우, 파일시스템을 중복기재하는 것이 가능합니다.
chroot 명령은 루트 사용자 권한을 조작하는 사용자만 사용 가능합니다. 루트 사용자 권한을 갖는 경우, chroot 명령은 Command을 수행할 때 Directory 매개변수가 지정한 디렉토리로 루트 디렉토리를 변경합니다. 경로 이름의 처음 /(슬래쉬)는 지정된 Command 및 하위에 대한 Directory로 변경합니다.
Directory 경로 이름은 항상 현재 루트와 관계가 있습니다. chroot 명령이 발효 중일지라도, Directory 경로 이름은 수행 중인 프로세스의 현재 루트와 관계가 있습니다.
대부분의 프로그램은 chroot 명령을 수행한 후 적절하게 작동되지 않을 수 있습니다. 예를 들면, 공유 라이브러리가 새로운 루트 파일시스템에 있지 않을 경우 공유 라이브러리를 사용하는 명령이 정상적으로 작동하지 않습니다. 가장 일반적으로 사용되는 공유 라이브러리는 /usr/ccs/lib/libc.a 라이브러리입니다.
현재 루트 위치가 /etc/passwd 파일에 도달할 수 없게 할 경우, ls -l 명령은 주어진 사용자 및 그룹 이름에게 정상적이지 못합니다. 또한, 국지 파일(/usr/lib/nls/*)에 따라 다른 유틸리티는 이러한 파일이 새로운 루트 파일시스템에 있지 않을 경우, 정상적이지 못할 것입니다. 모든 필수 데이터 파일이 새로운 루트 파일시스템에 존재하고 이러한 파일에 액세스하는 경로 이름을 필요한 대로 변경하는 것은 사용자의 의무입니다.
매개변수
Command chroot 명령으로 수행할 명령을 지정합니다.
Directory 새로운 루트 디렉토리를 지정합니다.
예제
주의: 다음의 예제는 공유 라이브러리에 따라 다를 수 있습니다. chroot 명령을 수행하기 전에 새로운 루트 파일시스템에 공유 라이브러리가 있는지 확인하십시오.
루트 파일시스템인 /usr/bin 디렉토리에 pwd 명령을 수행하려면 다음과 같이 입력하십시오.
mkdir /usr/bin/lib
cp /usr/ccs/lib/libc.a /usr/bin/lib
chroot /usr/bin pwd
루트 파일시스템으로 다른 파일시스템을 갖는 콘 쉘 서브쉘을 수행하려면, 다음과 같이 입력하십시오.
chroot /var/tmp /usr/bin/ksh
이 명령열은 /usr/bin/ksh 명령 중 디렉토리 이름 /(슬래쉬)에서 /var/tmp를 참조하도록 합니다. 또한 원래 루트 파일시스템을 액세스 불가능하게 만듭니다. /var/tmp 파일의 파일시스템은 루트 파일시스템의 표준 디렉토리를 포함하고 있습니다. 특히, 쉘은 /var/tmp 파일시스템의 /bin 및 /usr/bin 파일에서 명령을 찾습니다.
/usr/bin/ksh 명령을 수행하면 사용자의 원래 쉘에서 분리된 처리를 수행하는 서브쉘을 작성합니다. END OF FILE(Ctrl-d) 키를 눌러 서브쉘을 종료하고 원래 쉘의 장소로 돌아가십시오. 이것은 .(현재 디렉토리) 및 /(루트 디렉토리)의 의미를 포함하는 원래 쉘의 환경을 복원합니다.
새로운 파일이 아닌 원래 루트의 상대 파일을 작성하려면 다음과 같이 입력하십시오.
chroot directory Command > file
파일
/etc/passwd 기본 사용자 속성을 포함하는 파일을 지정합니다.
/usr/ccs/lib/libc.a 표준 입출력 라이브러리와 표준 C 라이브러리를 지정합니다.
/usr/ccs/lib/libcurses.a curses 라이브러리를 지정합니다.
/usr/lib/liblvm.a LVM(논리적 볼륨 관리자) 라이브러리를 지정합니다.
/usr/ccs/lib/libm.a math 라이브러리를 지정합니다.
/usr/lib/libodm.a ODM(오브젝트 데이터 관리자) 라이브러리를 지정합니다.
/usr/sbin/chroot chroot 명령이 있습니다.
뭐라고 씨부리는지 잘 모름 -_- 다시 공부 ;;