2017-04-26 1 views
8

sudo -H는 무엇을합니까?

$ pip install virtualenv 

와 VIRTUALENV 설치하려고하면 나는

IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/virtualenv.py' 

그래서 내가 VIRTUALENV

$ sudo pip install virtualenv 

를 설치 sudo를 사용 권한 거부 오류가 발생했습니다 그러나 경고가 나타났다 :

디렉토리 '/ Users/petertao/Library/Caches/pip/http'또는 상위 디렉토리 은 현재 사용자가 소유하지 않으며 캐시는 을 사용하지 않도록 설정되었습니다. 해당 디렉토리의 사용 권한과 소유자를 확인하십시오. sudo로 pip를 실행하는 경우 sudo의 -H 플래그를 원할 수 있습니다.

디렉토리 '/ Users/petertao/Library/Caches/pip'또는 해당 상위 디렉토리는 현재 사용자가 소유하지 않으며 캐싱 휠은 을 사용하지 않도록 설정되었습니다. 해당 디렉토리의 사용 권한과 소유자를 확인하십시오. sudo로 pip를 실행하는 경우 sudo의 -H 플래그를 원할 수 있습니다.

sudo의 -H 플래그는 무엇을합니까? 일반적으로

+4

'sudo'를 검색하여 이것을 찾을 수 있었고'sudo manual '(https://www.sudo.ws/man/1.8.18/sudo.man.html) 페이지에'-H'가 적혀있는 것을 볼 수 있습니다. "HOME 환경 변수를 대상 사용자의 암호 데이터베이스 항목에서 지정한 홈 디렉토리로 설정하십시오." – metatoaster

+3

게시하기 전에 기본 조사가 부족하기 때문에이 질문을 주제와 다르게 끝내기로했습니다. – Prune

+3

돌아와 주셔서 감사 드리며 모든 사람에게 사소한 질문 인 것처럼 보이면 사과드립니다. 파이썬, 파이핑, 터미널을 사용하기 시작했습니다. 내가 아직도 이해하려고하는 것은 홈 디렉토리에 HOME 환경 변수를 설정하는 것이 이러한 경고를 수정하는 방법입니다. –

답변

18

:

man sudo 또는 https://linux.die.net/man/8/sudo 정확한 텍스트가 다를 수 있지만 그것과 유사합니다.

-H

암호 데이터베이스에 지정된 보안 정책은 (기본적으로 루트) 대상 사용자의 홈 디렉토리에 HOME 환경 변수를 설정 한 -H (HOME) 옵션 요청

. 정책에 따라 이것이 기본 동작 일 수 있습니다.

그렇다면이 옵션을 선택하는 이유는 무엇입니까? 일반적으로 "sudo"를 사용하면 $ HOME 환경 변수가 변경되지 않습니다. 예를 들어

:

echo $HOME $USER 
/home/testuser testuser 

sudo bash -c 'echo $HOME $USER' 
/home/testuser root 

sudo -H bash -c 'echo $HOME $USER' 
/home/root root 

당신이 볼 수있는 내가 "testuser를"을 "루트"에서 오전,하지만 무엇 sudo는 동안 홈페이지가 설정되어 $ 사용자 -H 정상 sudo는 변경 또한 변수를 "my"홈 디렉토리에서 root의 홈 디렉토리로 변경합니다. 귀하의 경우에는

:

핍이 사용자 루트로 실행하고 루트가 소유하지 않은 '/ 사용자/petertao'로 설정 $ HOME, 물건을 수정하고 싶었되었음을 경고하고 (가장 "petertao"사용자). 경고는 pip가 $ HOME을 사용하여 파일을 체 크하지만 폴더 소유권의 불일치 때문에 자체 캐싱을 사용하지 않음을 나타냅니다.

물론 root로 실행하는 동안 root가 (거의) 전능하기 때문에 '/ Users/petertao/Library/Caches/pip'를 수정할 수 있습니다. 루트가없는 프로그램이 더 이상이 파일을 덮어 쓰거나 수정할 수 없기 때문에 나중에 문제가 될 수 있습니다. 대신 pip는 다른 사용자가 소유 한 디렉토리에 쓰기를 거부합니다.

+0

"sudo -H"를 사용하지 않는 이유가 있습니까? 아니면 보수적 인 경고입니까? 당신의 철저한 설명을 바탕으로 우리는 항상 -H를 사용해야하지만, 핍의 경고는 "sudo를 사용하는 동안 캐싱을 가능하게하려면 -H를 사용하십시오"대신 "sudo -H를 사용하고 싶습니다" – ndemou