0

我在几个服务器上使用了一个名为“webmin”的开源 Perl 包。内部主要是 Perl。

我在新的 64 位服务器上发现了一个奇怪的行为:文件被创建为空。

我将其追溯到 Perl 的内置函数中的“Permission Denied”错误,open 这是非常不寻常的,因为应用程序以 root 身份运行。我有 perl 输出 $< 和 $> 变量,他们都声称我是用户 0

这个错误似乎会影响目录中的文件,该目录不是世界可执行文件(chmod o-x $DIR)......而且它只发生在 webmin 的深处,我无法自行重现它。

这听起来对任何人来说都很熟悉吗?

4

4 回答 4

2

目录上的 ACL?

SELinux 开启了吗?

您在没有执行位的目录上收到“权限被拒绝”错误这一事实并不奇怪 - 在目录上,执行位控制访问目录的内容 - 问题是为什么执行位是没有设置。

检查是否有任何 umask 设置应用于进程。

于 2009-08-21T02:57:17.257 回答
2

我将其追溯到“Permission Denied”错误 [....] *[w]*hich 非常不寻常,因为应用程序以 root 身份运行。

您确定您在root失败时正在运行open()吗?

webmin 的文档拥有像其他用户一样执行任意命令的能力,源代码的快速 grep 显示了一个名为switch_to_unix_user()...

于 2009-08-21T03:03:18.027 回答
1

in Unix permissions, you need execute permission on a directory to access anything inside it (you don't need read permission, that's for listing the directory; you only need execute permission to access the contents). so something is accessing the file under a user that is considered "other", and it doesn't have permission

于 2009-08-21T05:43:19.460 回答
0

我有一个类似的问题,原因似乎是您尝试打开/写入的文件/目录的路径长度。在我的情况下,我试图打开一个存在并具有 777 权限的文件夹,但系统仍然失败,说该目录不存在。做了一些测试并在同一级别打开另一个文件夹但名称较短

于 2015-12-02T08:33:00.970 回答