공유 해제로 chroot 시뮬레이션


13

최소한의 소스 소스 리눅스 배포를 위해 부트 스트 래퍼를 작성하려고합니다.

chroot와 같은 환경에서 빌드하고 싶습니다. 이것은 패키징을 단순화해야합니다. 지금은 보안에 신경 쓰지 않습니다. 부트 스트 래퍼에는 비표준 타사 명령이 필요하지 않습니다. 뿌리가 될 필요가 없다면 좋을 것입니다.

이것이 fakechroot (1) fakeroot (1) chroot (1)이 내가 찾는 것과 정확히 다른 이유입니다.

unshare (1) 및 / bin / sh를 가짜 / 사용하는 것이 가능합니까?


AFAICS unshare(1)는 루트 전용 시스템 호출 모음을 둘러싼 다소 얇은 래퍼이며 (적어도 Fedora 18에서는) SUID가 아니므로 루트가 아닌 사용자에게도 효과가있을 것입니다.
vonbrand

아, 부끄러운 일이야 나는 공유가 setuid라는 인상을 받았다. 나는 뿌리가 좋다고 생각합니다.
Rooties

4
새로운 Linux 3.8 커널이 출시되면서 네임 스페이스 기능을 루트가 아닌 것으로 사용할 수 있습니다. 그러나 이것은 반짝이는 새로운 것입니다. 먼저 uid 네임 스페이스가 필요하며 unshare는 아직 지원하지 않습니다. 그리고 당신의 행동은 여전히 ​​제한적일 것입니다.
BatchyX 2019

답변:


5

예. 귀하의 경우 커널 지원의 user_namespaces이 (그들이 사용 가능) , 당신은 먼저 호출에 대한 권리를 얻을 사용자 "루트 시뮬레이션"수 chroot(실제 루트 사용자로)을. (이전 에는 일반 사용자에 의한 권한 에스컬레이션 가능성 때문에 (예 : chroot 디렉토리의 set-UID-root 바이너리 및 사용자 정의 라이브러리를 통해) 루트 사용자로만 제한해야했습니다 .)

쉘에서 이것을 시도 할 수 있습니다 :

unshare --user --map-root-user --mount-proc --pid --fork
/sbin/chroot ......
su - user1

알 수없는 옵션 '--map 루트 사용자'
Zibri

1
@Zibri이와 지금 나를 위해 작동 unshare에서 폴더의 유틸리티 - 리눅스-2.30.2-ALT1
IMZ - 이반 Zakharyaschev

1

fakeroot / fakechroot는 이미 이것에 완벽하게 적합하므로 묶거나 설치하기 만하면됩니다. 영감을 얻으려면 cdebootstrap을보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.