Безопасный способ разрешить пользователям chgrp для www-данных

У меня есть небольшой веб-сервер, используемый некоторыми друзьями для размещения личных веб-сайтов. Иногда им нужно создать папку для загрузки, которая может быть записана веб-сервером (www-data). Есть ли безопасный способ позволить обычному пользователю (не в sudoers) установить конкретную группу, членом которой он не является?

Мне кажется, это опасный вариант, но мне, возможно, придется это разрешить. Поэтому я заинтересован в безопасных способах сделать это. Написание собственного сценария и предоставление пользователям возможности sudo, вероятно, небезопасно. Я хочу попытаться использовать лучшие практики, а не просто использовать sudo chgrp, если это действительно не безопасно.

Некоторые требования * Может изменять только файлы в определенной области сервера * Может изменяться только два и из определенных групп * Не может быть взломан для повышения привилегий или других проблем безопасности.

Запуск PHP FastCGI от имени конкретного пользователя может быть хорошим решением, но как я могу обеспечить безопасную и безопасную настройку?

2 ответа

Если сайты ваших пользователей разделены на виртуальный хост, в большинстве случаев простым и безопасным способом было бы использовать apache2-mpm-itk, который позволяет ограничить каждого отдельного хоста отдельным пользователем / группой системы.

После установки apache2-mpm-itk добавьте эти строки в часть конфигурации apache:

...
        
        AssignUserId USERID GROUPID
        

Таким образом, скрипты php/perl/python в vhosts также запускаются с обычным пользователем и разрешениями.

Одна вещь, которую вы можете сделать, и я делаю это, это использовать suexec, чтобы указать, что PHP-скрипты каждого пользователя выполняются под их собственной учетной записью пользователя или группы.

Для этого вам также нужно запустить PHP как модуль FastCGI и запустить mod_fcgid в Apache (подсказка: вы также можете использовать Apache Worker MPM). Установка немного сложна - вам нужны скрипты-обертки (вы можете обойти это, используя suphp, но я не пробовал).

У меня так, что PHP (и все процессы CGI) работают как www-data:<username>, Затем, если пользователи хотят иметь возможность загружать PHP в свою собственную папку, они могут просто установить флаг записи группы самостоятельно.

Или просто запустите PHP как <username>:<username> и им даже не придется это делать.

Другие вопросы по тегам