sudo make install: 권한이 거부되었습니다.

sudo make install: 권한이 거부되었습니다.

소스에서 빌드하는 것에 대해 가장 짜증나는 질문이 있습니다. 오랫동안 답을 찾았는데 어디에서도 답을 찾을 수 없습니다. 이전에 소스에서 소프트웨어를 컴파일했는데 이것이 나를 당황하게 했습니다.

그래서 소스에서 Python 2.7.2를 설치하려고 합니다. 나는 성공적으로 할 수 있고 ./configure, 또한 make잘 돌아가는 것 같습니다. 하지만 그렇게 하면 sudo make install다양한 오류가 발생합니다.

먼저 sudo make install다음을 제공합니다.

make: stat: GNUmakefile: Permission denied
make: stat: makefile: Permission denied
make: stat: Makefile: Permission denied
make: stat: install: Permission denied
make: *** No rule to make target `install'. Stop.

그래서 나는 그랬다 chmod +rx Makefile*. 소용이 없습니다.

그러다가 sudo ls .말한다

ls: cannot access .: Permission denied

그런 다음 ls -d .권한이 다음과 같다고 말합니다.drwxr-x---

그런 다음 절박한 조치로 chmod +rx .. 그것은 나에게 다음을 주었다:

make: stat: Modules/config.c.in: Permission denied
make: *** No rule to make target `Modules/config.c.in', needed by `Makefile'. Stop.

그럼 약간의 진전이... 여기서 무슨 일이 일어나고 있는 걸까요? 일종의 권한 문제인 것 같습니다. 나는 sudo가 해결책이 될 것이라고 생각했지만 여기에는 분명히 다른 일이 일어나고 있습니다... 시도했지만 sudo -s권한 문제가 다시 발생합니다...

우분투 10.04LTS를 사용하고 있습니다.

답변1

나는 당신이 겪고 있는 것이 실제로 "루트 스쿼시"라고 불리는 NFS 정책이라고 믿습니다. 사용자가 특정 호스트에서 루트가 필요한 것은 드문 일이 아니지만 공유 NFS 볼륨에 대해 동일한 종류의 권한을 갖기를 원하지 않습니다. 따라서 로컬 루트 액세스 권한을 부여한다고 해서 사용자가 마운트된 NFS 볼륨에 대해 거칠게 실행하고 다른 사용자의 파일에 액세스/수정하는 것을 허용하지 않습니다. NFS 서버는 루트의 uid를 0에서 65534( nobody)로 매핑하므로 다음을 수행할 수 있습니다. 예제에 디렉토리를 나열하지도 마세요.

따라서 몇 가지 옵션이 남습니다.

  1. nobody최상위 디렉터리에서 파일에 대한 "기타" 읽기/쓰기 권한을 부여하여 빌드에서 모든 파일에 액세스할 수 있도록 할 수 있습니다. (충분할 수도 있고 충분하지 않을 수도 있습니다. 예를 들어 다음과 같은 경우 디렉터리 chmod -R o+rw .에 액세스해야 할 수도 있습니다.) o+x검색해야 합니다.)
  2. NFS 서버의 /etc/exports파일에 접근할 수 있다면 루트 스쿼시를 비활성화할 수 있습니다(아마 좋은 생각은 아닐 것입니다).
  3. /usr/local/src, 등 /usr/src의 로컬 디렉터리에 구축하거나 . 이것은 아마도 가장 적은 두통을 유발하는 옵션일 것입니다./tmp/scratch/myuser

답변2

sshfs를 사용하는 경우 -o allow_other옵션을 사용하여 마운트하십시오.

$ sudo sshfs -o allow_other hostfolder localfolder

user_allow_other그 전에 설정 을 해야 해/etc/fuse.conf

답변3

사용자에게 권한을 부여해 보세요. 즉, 디렉토리에 있을 때 "sudo chown user ./*"(user를 사용자 이름으로 대체)를 사용하면 디렉토리에 있는 모든 파일의 소유자가 귀하로 변경됩니다.

관련 정보