sudo make install:權限被拒絕

sudo make install:權限被拒絕

我有一個關於從原始碼構建的最煩人的問題。我已經尋找答案很長一段時間了,但無處可尋……我以前從原始程式碼編譯過軟體,這讓我感到困惑。

所以我嘗試從來源安裝 python 2.7.2。我能做的很成功./configuremake看起來也運作得很好。但是當我這樣做時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但我再次遇到了這些權限問題...

我使用的是 Ubuntu 10.04LTS。

答案1

我相信你所遇到的其實是一個名為「root squash」的 NFS 策略。使用者需要特定主機上的 root 權限的情況並不少見,但您不希望他們在共用 NFS 磁碟區上擁有相同類型的權限。因此,提供本機 root 存取權不允許使用者對任何已安裝的 NFS 磁碟區進行粗暴操作並存取/修改其他使用者的檔案 - NFS 伺服器會將 root 的 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

嘗試將其 chown-ing 給您的用戶。也就是說,在目錄中使用“sudo chown user ./*”(將使用者替換為您的使用者名稱),它將將該目錄中所有檔案的擁有者變更為您。

相關內容