在 CentOS 中上传文件-权限被拒绝

在 CentOS 中上传文件-权限被拒绝

我正在尝试使用简单的 Perl 脚本将文件上传到在 CentOS 7 上运行 Apache/2.4.6 的 Web 服务器。我收到一条权限被拒绝的消息。我的代码:

[user@machine cgi-bin]$ cat test.pl 
#!/usr/bin/perl

use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use strict;

print header;
print start_html(-title => "Test");

print "<center> <h1> Hello </center>\n";

my $filename = "/home/apache/test.txt";

open(my $FILE, ">$filename"); 
if(-e $filename) {
    print "$filename exists\n"; 
    print $FILE "Hello\n";}
else {
    print "$filename does not exist\n";}

close($FILE);

print end_html;

在查看了以前的答案后,我将权限更改为 /home/apache 目录,并将所有者更改为 apache。

drwxrwxrwx.  2 apache   root       37 May 30 18:54 apache

但是,当我手动运行 test.pl 脚本时,文件会创建,而当我在 Web 浏览器中打开它时,文件不会创建。非常感谢您提供帮助。谢谢。

答案1

CentOS 7 包含 SELinux,它不允许 Web 服务器进程到用户主目录(尽管可以设置为允许来自用户主目录)。

要解决该问题,请选择其他目录,然后设置其 SELinux 上下文允许写入(httpd_sys_rw_content_t)。通常,为了避免 SELinux 出现问题,Web 内容应放置在/srv/www或下的目录中/var/www

相关内容