Як змусити Apache запускатись як поточний користувач


44

Я думаю, що для машини для розробки зручніше запустити Apache як поточного користувача для спрощення проблеми дозволів? Як це зробити? Я думаю, що його suexec, але як його налаштувати в Ubuntu + Apache?

Відповіді:


28

Я сам додав би користувача до www-dataгрупи за допомогою ...

sudo adduser {username} www-data

Простий і ефективний. Не возитися з конфігураційними файлами чи дозволами.


6
Я робив це постійно, але це не виправить деякі проблеми, відхилені у дозволі, оскільки права групи не є такими ж, як права користувача на всі файли.
Костанос

1
Це не виправить, якщо CHMOD не дозволив групі писати.
GusDeCooL

Проблема для мене полягає в тому, що у мене локальна установка. Коли я створюю файли за допомогою свого IDE, у них є "користувач / група", і коли-небудь апаш не може читати ці файли
Postadelmaga

одне це не вирішує багато проблем з дозволами, оскільки для вашої основної групи зазвичай немає www-даних, а деякі програми php вимагають дозволу на групове записування. (joomla, wordpress)
Ерік

2
Це не вирішує проблему, коли ви створюєте файли, а www-дані не можуть видалити / редагувати їх, оскільки ваша основна група не є www-data
billy

56

Редагуйте наступний файл як корінь: / etc / apache2 / envvars

за допомогою команди:

sudo nano /etc/apache2/envvars

змініть користувача та групу на себе, якщо є лише один користувач, і у вас більше не буде проблем із дозволом.

IE, якщо ви лише увійшли та запустили сервер як користувач 'big_dog':

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

Чорт забираю, з цього питання ви могли якось змінити цього користувача на поточного користувача. Потім встановіть user_dir, у вас є тільки веб-сайти, над якими ви можете мати повний контроль (якщо ви не змінюєте це).

Перезавантажте сервер (якщо ви не впевнені, просто перезавантажте або goole), і ви готові піти.


3
Це працює як шарм! спасибі. єдине, що я додам:sudo chown big_dog.big_dog /var/lock/apache2
Костанос

3
Також, напевно, вам знадобитьсяsudo chown big_dog.big_dog -R /var/log/apache2
Костанос

На OpenSUSE-Tumbleweed (і, мабуть, на деяких інших) файл знаходиться/etc/apache2/uid.conf
Dilawar

Вам не обов'язково змінювати файл envvars, я лише оновив змінні середовища перед тим, як запустити Apache зі скриптом. Таким чином, ви не заблоковані одним користувачем, але хто-небудь запускає сценарій, він запускає апаш. Раніше я export APACHE_RUN_USER=#$(id -u)давав ідентифікатор користувача і аналогічно використовував id -gдля групи в сценарії, і в кінці я закликав apache для запуску.
inblueswithu

1

чому б ти це робив, я в минулому боровся з проблемами пермі, але це мій процес розробки з сьогоднішнього дня:

  • встановити нову коробку linux (віртуальний або локальний, як ноутбук)
  • запустіть стандартний sudo apt-get install lamp-server^процесор, щоб підняти лампу
  • зробіть посилання на мій дім, де такі проекти:

    ln -s /home/user/html /var/www/html

  • зробити посилання sym до файлу конфігурації хостів

    ln -s /home/user/html/Apache-VirtualHosts.conf /etc/apache/sites-enabled/000-default

Це воно :)

Він працює як аспект, жодних проблем з користувальницькими каретами або чимось подібним із сервером apache ,, для mysql у мене трохи довший процес ..

hth, ура


Це не стосується жодних проблем із дозволом, на які звертається більшість інших відповідей.
HörmannHH

0

Перемістивши проблему "якщо ви це зробите", ви можете знайти, де встановлено користувача для apache, запустивши:

grep www- /etc/apache2/apache2.conf

Тоді це випадок редагування цих примірників у /etc/apache2/apache2.confта перезавантаження Apache ( sudo /etc/init.d/apache2 reload).


apache2.confне містить www-для мене
Jiew Meng

У мене таке відчуття, що ти щось мав на увазі grep -HR "www-" /etc/apache2/. Якщо ви вже знаєте, що це в apache2.conf, просто відредагуйте цей файл. У моєму випадку це було не там, але в / etc / apache2 / envvars, як вказується у відповіді Еріка.
Майк

Це тому, що apache.confшукає ${APACHE_RUN_USER}і ${APACHE_RUN_GROUP}. Не www-dataбезпосередньо.
Yahya Uddin

0

створити нову групу користувачів webdevта додати www-dataдо неї користувача.

sudo addgroup webdev
sudo adduser www-data webdev

Потім вперед додайте свого користувача до цієї групи та зробіть її групою за замовчуванням для вашого користувача.

sudo adduser {your-user} webdev
sudo addgroup webdev

Останнє, що потрібно зробити, це переконатися, що група webdev має права на rwx на файли

sudo chmod 775 -R /path/to/project

Тепер єдине, що може статися, це те, що, наприклад, www-data створює новий файл журналу, і ви не можете його rwx.


1
Яка перевага цього в тому, що я просто додаю власного користувача до www-dataгрупи, тим більше, що ми говоримо про середовище розробки?
Dan

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