2016-12-03 2 views
0

Linux에서 (또는 SELinux를 사용하여) 다른 사용자로 메소드를 실행할 수 있습니까? 내가 개별 샌드 박스에서 실행 한 프로그램으로 각각 다른 사용자 및 프로세스 ID가 있습니다. 나는 다른 사용자로서 다른 프로세스 ID를 사용하여 코드의 한 부분을 실행하여 메모리와 디스크 공간을 생성하는 상황을 방지해야한다.* nix에서 다른 사용자로 분기를 실행할 수 있습니까?

가능하지 않은 경우 커널 코드를 변경하기 위해 얼마만큼의 변경을해야합니까? (나는 그것의 주관적 인 것을 이해한다. 당신이 그것에 대해 무엇을 어떻게해야하는지 제안 할 수 있다면, 그것은 많은 도움이 될 것이다).

답변

0

동일한 기계에서 실행되는 다른 코드로부터 일부 자원을 보호하는 것이 프로세스와 UID 발명으로 이어지는 이유입니다. 간단한 함수 호출처럼 보이는 메커니즘을 찾고 있다면 호출자와 호출 수신자가 메모리를 공유해야하기 때문에 불가능하다고 말할 수 있습니다. 그러나 시스템()과 같은 래퍼를 사용하면 프로그램 매개 변수 또는 파이프와 같은 시스템 개체를 사용하여 매개 변수/결과를 처리하는 동안 약간의 격리가 제공됩니다.

* nix 사용자는 서로간에 프로세스를 보호하기위한 것이지 만 한 사용자가 다른 사용자를 대신하여 행동하게하려면 두 사용자간에 명시 적 관계를 구축해야합니다.

  • 이 두 번째로 명령 (또는 특정 명령)을 실행하는 첫 번째 사용자에게 권한을 부여하는의 sudoers 정책을 정의에

    사실, 당신은 할 수 있습니다.

  • 첫 번째 프로그램에서 popen() (또는 system())을 사용하여 권한이 적은 코드를 호출하십시오.
  • 있는 경우는, 모든 코드가 같은 위치에있을 수 있습니다, 당신은 모두 실행에 동일한 바이너리를 사용할 수 있습니다, 추가로 표준 출력

에서 이런 식으로 결과를 매개 변수를 전달하고 분석합니다.

관련 문제