Як я можу дати користувачеві www-data папку в домашній папці?


31

У мене папка: /home/myuser/folderA

Я хочу надати користувачеві www-data запис доступу до вищезазначеного, в той час як "myuser" продовжує мати нормальний доступ (як і раніше це домашня папка myuser).

Які команди мені потрібно використовувати?

Примітка. Я не хочу www-dataмати доступ до жодної іншої папки в /home/myuser/.

Заздалегідь спасибі.

Відповіді:


46

Спочатку додайте себе до групи www-data

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

Потім:

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

Слід виконати трюк, якщо дозволи на вашому веб-сайті /home/myuserне дозволяють іншим користувачам отримати доступ.

Перша команда змінює групове право власності на папку на власність веб-сервера. Друга команда дає членам www-dataгрупи читання, права записи, введіть-каталог, і група sпрапор гарантує , що всі файли , які отримують створювані всередині цього каталогу взяти в www-dataякості групи - так що якщо ви створюєте файл як користувач матиме доступ.myuserwww-data

Nb. це також залежить від umaskналаштувань вашого облікового запису користувача та веб-сервера: вам потрібно переконатися, що файли, створені в папціA, мають груповий rwдоступ (і каталоги, створені в групі потреб rwx)

Якщо у вашого веб-сервера немає прав на введення вашого /home/myuserредактора (цілком розумно), він не збирається туди потрапляти, якщо ви не зробите щось інше. Два солі:

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

  2. Просто перемістіть загальну папку кудись інше, наприклад /home/shared-stuff/folderA.

2-й варіант найприємніший. Скажімо, матеріал у папціA насправді загальнодоступний, і вам не байдуже, хто його бачить, ви можете налаштувати його як

sudo mkdir -m777 /home/shared-stuff

Потім ви можете помістити всередину, скажімо, папку A з дозволами, як описано вище, і папкуB, до якої www-дані не повинні мати доступ з різними дозволами, наприклад

$ cd /home/shared-stuff ; ls -l
drwxrwsr-x 2 myuser www-data   4096 Jan 17 21:46 folderA
drwxrwx--- 2 myuser myuser     4096 Jan 17 21:46 folderB

що sв g+rwxs?
Т.Тодуа

"Груповий липкий" біт. Ефект пояснюється в параграфі, який починається з "Першого ..." :-)
artfulrobot

6

Ще один спосіб - це змінити ім’я користувача безпосередньо в налаштуваннях apache. Це якщо ваша локальна машина, і ви зберігаєте зображення з іншого місця, що може придушити будь-які дозволи, зроблені в папці. Також робити, якщо у вас є лише 1 користувач і вам не байдуже www-data!

$ sudo vi /etc/apache2/apache2.conf

Знайдіть користувача та групу та поставте своє
User <Your User>
Group <Your Group>

$ sudo service apache2 restart

Це рішення не здається настільки безпечним, хтось знає, які загрози безпеці спричинить цей параметр?
Fleuv

Я цілком впевнений, що це не безпечно, тому я дав точність лише локальній машині.
Shadowbob

Це рішення забезпечує весь доступ до апачі до вашої папки ...
Loenix
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.