у пользователя нет прав на запись в его собственные папки?

у пользователя нет прав на запись в его собственные папки?

Я работаю над Debian10 with php8 fpm + apache2созданием нового пользователя с группой username:usernameи установил домашний каталог для этого пользователя, расположенный по адресу

/home/username/www

конечно у меня есть chmod -Rвсе папки и файлы username:username, до того как это было www-data, когда файлы были внутри/var/html

Итак, по сути, у меня есть небольшой скрипт, пытающийся записать папку кэша, но он не работает, когда я изменяю модификатор папок на имя_пользователя:имя_пользователя. Он работает только если я изменяю модификатор папок на www-data?

папка кэша chown 755, и она работает нормально, если ее владельцем www-dataне являетсяusername

возможно ли разрешить usernameиметь разрешение на запись, например www-data?

PS: имя пользователя приведено в качестве примера настоящего.

решение1

Авозможныйподход, позволяющий usernameуправлять вещами, при этом www-dataимея доступ только для чтения из соображений безопасности и доступ для записи только при необходимости:

  • Установить usernameкак владельца и www-dataкак группу

    chown -R username:www-data /home/username/www
    
  • Дать полный доступ владельцу (чтение/запись/исполнение: 7) и доступ только для чтения группе (чтение/исполнение: 5). У Otherэтой группы нет доступа (0).

    chmod -R 750 /home/username/www
    
  • Предоставьте доступ на запись www-dataтам, где это необходимо:

    chmod -R 770 /home/username/www/path/writable/by/webserver
    

Файлы, созданные веб-сервером, будут полностью принадлежать ему ( www-data:www-data), но владелец каталога ( username) по-прежнему сможет перемещать их.

решение2

По умолчанию, когда вы устанавливаете PHP-FPM, он устанавливает один пул, который работает как www-dataпользователь. Если вы измените userи groupна /etc/php/8.0/fpm/pool.d/www.confнужного пользователя, то ваш скрипт будет работать как пользователь и www-dataне будет нуждаться в разрешениях на запись.

В вашей конфигурации по умолчанию есть эти 2 строки:

user = www-data
group = www-data

Замените эти строки на:

user = username
group = username

Перезапустите демон FPM.

service php8.0-fpm restart

Связанный контент