【问题标题】:/usr/local/include/SFML premission denied/usr/local/include/SFML 权限被拒绝
【发布时间】:2013-03-03 00:22:32
【问题描述】:

在一个使用 SFML 的项目中,我试图通过 make 编译我的队友部分。在他的 ubuntu 上一切正常,但在我的 debian 上一切都出错了。

我将 libsfml 所需的所有包含放在 /usr/local/include/ 文件夹中,并将 libsfml 的所有 .so 放在 /usr/local/lib/ 上

ls -l /usr/local/include : drw-rwSrw- 7 root User size date SFML

我不知道大写的 S 是否是问题的关键,我以前从未见过。 在 sudo 上使一切正常。但我不应该是 root 来编译这样的项目。

有什么建议吗?

这是错误输出:

LibrarySFML.hpp:14:29: error: /usr/local/include/SFML/Graphics.hpp: Permission denied
LibrarySFML.hpp:15:27: error: /usr/local/include/SFML/System.hpp: Permission denied
LibrarySFML.hpp:16:27: error: /usr/local/include/SFML/Window.hpp: Permission denied

LibrarySFML.hpp 第 14-15-16 行:

#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>

【问题讨论】:

    标签: linux makefile debian sfml


    【解决方案1】:

    大写S确实说明了问题。从 coreutils ls 信息页面:

    如果设置了 set-user-ID 或 set-group-ID 位,但 对应的可执行位没有设置。

    这意味着在目录上设置了 setgid 位(这会强制继承组所有权,这里没有意义),但可执行位不是。对于目录,这是在目录中查找文件的能力。只有 root 可以看到该目录中的文件,并且只有这样,因为 root 可以忽略它。有人将目录的模式设置为只能用于文件的模式。

    chmod 2775 /usr/local/include/SFML
    

    应该可以解决问题。 (或者 755,如果您想使用更传统的仅 root 权限;Debian 正在迁移,不再使用 staff 组。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 2018-02-14
      • 2015-02-22
      • 1970-01-01
      相关资源
      最近更新 更多