Chroot
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
chroot는 유닉스 계열 운영체제에서 사용되는 시스템 호출로, 프로세스의 루트 디렉토리를 변경하여 해당 프로세스가 특정 디렉토리 내에서만 파일 시스템에 접근하도록 제한하는 기술이다. 1979년 버전 7 유닉스에서 처음 도입되었으며, 소프트웨어 테스트, 보안 강화, 격리된 환경 구축 등 다양한 목적으로 활용된다. chroot는 샌드박스 환경을 구성하는 데 사용되지만, 루트 권한을 가진 사용자에 의한 변조를 완전히 방지하지는 못하며, 여러 가지 제한 사항을 가지고 있다. Postfix, OpenSSH, ChromeOS 등 다양한 소프트웨어 및 운영체제에서 chroot 기술을 활용하고 있으며, fakechroot와 같은 관련 도구도 존재한다.
더 읽어볼만한 페이지
- 시스템 호출 - 포크 (시스템 호출)
포크는 유닉스 계열 운영체제에서 새로운 프로세스를 생성하는 시스템 호출로, 호출 시 부모 프로세스의 복사본인 자식 프로세스가 생성되어 파일 서술자를 상속받으며, 유닉스 철학의 핵심 개념으로 필터 개발 및 파이프라인 구축에 용이하고 vfork, rfork, clone 등 다양한 변종이 존재한다. - 시스템 호출 - Stat (시스템 호출)
`stat` 시스템 호출은 파일의 크기, 접근 권한, 수정 시간 등 다양한 속성 정보를 담은 `stat` 구조체를 반환하여 파일 상태 정보를 가져오는 데 사용되며, C 언어에서 `stat()`, `lstat()`, `fstat()` 함수와 대용량 파일 지원을 위한 `stat64()`, `lstat64()`, `fstat64()` 함수를 통해 호출된다. - 컴퓨터 보안 절차 - 사이버 전쟁
사이버 전쟁은 국가나 비국가 행위자가 사이버 공간에서 국가 안보를 위협하거나 정책을 수행하기 위해 컴퓨터 네트워크를 이용해 공격과 방어를 하는 행위이다. - 컴퓨터 보안 절차 - 컴퓨터 포렌식
컴퓨터 포렌식은 디지털 증거를 수집, 분석하여 법적 증거로 제시하는 과학 수사 기법으로, 사이버 범죄 수사, 민사 소송, 기업 감사 등 다양한 분야에서 활용되며 자동화, 인공지능, 머신러닝과 같은 첨단 기술을 통합하는 방향으로 발전하고 있다. - 자유 가상화 소프트웨어 - LXC
LXC는 리눅스 커널의 cgroup과 네임스페이스 격리 기능을 이용하여 운영 체제 수준의 가상화를 제공하는 기술로, IBM 연구원들이 개발했으며 보안 강화 및 LXD 컨테이너 관리자 프로젝트를 통해 발전해왔다. - 자유 가상화 소프트웨어 - 커널 기반 가상 머신
커널 기반 가상 머신(KVM)은 리눅스 커널의 가상화 확장 기능으로, CPU와 메모리 가상화를 지원하며 QEMU와 함께 완전한 가상화 솔루션을 구성하고 다양한 관리 도구를 제공한다.
| Chroot - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
| 개발 | |
| 작성자 | 빌 조이 AT&T 벨 연구소 |
| 개발자 | 다양한 오픈 소스 상용 개발자 |
| 출시 | |
| 최초 출시 | 1979년 |
| 기타 | |
| 장르 | 명령 |
2. 역사
chroot 시스템 호출은 1979년 버전 7 유닉스 개발 중에 도입되었으며, 1982년 3월 18일 빌 조이가 BSD에 추가하였다.[1]
chroot는 다음과 같은 다양한 목적에 유용하게 사용될 수 있다.
chroot에 "jail"이라는 용어가 적용된 것은 1991년 빌 체스윅이 해커를 감시하기 위한 허니팟을 만들면서 시작되었다.[4]
FreeBSD는 2000년 이 개념을 확장하여 jail 명령을 도입했다.[6]
2005년 썬은 "스테로이드를 맞은 chroot"로 묘사되는 솔라리스 컨테이너 (솔라리스 존)를 출시했다.[9]
2008년 LXC (이후 도커가 구축됨)는 "컨테이너" 용어를 채택했으며,[10] 2013년 리눅스 커널 3.8에 사용자 네임스페이스가 포함되면서 인기를 얻었다.[11]
3. 이용 목적
4. 리눅스에서의 활용
리눅스에서 chroot 환경을 사용하려면 커널 가상 파일 시스템과 구성 파일 또한 호스트에서 chroot로 마운트/복사해야 한다.[22][23]
```sh
# 커널 가상 파일 시스템 마운트
TARGETDIR="/mnt/chroot"
mount -t proc proc $TARGETDIR/proc
mount -t sysfs sysfs $TARGETDIR/sys
mount -t devtmpfs devtmpfs $TARGETDIR/dev
mount -t tmpfs tmpfs $TARGETDIR/dev/shm
mount -t devpts devpts $TARGETDIR/dev/pts
# /etc/hosts 복사
/bin/cp -f /etc/hosts $TARGETDIR/etc/
# /etc/resolv.conf 복사
/bin/cp -f /etc/resolv.conf $TARGETDIR/etc/resolv.conf
# /etc/mtab 링크
chroot $TARGETDIR rm /etc/mtab 2> /dev/null
chroot $TARGETDIR ln -s /proc/mounts /etc/mtab
```
다음 방식을 이용하여 chroot 환경에서 그래픽 응용 프로그램을 구동할 수 있다.[13][14]
5. 제한 사항
chroot 메커니즘은 루트 권한을 가진 사용자가 의도적으로 조작하는 것을 막는 데 한계가 있다. NetBSD는 예외적으로 chroot를 보안 메커니즘으로 간주하여 탈출 방법이 알려져 있지 않지만, 대부분의 시스템에서는 chrooted 프로그램이 충분한 권한을 가지면 두 번째 chroot를 실행하여 탈출할 수 있다.[12] 이러한 보안 취약점을 완화하려면 chrooting 후 가능한 한 빨리 루트 권한을 포기하거나, FreeBSD jail과 같은 다른 메커니즘을 사용해야 한다.
일반적인 파일 시스템에서 장치 노드를 지원하는 시스템에서, chrooted 루트 사용자는 여전히 장치 노드를 생성하고 파일 시스템을 마운트할 수 있다. 따라서 chroot는 권한 있는 사용자의 시스템 장치에 대한 낮은 수준의 접근을 차단하거나, I/O, 대역폭, 디스크 공간, CPU 시간 등의 자원 사용을 제한하는 데 사용될 수 없다. 대부분의 유닉스 시스템은 완전히 파일 시스템 지향적이지 않으므로, 네트워킹 및 프로세스 제어와 같이 잠재적으로 파괴적인 기능도 시스템 호출 인터페이스를 통해 chrooted 프로그램에서 사용 가능하다.
프로그램은 시작 시 임시 공간, 구성 파일, 특수 파일, 공유 라이브러리를 특정 위치에서 찾을 것으로 예상한다. chrooted 프로그램이 성공적으로 시작하려면 chroot 디렉터리에 이러한 파일들의 최소 집합이 있어야 한다. 이 때문에 chroot를 일반적인 샌드박스 메커니즘으로 사용하기는 어렵다.
루트 사용자만이 chroot를 수행할 수 있다. 이는 사용자가 조작된 chroot jail 안에 setuid 프로그램을 넣어 권한 상승을 유발하는 것을 막기 위함이다. 따라서 일반 사용자가 임의로 샌드박스 환경을 구성하는 데 chroot를 사용할 수 없다.
일부 유닉스 시스템은 이러한 제한 사항 중 일부를 해결하기 위해 chroot 메커니즘의 확장을 제공한다. ( OS 수준의 가상화 참조)
6. 확장 기술
chroot 메커니즘은 몇 가지 제한 사항을 가지고 있어, 이를 보완하기 위해 다양한 운영 체제 수준 가상화 기술이 개발되었다. 이러한 기술들은 chroot의 보안 및 격리 수준을 강화하는 데 도움을 준다.
몇몇 유닉스 시스템은 이러한 chroot의 제한 사항을 해결하기 위해 확장된 기능을 제공한다. (운영 체제 수준 가상화 기술의 구현 참조)
7. 주요 응용 사례
8. fakechroot
fakechroot는 LD_PRELOAD영어를 사용하여 `open()` 등의 시스템 호출을 가로채 루트 권한 없이 chroot와 유사한 환경을 만드는 도구이다.[21]
참조
[1]
웹사이트
jail, section 9.
https://docs.freebsd[...]
2016-03-14
[2]
웹사이트
Warner's Random Hacking Blog: Whither chroot?
https://bsdimp.blogs[...]
2000-02-02
[3]
웹사이트
Data Infrastructures for the rest of us - III - software
https://blog.dionres[...]
2020-06-28
[4]
conference
An Evening with Berferd: In Which a Cracker is Lured, Endured, and Studied
https://www.cheswick[...]
The Association
1991
[5]
웹사이트
Summertime potluck
http://sunsite.uakom[...]
Carole Fennelly
[6]
웹사이트
FreeBSD Handbook "Jails" Chapter
http://www.freebsd.o[...]
The FreeBSD Project
2018-10-30
[7]
웹사이트
chroot shell
http://membres.lycos[...]
Nicolas Boiteux
2018-03-24
[8]
웹사이트
Girafon
http://girafon.org:8[...]
girafon
2018-03-24
[9]
서적
High Availability and Disaster Recovery: Concepts, Design, Implementation
https://books.google[...]
Springer Science & Business Media
2006-09-02
[10]
웹사이트
SourceForge LXC Download Files
http://sourceforge.n[...]
2014-08-21
[11]
웹사이트
Linux Containers and the Future Cloud
http://www.haifux.or[...]
2014-03-26
[12]
웹사이트
chroot(2)
https://www.freebsd.[...]
2020-12-02
[13]
웹사이트
Development/Howto/Chroot
http://wiki.mandriva[...]
2011-07-25
[14]
웹사이트
HOWTO startx in a chroot
2011-10-13
[15]
웹사이트
Atoms is a Linux Chroot Management Tool with a User-Friendly GUI
https://linuxtldr.co[...]
2023-10-10
[16]
웹사이트
sshd_config(5) manual page
https://man.openbsd.[...]
2018-02-04
[17]
웹사이트
Chromium OS Universal Chroot Environment (on github)
https://github.com/d[...]
2016-12-17
[18]
문서
How to break out of a chroot() jail
http://www.bpfh.net/[...]
[19]
웹사이트
sshd_config(5) manual page
http://www.openbsd.o[...]
2008-04-27
[20]
웹사이트
Live upgrading many thousand of servers from an ancient Red Hat distribution to a 10 year newer Debian based one.
http://marc.merlins.[...]
2018-08-13
[21]
Github
fakechroot/fakechroot - GitHub
https://github.com/f[...]
[22]
웹인용
보관된 사본
http://wiki.mandriva[...]
2016-02-28
[23]
웹인용
보관된 사본
http://www.gentoo-wi[...]
2011-10-13
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com