为什么webmin无法打开不是世界可执行文件的目录中的文件?

时间:2009-08-21 02:53:30

标签: perl file-io permissions webmin

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

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

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

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

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

4 个答案:

答案 0 :(得分:2)

目录上的ACL?

SELinux开启了?

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

检查是否有任何umask设置适用于该过程。

答案 1 :(得分:2)

  

我已将其追溯到“权限被拒绝”错误    [....] * [w] *这是非常不寻常的,因为   应用程序以root身份运行。

您确定在root失败时以open()身份运行了吗?

webmin的文档拥有能够以其他用户执行任意命令的能力,并且源代码的快速grep显示了一个名为switch_to_unix_user()的函数的实例...

答案 2 :(得分:1)

在Unix权限中,您需要对目录中的执行权限才能访问其中的任何内容(您不需要读取权限,即列出目录;您只需要执行权限即可访问内容)。所以有些东西正在被视为“其他”的用户下访问该文件,并且它没有权限

答案 3 :(得分:0)

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

相关问题