chroot에서 여러 사용자를 위해 코드를 샌드박스하는 방법은 무엇입니까?

chroot에서 여러 사용자를 위해 코드를 샌드박스하는 방법은 무엇입니까?

나는 무엇을 하고 싶은가?

나는 chroot와 Python을 사용하여 코드 평가기를 작성 중이며 영감을 얻기 위해 hackerrank에갔습니다.

Hackerrank에서는 무슨 일이 벌어지고 있는 것 같나요?

Hackerrank는 사용자 프로그램이 제출한 각 실행에 대해 run-XXXXXXXXXXXXXXXXXXXXX 폴더를 생성합니다. 각 폴더에는 고유한 소유자가 있으며 해당 소유자만 해당 폴더에 대한 읽기/쓰기 액세스 권한을 갖습니다. 이는 특정 사용자가 15307다른 폴더의 내용을 읽거나 수정할 수 없음을 의미합니다.

문제에 대해 말하면

누군가 chroot와 Python 또는 다른 언어를 사용하여 이를 어떻게 달성할 수 있습니까? 매번 사용자를 생성해야 합니까?

산출ls -al
total 140
drwxrwx--x  2 15307 15307   4096 Jun 24 19:17 .
drwxr-xr-x 68 root      0 118784 Jun 24 19:17 ..
-rw-r--r--  1 15307 15307      0 Jun 24 19:17 compile.err
-rw-rw----  1 15307 15307      0 Jun 24 19:17 error00000.err
-rw-r-----  1 15307 15307     27 Jun 24 19:17 input00000.in
-rw-rw----  1 15307 15307      0 Jun 24 19:17 output00000.out
-rwxrwx---  1 root      0    783 Jun 24 19:17 request.json
-rw-rw----  1 15307 15307     52 Jun 24 19:17 solution.py
-rw-r--r--  1 15307 15307    213 Jun 24 19:17 solution.pyc
산출ls -al /
total 504
drwxr-xr-x  68 root       0 118784 Jun 24 19:17 .
drwxr-xr-x  68 root       0 118784 Jun 24 19:17 ..
drwxr-xr-x   3 ubuntu     0   4096 Jan 25 11:41 android
drwxr-xr-x   2 root       0   4096 Apr  9 06:30 bin
drwxrwx--x   2  17450 17450   4096 Jun 24 19:08 custom-H8tFpKOEWGsc0s6lvpRk
drwxrwx--x   2  14667 14667   4096 Jun 24 19:15 custom-QiOC2dqgU3pVUlFU4ZWz
drwxr-xr-x  13 root       0   3860 Jun 24 19:08 dev
drwxr-xr-x  10 root       0   4096 May  6 05:37 etc
drwxrwx--x   2  18227 18227   4096 Jun 24 19:13 game-player1-YeDYLpA2uIqJFeZ3d97T9IuRAKoqDhyM
drwxr-xr-x   4 root       0   4096 May  6 05:37 home
drwxr-xr-x  21 root       0   4096 Jun 21 06:36 lib
drwxr-xr-x   2 root       0   4096 Jun 21 06:36 lib32
drwxr-xr-x   2 root       0   4096 Jun 21 06:36 lib64
drwx------   2 root       0  16384 Jan 25 09:18 lost+found
drwxr-xr-x   5 root       0   4096 Jan 25 14:10 opt
dr-xr-xr-x 127 root       0      0 Jun 24 19:08 proc
drwxr-xr-x   7 root       0   4096 Jun 21 10:30 root
drwxr-xr-x  22 root       0    800 Jun 24 19:08 run
drwxrwx--x   2  15307 15307   4096 Jun 24 19:17 run-1KpGsxE8tJkf4JZhNa3O
drwxrwx--x   2  19186 19186   4096 Jun 24 19:12 run-1a89kLrOIvxSKmcG8Vxf
drwxr-x---   2 root       0   4096 Jun 24 19:13 run-1tPF28PnLjSHnwiPQQKw
drwxrwx--x   2  18229 18229   4096 Jun 24 19:12 run-1z3LUuz9SddZHYtT6DXl
drwxrwx--x   2  17407 17407   4096 Jun 24 19:14 run-2KfLhB5KQJ9hFnT32apd
drwxrwx--x   2  13423 13423   4096 Jun 24 19:15 run-2kNHf7UsoOBjeQI2Tcbk
drwxrwx--x   2  13477 13477   4096 Jun 24 19:12 run-6fuBJP7ZgZfEm2k9vkZV
drwxrwx--x   2  14824 14824   4096 Jun 24 19:08 run-8MlwJE1ia8bR86MbVYi8
drwxrwx--x   2  15984 15984   4096 Jun 24 19:13 run-A3YDoqR2J9cGAhILYDqZ
drwxrwx--x   2  16989 16989   4096 Jun 24 19:16 run-AQQjyqXYSXeFZ9wzI5dy
drwxrwx--x   2  18819 18819   4096 Jun 24 19:15 run-AvAUgIkcFtieewAFZ6dZ
drwxrwx--x   2  13189 13189   4096 Jun 24 19:14 run-FldwZMBI51tvTI3bzTqf
drwxrwx--x   2  15862 15862   4096 Jun 24 19:08 run-GORpHssv6tp0WFktcKlE
drwxrwx--x   3  15041 15041   4096 Jun 24 19:14 run-GmRpaAqK23cjuC3opP6G
drwxrwx--x   2  12977 12977   4096 Jun 24 19:12 run-zlriB5scmjE0ASSjie2r
drwxr-xr-x   2 root       0   4096 Jun 21 06:37 sbin
drwx------   3 root       0   4096 Jun 24 19:08 store
drwxrwxrwt   4 root       0   4096 Jun 24 19:17 tmp
drwxr-xr-x  14 root       0   4096 Jan 25 11:36 usr
drwxr-xr-x   6 root       0   4096 May  2 16:53 var

답변1

다음을 통해 별도의 환경에서 애플리케이션을 실행할 수 있습니다.https://linuxcontainers.org/. 각 애플리케이션 인스턴스는 별도의 파일 시스템, 사용자, 네트워크 등을 가질 수 있습니다.

관련 정보