[python] ‘sudo pip’를 실행하면 어떤 위험이 있습니까?

때때로 나는 아래에서 실행하는 것이 “잘못되었다”또는 “나쁘다”라고 강조하는 코멘트 나 응답 을 접하게 되지만, 훨씬 더 간단하거나 심지어 필요한 경우 (내가 여러 도구를 설정하는 방법 포함)가 있습니다. 그렇게 실행하십시오.pipsudo

실행과 관련된 위험은 무엇입니까 pip아래는 sudo?


제목에도 불구하고 위험에 대한 정보를 제공하지 않는 질문과 동일한 질문 아닙니다. 이것은 또한 사용을 피하는 방법에 대한 질문이 아니라 sudo특히 왜 원하는지에 대한 질문 입니다.



답변

당신이 실행하는 경우 pipsudo, 당신은 실행 setup.py으로 sudo. 즉, 인터넷에서 임의의 Python 코드를 루트로 실행합니다. 누군가 PyPI에 악성 프로젝트를 올려 설치하면 공격자에게 시스템에 대한 루트 액세스 권한을 부여합니다. pip및 PyPI에 대한 최근 수정 이전에 공격자는 신뢰할 수있는 프로젝트를 다운로드 할 때 중간자 공격을 실행하여 코드를 삽입 할 수도 있습니다.


답변

명백한 보안 위험 (당신이 알고있는 소프트웨어를 설치할 때 실제로 낮다고 생각하는) 외에도 다른 답변을 가져 오는 또 다른 이유가 있습니다. 시스템과 함께 제공되는 Python은이 시스템의 일부이며 시스템을 관리하려면 소프트웨어를 설치 / 업그레이드 / 제거 할 때 패키지 관리자와 같은 시스템 유지 관리 용 도구를 사용합니다. 타사 도구 (이 경우 pip)를 사용하여 시스템 소프트웨어를 수정하기 시작하면 시스템 상태에 대해 보장 할 수 없습니다. 또 다른 이유는 sudo가 당신에게 기회가 없거나 그렇지 않으면 가질 기회가 아주 적을 문제를 가져올 수 있다는 것입니다. 예를 들어 Python에서 sys.executable과 sys.version 간의 불일치 참조

Distros는이 문제를 인식하고이를 완화하려고합니다. 예를 들어 Fedora – sudo pip를 안전하게 만들고 Debian – site-packages 대신 dist-packages .


답변

그런 식으로 pip를 사용한다는 것은 시스템에 무엇이든 만들 수있는 수준까지 신뢰한다는 것을 의미합니다. pip뿐만 아니라 신뢰할 수없는 소스에서 다운로드하고 실행하는 모든 코드는 악성 일 수 있습니다.

그리고 pip에는 모든 권한이 필요하지 않으며 특정 파일 및 디렉토리에 대한 쓰기 권한 만 필요합니다. 시스템의 패키지 관리자를 사용할 수없고 가상 환경으로 가고 싶지 않다면 python 설치 디렉토리에 대한 쓰기 권한이있는 특정 사용자를 생성하여 pip에 사용할 수 있습니다. 그렇게하면 pip가 할 수있는 것과하지 않는 것을 더 잘 제어 할 수 있습니다. 그리고 당신은 sudo -u그것을 위해 사용할 수 있습니다 !


답변

“잘못된”유일한 점 sudo은 수퍼 유저 및 루트 역할을한다는 것입니다. 이는 잘못된 명령으로 설치를 잠재적으로 파괴 할 수 있음을 의미합니다. PIP는 특정 프로그램에 대한 패키지 유지 관리이므로 변경하려면 이러한 액세스가 필요합니다.


답변