Назад | Перейти на главную страницу

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

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

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

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

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

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

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

<virtualhost foobar.com:80>
        ...
        <IfModule mpm_itk_module>
        AssignUserId USERID GROUPID
        </IfModule>
</virtualhost>

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

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

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

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

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