我正在尝试构建一个项目,当我使用该命令时make
,出现以下错误:
/bin/sh: line 4: .deps/ipset_bitmap_ipmac.Tpo: Permission denied
make[2]: *** [ipset_bitmap_ipmac.lo] Error 126
该文件 .deps/ipset_bitmap_ipmac.Tpo 是make
在构建期间使用以下权限创建的:-rw-r--r--,请注意没有 x。但随后make
想立即执行该文件,但失败了。
如果我转到该文件并手动添加可执行权限,那么如果我重新运行make
.但该make
命令一旦到达下一个文件就会再次崩溃。我唯一的选择是保留chmod
每个新文件。
我的问题是,为什么make
创建这些新文件时不带 +x?
旁注:我在 CentOS5 上,umask -S
返回:u=rwx,g=rx,o=rx,sudo
根本没有帮助。
答案1
对于像这样的名称.deps/ipset_bitmap_ipmac.Tpo
,该文件很可能不是可执行的。
这里发生的事情是 Makefile 中有一行看起来像
$(SOME_VARIABLE) .deps/ipset_bitmap_ipmac.Tpo
或者更有可能
$(SOME_VARIABLE) $(ANOTHER_VARIABLE)
其中 的值ANOTHER_VARIABLE
是.deps/ipset_bitmap_ipmac.Tpo
,或者是它的一些变体。由于 makefile 或生成它的程序中存在错误,或者由于您的计算机具有不受支持的配置,因此SOME_VARIABLE
未定义变量(应该是程序的名称)。
如果您告诉我们您正在尝试构建什么项目以及您从哪里获得它,您如何解压它,您如何配置它,您运行什么构建命令,我们可能会提供更多帮助。
答案2
就你而言,我认为它可能是其他权限层。
我已经下载了ipset 6.17并且./configure
运行make
良好。
由于make调用的是/bin/sh,因此不需要执行权限,您可以通过以下方式进行测试。
创建一个没有 x 权限的脚本,并通过 shell 调用它
nicolas@~> cat script
#!/bin/bash
echo "teste"
nicolas@~> ls -l script
-rw-r--r-- 1 nicolas users 26 Abr 5 07:56 script
nicolas@~> sh script
teste
一些问题:
是否启用了selinux(使用 进行检查getenforce
)?
提取的 ipset 源目录内有哪些权限?
.deps 目录中的文件的所有权是什么?
你用or执行过config
and吗?make
sudo
su -s