>백엔드 개발 >파이썬 튜토리얼 >언제 `subprocess` 모듈과 함께 `shell=True`를 사용해야 합니까?

언제 `subprocess` 모듈과 함께 `shell=True`를 사용해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-20 19:22:10951검색

When Should I Use `shell=True` with the `subprocess` Module?

Subprocess에서 'shell=True'의 특정 사용

subprocess 모듈을 활용할 때 'shell=True' 인수는 특정 기능을 제공합니다. 목적. 다음 코드 조각은 모두 동일한 프로세스를 실행하지만 접근 방식이 다릅니다.

callProcess = subprocess.Popen(['ls', '-l'], shell=True)
callProcess = subprocess.Popen(['ls', '-l']) # without shell

'shell=True'를 사용해야 하는 경우

'shell= 호출 True'는 명령이 쉘 해석기를 통해 실행되어 환경 변수 및 파일 글로브의 확장이 가능함을 의미합니다. 그러나 이 접근 방식에는 잠재적인 위험이 있습니다.

  • 알 수 없는 프로그램 호출: SHELL 환경 변수는 셸로 호출되는 바이너리를 지정하여 플랫폼별 동작을 도입합니다.

우대 접근방식

일반적으로 'shell=True'는 사용하지 않는 것이 좋습니다. 다음은 몇 가지 이유입니다.

  • 보안 취약점: ILS(입력 줄 분할) 공격은 환경 변수를 조작하여 셸 기반 호출을 악용할 수 있습니다.
  • 플랫폼 종속성: 셸의 동작은 플랫폼에 따라 다르므로 일관성을 보장하기 어렵습니다.

요약

셸 확장이 특별히 필요한 경우가 아니면 하위 프로세스 호출에 대해 'shell=False'를 설정하는 것이 좋습니다. 이를 통해 통역사에 의존하거나 불필요한 위험을 초래하지 않고 프로세스가 직접 실행될 수 있습니다.

위 내용은 언제 `subprocess` 모듈과 함께 `shell=True`를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.