C 프로그램 실행 권한만 가진 사용자 생성

C 프로그램 실행 권한만 가진 사용자 생성

온라인 코드 편집기를 만들려고 합니다. 내 시나리오: "C" 프로그램에 대한 요청이 웹 서버를 통해 수신됩니다. 루트 사용자가 파일을 생성하고 파일을 컴파일한 후 사용자에게 성공을 확인합니다.

우리는 nodejs그것을 백엔드에서 사용하고 있습니다. 이제 프로그램을 실행할 시간입니다. nodejsuid(루트가 아닌 다른 사용자)를 사용하여 이 사용자 코드를 생성할 수 있는 옵션이 제공됩니다.

ls, px 등과 같은 권한이 없는 사용자를 생성하고 위 단계에서 컴파일된 실행 파일을 실행하려면 어떻게 해야 합니까?

내가 시도한 해결 방법 중 하나는 루트 사용자만 이러한 모든 명령을 실행할 수 있고 해당 사용자는 간단한 "C" 프로그램만 실행할 수 있도록 /usr/bin, /bin, /usr/sbin/, 의 권한을 700으로 변경하는 것입니다 /sbin. 그러나 사용자에게는 여전히 디렉토리를 볼 수 있는 옵션이 있으므로 기본적으로 모든 디렉토리에 대해 700을 가진 사용자가 필요합니다. 이것이 좋은 생각입니까?/usr/local/bin/usr/local/sbin/etc

다른 옵션은 의류입니다. 아직 이것을 시도하지 않았습니다.

친구가 제안한 세 번째 옵션은 chroot이지만 사람들은 이것이 보안 조치를 위한 것이 아니라고 말합니다.

누구든지 이 문제를 해결하는 방법을 안내해 줄 수 있나요?

답변1

Chroot는 이 작업을 수행하는 보다 전통적인 방법이며 작동하게 할 수 있지만 웹 인터페이스를 통해 수행하기 때문에 좀 더 복잡해집니다. 경쟁 조건(동일한 chroot 환경을 사용하는 여러 사용자)을 방지해야 합니다. , 각 요청에 대한 디렉터리 구조를 동적으로 구축해야 하며, 아마도 머리로는 생각할 수 없는 다른 것들이 있을 수 있습니다.

lxcLinux를 사용하는 경우 컨테이너( ) 또는 Docker 프로젝트를 확인해 보세요.https://docs.docker.com. 특히 Docker 플랫폼을 사용하면 여기에서 원하는 작업을 매우 훌륭하고 쉽게 수행할 수 있습니다. 즉, 외부 세계(예: 웹 서버) 리소스에 영향을 주지 않고 완전히 감옥에 갇힌 프로세스를 실행하는 데 사용할 수 있는 임시 경량 가상 시스템을 생성할 수 있습니다. 프로그램을 실행하려는 특정 운영 체제 환경(예: Fedora 12)에 대한 기본 도커 이미지를 다운로드하고, 사용자의 프로그램 소스를 해당 환경으로 가져오는 동안 해당 환경을 실행하도록 도커에 지시한 다음, 그에 따라 컴파일러를 실행하도록 도커에 지시합니다. 해당 환경에서 생성된 파일을 사용합니다. 그런 다음 docker에게 임시 환경을 파괴하라고 지시합니다. 아무것도 남지 않았고 (거의) 보안 위험도 없습니다.

관련 정보