【问题标题】:perl script fails to change group for file uploaded with apache on linuxperl 脚本无法更改在 Linux 上使用 apache 上传的文件的组
【发布时间】:2014-09-10 06:02:52
【问题描述】:

我正在使用 perl cgi 脚本通过 Apache 在 Linux 上上传文件。该文件的所有者:组按预期设置为 apache:apache。我希望 user1 可以访问该文件,但不能访问其他文件。 apache用户是user1默认组的成员,可见如下:

[user1@files ~]$ grep user1 /etc/group
user1:x:513:apache

作为 apache 运行的 perl 脚本以下列行结束:

system("ls -l $file")
my $uid = getpwnam( 'apache' );
my $gid = getgrnam( 'user1' );
print "<br />attempting: chown $uid, $gid, $file<br />";
chown $uid, $gid, $file or die "$!";

下面的输出显示尝试更改组失败:

-rw-r----- 1 apache apache 197927 Jul 19 02:10 /var/www/uploads/testfile.txt
attempting: chown 48, 513, /var/www/uploads/testfile.txt
Software error:
Operation not permitted at /var/www/cgi-bin/upload.pl line 67.

知道为什么 apache 用户不能更改文件的组吗?

【问题讨论】:

    标签: linux apache perl cgi


    【解决方案1】:

    请检查上传文件夹的权限,它可能既没有 apache 所有权,也没有 apache 访问权限。

    chmod 755 /var/www/uploads
    

    然后执行脚本,它会工作。

    【讨论】:

    • 脚本按预期由 apache 开始执行,并且上传目录的模式为 uid gid: drwxrwx--- apache user1。问题是脚本中的 chown 最后失败了。当我尝试相同的脚本但将所有引用 apache 的内容更改为 user2 时,chown 工作正常。
    • 是的,您必须授予 755 权限(或)在有权访问上传文件夹的组中添加 user2 才能解决问题
    猜你喜欢
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    相关资源
    最近更新 更多