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但又遇到了那些权限问题...

我正在使用 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文件,那么您可以禁用 root squash(也许不是一个好主意)。
  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 替换为您的用户名),它会将目录中所有文件的所有者更改为您。

相关内容