chroot Jail을 통해 프로그램을 실행하면 코딩 오류가 발생합니까?

chroot Jail을 통해 프로그램을 실행하면 코딩 오류가 발생합니까?

저는 감옥에 처음 왔습니다 chroot. 지금까지 bash를 사용하여 설정했습니다.이 튜토리얼ssh, 공개 키로 보호되는 사용자를 통해 로그인 할 수 있었습니다 .

SSH 구성은 chroot Jail 실행을 담당합니다.

AllowUsers <username>
Match User <username>
        ChrootDirectory "/home/<username>"

/etc/sshd_config

기본적으로 나열된 모든 종속성을 가져와 /home/username/<rest-of-the-path-to-dependency-file>실행 파일에 복사하고 실행 파일에도 동일한 작업을 수행했습니다.

나는 linux-vdso아무것도 하지 않았다같은 규칙을 따르지 않습니다.

감옥에서 내가 할 수 있는 유일한 일은 cd프로그램을 실행하는 것뿐입니다. 내 쉘 프롬프트는 다음과 같습니다:

-bash-4.4$

다른 프로그램을 추가하고 ldd위의 튜토리얼과 같은 방식으로 종속성을 추가하고 실행 파일을 IU가 찾은 디렉터리에 복사했습니다.

/.config/taskell/config.ini프로그램을 실행하면 여러 다른 파일과 함께 디렉토리와 폴더가 생성됩니다 .

하지만 프로그램이 실행되면 나에게인코딩 관련 오류file /home/username/.config/taskell/config.ini: hGetContents: invalid argument (invalid byte sequence)이지만 내 컴퓨터의 bash 쉘에서 직접 실행하면 제대로 작동합니다.

chroot 감옥을 설정하면 쉘이나 프로그램이 읽고 있는 파일을 해석하는 방식이 바뀌나요? 프롬프트 -bash-4.4$는 일반 프롬프트를 사용하여 처음 로그인했을 때 존재하지 않았던 일종의 기본 설정이 있음을 나타내는 것 같습니다.

또한 WSL Ubuntu 18.08에서 이 작업을 수행하려고 하는데, 이는 제가 연결한 인코딩 문제와 관련이 있는 것 같습니다.

제가 실행할 수 있는 유일한 세 가지 명령은 실행하려는 명령인 , git및 입니다 vim. 하지만 이 명령으로 시작하는데 운이 좋지 않습니다.

답변1

docker와 같은 chroot 대신 컨테이너를 사용하십시오(다른 것도 많이 있음).

  • chroot, 네임스페이스 격리, cgroup 등 훨씬 더 많은 작업을 수행합니다.
  • 그것은 당신을 위해 그것을 관리합니다.
  • Docker의 경우 사전 빌드된 이미지가 있습니다.

그러나 귀하께서 요구하시는 내용은 알겠습니다만 간단한 사용자 격리(각 사용자에 대해 별도의 계정)를 사용하면 더 쉽게 해결할 수 있습니다. 그런 다음 Application Armor와 같은 필수 액세스 제어를 사용하여 이를 향상시킬 수 있습니다.

그러나 WSL을 사용하면 이 모든 것이 복잡해집니다. WSL은 MS-Windows의 Gnu/Linux입니다. WSL은 Gnu/Linux를 Linux로 대체합니다. WSL2가 훨씬 더 나은지 잘 모르겠습니다. 우리가 논의하고 있는 모든 것은 Gnu/Linux의 Linux 부분 내에서 이루어지며, 실제 Gnu/Linux 시스템을 실행하지 않으면 가장 쉽게 작동하지 않습니다(또는 다르게 작동합니다). 공유 파일 시스템은 비호환성의 큰 영역입니다. 사용자를 격리하기 위해 파일 권한을 사용하기가 어렵습니다.

docker가 MS-Windows에서 작동한다고 들었는데, Gnu/Linux를 가상 머신에 넣어서 작동하는 것 같아요(하지만 확실하지는 않습니다).

관련 정보