답변
당신이 실행하는 경우 pip
에 sudo
, 당신은 실행 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는 특정 프로그램에 대한 패키지 유지 관리이므로 변경하려면 이러한 액세스가 필요합니다.