【问题标题】:path /tmp does not correspond to a regular file路径 /tmp 与常规文件不对应
【发布时间】:2016-09-11 21:09:48
【问题描述】:

这发生在我有

  • /tmp 目录中的可执行文件(例如 /tmp/a.out)
  • 它由 root shell 运行
  • Linux
  • selinux on(RedHat、CentOS 等默认)

显然,尝试以 root 身份运行位于 /tmp/ 目录中的可执行文件会撤销权限。除了关闭 selinux 之外,知道如何解决这个问题吗?谢谢

【问题讨论】:

  • 它显示的错误是什么,您尝试运行什么命令?
  • 我的回答对你有用吗?
  • 里卡多,请回复。并选择合适的答案。
  • 抱歉耽搁了这么久,我终于弄明白出了什么问题。 khrm 有正确的答案,semanage 工作。 Luis Colorado 的建议是有道理的,而且我的系统更安全,因为我将 /tmp 挂载在内存中并使用 no-exec 选项,但这里的情况并非如此。感谢您的帮助!

标签: linux redhat selinux


【解决方案1】:

您可以在 /tmp 中要运行的二进制文件或目录(包含二进制文件)上设置文件上下文。

sudo semanage fcontext -a -t bin_t /tmp/location

然后restorecon:

sudo restorecon -vR /tmp/location

【讨论】:

    【解决方案2】:

    看看/tmp 目录的挂载选项,很可能你有no-exec 选项(这样做有很多安全原因,首先是任何人都可以将文件放入@987654323 @目录)

    【讨论】:

    • 虽然这是真的。但是OP面临着其他一些问题。 SELinux 在 /tmp 文件夹中阻止执行。为此,我的回答更准确。
    • 可能 SELinux 在安装 /tmp 时使用该选项阻止了 /tmp 文件夹中的执行
    • 它使用 fcontext 。这就是为什么我发布将 fcontext 更改为 bin_t
    • 是的,在像 /tmp 这样的地方使用 no-exec 选项是有意义的。但这里不是这样。使用 semanage 工作。谢谢!
    • SELinux 是避免执行任何人都可以放在/tmp 目录中的软件的好选择。我继续试图理解问题的本质......如果您要允许在所有可写目录中执行二进制文件,那么使用 SELinux 有什么意义?此外,这不是看哪个响应更准确的竞赛。我们都是志愿者,努力解决他人的问题。目的是帮助某人,而不是赢得比赛。让我为你投票,这样你就可以在比赛中领先于我。
    猜你喜欢
    • 2014-02-07
    • 2014-12-13
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多