Я хочу, чтобы Perl записывал в файловую систему моего сервера, но у меня проблема. Ошибка при проверке разрешений (с -w
). Я свел проблему к простейшему выражению:
#!/usr/bin/perl
print "Content-type:text/html\n\n";
$dir = "/var/www/stock/my/dir";
print $>,"\n"; # UID
if(-w $dir){ print "can write\n" }
else { print "cannot\n" }
Это результат при запуске с пользователем www-data
www-data@hersent:~/stock$ perl test.pl
Content-type:text/html
33
can write
И при доступе через веб-браузер : Скриншот
Я думаю, единственная разница в том, что при запуске через веб-браузер задействованы nginx и fastcgi-wrapper. Но они также работают как www-данные
root@hersent:/var/www/stock# ps aux | grep -E "cgi|nginx"
www-data 474 0.0 0.1 30092 5028 ? Ss Feb14 0:00 /usr/bin/perl /usr/bin/fastcgi-wrapper.pl
www-data 5131 0.0 0.0 29596 2496 ? Ss Feb24 0:00 /usr/sbin/fcgiwrap -f
root 6324 0.0 0.0 32708 956 ? Ss Feb24 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
www-data 6325 0.0 0.1 33320 6316 ? S Feb24 0:56 nginx: worker process
Итак, я потерялся сейчас. Что я могу сделать ? Спасибо
Хорошо, как убедил меня @Tim, я установил права доступа к каталогу на 775 (rwxrwxr-x), а владельцам - на user:www-data
. Ранее было установлено user:user
и www-data
был в группе user
.
# sudo -u www-data groups
www-data user
Возможно, мне все еще что-то не хватает в знаниях пользователей / групп Linux. Какой смысл добавлять пользователя в группу, если он не пользуется ее разрешениями?