Как мне предоставить пользователю www-data доступ к папке в моей домашней папке?

У меня есть папка: /home/myuser/folderA

Я хочу предоставить пользователю www-data доступ на запись к вышеуказанному, в то время как "myuser" продолжает иметь обычный доступ (поскольку в любом случае это домашняя папка myuser).

Какие команды мне нужно использовать?

Примечание: Я не хочу www-data чтобы иметь доступ к любым другим папкам в /home/myuser/.

Заранее спасибо.

Во-первых, добавьте себя в группу www-data

usermod -a -G www-data (your username)

Затем:

chgrp www-data /home/myuser/folderAchmod g+rwxs /home/myuser/folderA

Должно сработать, если только разрешения на вашем /home/myuser не разрешайте доступ другим пользователям.

Первая команда изменяет групповое право собственности на папку на право собственности веб-сервера. Вторая команда дает членам www-data группируйте права на чтение, запись, ввод в каталог и группу s флаг гарантирует, что любые файлы, созданные внутри этого каталога, будут принимать www-data как группа - поэтому, если вы создаете файл как myuser то www-data пользователь будет иметь доступ.

Примечание. это также зависит от umask настройки как вашей учетной записи пользователя, так и веб-сервера: вам необходимо убедиться, что файлы, созданные в FolderA, имеют группу rw доступ (и каталоги, созданные в группе потребностей rwx)

Если ваш веб-сервер не имеет прав на ввод в ваш /home/myuser реж (вполне разумно), тогда это не попадет туда, если вы не сделаете что-то еще. Два солнца:

  1. sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA (это уродливый взлом, и его придется повторить после перезагрузки. Но мощный трюк также может быть использован для того, чтобы сделать папки доступными внутри SSH-тюрем.)

  2. Просто переместите общую папку в другое место, например /home/shared-stuff/folderA.

2-й вариант самый приятный. Допустим, материал в FolderA действительно общедоступен, и вам все равно, кто его увидит, вы можете настроить его следующим образом

sudo mkdir -m777 /home/shared-stuff

Затем вы можете поместить внутрь этого, скажем, FolderA с разрешениями, указанными выше, и FolderB, к которому www-data не должен иметь доступа с разными разрешениями, например

$ cd /home/shared-stuff ; ls -ldrwxrwsr-x 2 myuser www-data   4096 Jan 17 21:46 folderAdrwxrwx--- 2 myuser myuser     4096 Jan 17 21:46 folderB

Другой способ - изменить имя пользователя непосредственно в конфигурации apache, это если оно ваш локальный компьютер и вы сохраняете изображения из другого места, что приведет к нарушению любых разрешений, сделанных для этой папки. Также делать, если у вас есть только 1 пользователь и вас не волнуют www-данные!

$ sudo vi /etc/apache2/apache2.conf

Найдите пользователя и группу и поместите свой
User <Your User>
Group <Your Group>

$ sudo service apache2 restart