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

разные разрешения, запускающие скрипт из веб-браузера или пользователя www-data

Я хочу, чтобы 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. Какой смысл добавлять пользователя в группу, если он не пользуется ее разрешениями?