Назад | Перейти на главную страницу

Загрузка файлов в CentOS - отказано в разрешении

Я пытаюсь загрузить файлы на веб-сервер под управлением Apache / 2.4.6 на CentOS 7, используя простой скрипт Perl. Я получаю сообщение об отказе в разрешении. Мой код:

[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 вручную, файл создается, а когда я открываю его в веб-браузере, файл не создается. Помощь будет очень признательна. Спасибо.

CentOS 7 включает SELinux, который не позволяет процессам веб-сервера записывать в домашние каталоги пользователей (хотя его можно настроить на позволять читать из домашних каталогов пользователей).

Чтобы решить проблему, выберите другой каталог и установить его контекст SELinux разрешить писать (httpd_sys_rw_content_t). Обычно, чтобы избежать проблем с SELinux, веб-контент следует помещать в каталоги в /srv/www или /var/www.