1

Я делаю конструктор сайтов, и у меня есть файл render.php , который нужно записывать в каталоги пользователей. Я не хочу давать каждому из каталогов пользователей 0777, но мне все еще нужно иметь возможность писать в них. Есть ли способ сделать это?

Пока что у меня есть:

  • render (реж) ... 0777
  • render.php ... 777 WritesTo->
  • users (dir) ....... 0777
  • index.php ..... 777

Я хочу изменить это, чтобы разрешить доступ render.php для изменения файлов пользователей, но не позволять самим файлам выполнять код.

3 ответа3

1

Если я вас правильно понимаю, я думаю, что эта процедура должна дать вам то, что вы хотите.

  1. Создайте группу renderusers для пользовательского каталога: groupadd renderusers
  2. Измените группу user каталога на renderusers: chgrp renderusers user
  3. Добавьте пользователя вашего процесса apache (apache или www-data) в эту группу: usermod -G rendergroup -a apache
  4. Изменение разрешений каталога user включить set group ID , так что группа renderusers может писать и изменять файлы и каждый вновь созданный файл будет принадлежать группе renderusers в этом каталоге: chmod -R 2770 user
  5. Перезапустите apache, чтобы он распознал его новую дополнительную группу.

Я предполагаю, что вы используете php как модуль DSO, а не через cgi.

0

Я недостаточно знаком с Apache, чтобы можно было провести процедуру настройки веб-сайта, но я могу предложить ответ на уровне разрешений Unix:

  • Определить новую группу (например, riiich_app),
  • выполните chgrp riiich_app и chmod 775 в каждом из пользовательских каталогов (и скажите им, чтобы это не менялось), а затем
  • настройте свой веб-сервер для запуска вашего render.php в группе riiich_app .
-7

Вы можете дать имени пользователя вашего веб-сервера права 0777. В случае с Apache2 это www-данные. Я не совсем уверен, как это сделать с помощью chmod, но вы можете использовать chown www-data 777 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .