我在几台服务器上使用名为“webmin”的开源Perl包。它内部主要是Perl。
我在新的64位服务器上发现了一个奇怪的行为:文件被创建为空。
我在Perl的内置函数open
中将其追溯到“Permission Denied”错误
这是非常不寻常的,因为应用程序以root身份运行。
我有perl输出$<和$>变量,他们都声称我是用户0
这个bug似乎会影响目录不是世界可执行文件(chmod o-x $DIR
)的目录中的文件...而且它只发生在webmin的深处,我无法重现它独自一人。
这听起来对任何人来说都很熟悉吗?
答案 0 :(得分:2)
目录上的ACL?
SELinux开启了?
您在没有执行位的目录上收到“权限被拒绝”错误的事实并不令人惊讶 - 在目录上,执行位控制访问目录的内容 - 问题是为什么执行位未设置。
检查是否有任何umask设置适用于该过程。
答案 1 :(得分:2)
我已将其追溯到“权限被拒绝”错误 [....] * [w] *这是非常不寻常的,因为 应用程序以root身份运行。
您确定在root
失败时以open()
身份运行了吗?
webmin的文档拥有能够以其他用户执行任意命令的能力,并且源代码的快速grep显示了一个名为switch_to_unix_user()
的函数的实例...
答案 2 :(得分:1)
在Unix权限中,您需要对目录中的执行权限才能访问其中的任何内容(您不需要读取权限,即列出目录;您只需要执行权限即可访问内容)。所以有些东西正在被视为“其他”的用户下访问该文件,并且它没有权限
答案 3 :(得分:0)
我有类似的问题,原因似乎是您尝试打开/写入的文件/目录的路径长度。 在我的情况下,我试图打开一个存在的文件夹,并拥有777作为权限,但仍然系统失败说该目录不存在。 做了一些测试并打开同一级别但名称较短的另一个文件夹是成功的