2013-06-17 3 views
0

우리는 C++ 애플리케이션에 Python 3.x를 임베드하여 유지 보수 및 기타 작업의 스크립팅을 허용하고자합니다. 지금까지 파일 조작을 포함하여 필요한 모든 작업을 수행합니다.임베디드 파이썬의 셸 명령 실행 방지?

문제는 일부 사양 (예 : PCI)을 충족하기 위해 subprocess.call 또는 popen과 같은 쉘 명령을 임의로 실행할 수 없다는 것입니다.

임베디드 파이썬에서 작업하는 것을 막고 유사한 호출을 할 수있는 방법이 있습니까?

+1

AFAIK, 외부 유틸리티 ... os.system, subprocess 및 명령을 호출하는 세 가지 방법이 있습니다. 라이브러리 트리에서'subprocess.py'와'commands.py'를 삭제함으로써 두번째 두가지를 비활성화 할 수있는 것처럼 보입니다. 'os'로, 당신은 os 모듈에'del system'을 추가 할 수있을 것입니다 ... 편집 할 필요가있는 다른 장소/것들이있을 수 있지만, 적어도 이것은 시작입니다 ... – mgilson

+0

임의의 생각 , 위의 내용을 추가하기 위해, 당신이 사용하지 않을 명령을 다른 경로로 옮기거나 python을 루트가 아닌 명령 폴더에 대한 액세스 권한이없는 제한된 사용자로 실행 시키십시오. 내가 기억한다면 모든 명령은/bin/sin/usr/bin// usr/local/bin /에 있습니다. – Pradheep

+0

@Pradheep 명령은 어디에서나 사용할 수 있습니다. 'PATH'를 존재하지 않는 것으로 설정할 수 있지만 사용자는 절대 경로를 사용하여 명령을 호출 할 수 있습니다. 특정 사용자가 폴더에 액세스 할 수 없다고 말할 수있는 방법은 없습니다. –

답변

0

하나의 옵션은 임의의 쉘 명령을 실행할 수있는 모든 모듈 (예 : subprocess.py *, os.py * ...)을 제거하고 최종 사용자가 즉시 액세스 할 수있는 모듈 만 포함하는 것입니다.

+0

감사! 그것은 거의 작동합니다. 나는 OS가 필요하지만, 번들로 제공되는 os.py의 끝에 del 시스템을 추가하는 것에 대한 또 다른 제안이있다. –

0

응용 프로그램이 정말로 잠겨 있지 않는 한 임의의 코드가 실행되는 것을 막을 수 있다고 생각하지 않으므로 다른 사람이 자신의 파이썬 모듈을 임의의 디렉토리 (가져 오기)에서로드하는 것을 막을 수는 없다고 생각하지 않습니다. 파이썬이 임베드되어 있습니다.

+0

감사합니다. 실제로, 나는 그것이 우리가 잠글 수있는 선택이라고 생각합니다. 파이썬 파일을 다른 파일 내부에 임의로로드하지 않습니다. 따라서 우리는 알려지지 않은 .py 파일이 존재할 경우 통역사가 일하는 것을 막을 수 있습니다. 또한 경로를 잠그면 가져 오기가 원하지 않는 것을 찾을 수 없습니다. 이것이 완전하다는 것을 기억해야 할 것입니다. –