默认情况下,“make”创建的文件没有获得可执行权限

默认情况下,“make”创建的文件没有获得可执行权限

我正在尝试构建一个项目,当我使用该命令时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执行过configand吗?makesudosu -s

相关内容