Perl:不允许操作

ling

我没有编写的较旧的脚本之一是在Perl中,今天已经停止工作了。我试图了解发生了什么,但对perl一无所知。

输出如下:

can't unlock rss: Operation not permitted at /home/ec2-user/news/lib/Utils.pm line 107.

从代码段中

sub unlock {
    my $ss = shift || ();
    my $feed = shift;
    `kill -9 $_` for @$ss;
    unlink "/tmp/$feed.lock" or die "can't unlock $feed: $!";      #line 107
    1; 
}

奇怪的是,错误仅发生在RSS上,当其他提要调用此子时,它们就可以正常工作。有什么建议?

编辑1

其他提要具有相同的chmod,并且工作正常,又被删除

编辑2

从我的收集来看,这是一个特权问题。有问题的文件使用

sub lock
{
    my $feed = $_[1];
    my $pc = [split '[\r\n]+', `ps aux | grep /$feed.pl | grep -v grep`];
    my $ss = [map {/^[-\w]+\s+(\d+).+?\s+Ss\s+/ and $1} @$pc];
    unlock(0, $feed) if @$pc < 2 && -f "/tmp/$feed.lock";
    unlock($ss, $feed) if @$ss && -f "/tmp/$feed.lock";
    die "$feed is already run" if -f "/tmp/$feed.lock";
    return `touch /tmp/$feed.lock`;
}
口渴

“不允许操作”为EPERM取消链接仅在以下情况下应返回此值:

[EPERM]以path命名的文件是目录,并且调用进程没有适当的特权,或者实现禁止在目录上使用unlink()。

[EPERM]或[EACCES]在包含path参数所引用文件的目录上设置了S_ISVTX标志,并且该过程不满足XBD Directory Protection中指定的条件

可能它不是目录,并且/ tmp启用S_ISVTX标志以确保安全是正常的(虽然以前可能没有)?因此,请阅读那里的目录保护链接,看看可能是问题所在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章