여러 사용자를 위해 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/. 각 애플리케이션 인스턴스는 별도의 파일 시스템, 사용자, 네트워킹 등을 가질 수 있습니다.

관련 정보