Говоря об этой функции http://httpd.apache.org/docs/current/howto/public_html.html
Есть ли способ (КАК?), Чтобы Apache взял (setuid) идентификатор каждого «~ пользователя» вместо того, чтобы делать все под идентификатором пользователя www-data?
Здесь есть связанный вопрос: Разрешения Apache для каждого пользователя
В этом вопросе один ответ на самом деле советует не делать то, о чем я прошу:
Если бы вы запускали по одному экземпляру apache для каждого пользователя и этот apache принадлежал бы пользователю, вы бы тем самым предоставили разрешения apache для записи во все каталоги пользователя. Обычно это вообще не считается хорошей идеей.
Тот факт, что ответчик заявил, что вам НЕ СЛЕДУЕТ этого делать, по-видимому, означает, что вы МОЖЕТЕ это сделать. Итак, теперь я просто спрашиваю, КАК это сделать, потому что у меня есть очень конкретный вариант использования, который требует этого, но запуск отдельного экземпляра для каждого идентификатора пользователя слишком ресурсоемкий. Итак, есть ли более простой способ?
Вы можете попробовать Apache ИТК МПМ. Он работает как традиционная модель предварительной вилки Apache, но назначает свой UID для каждого виртуального хоста. А если вы используете Apache 2.4, вы можете использовать mod_rewrite для создания ~/
пути для использования UID этого конкретного домашнего сервера в соответствии с инструкциями домашней страницы ITK MPM.
RewriteEngine on
RewriteRule /~([a-z]+)/ - [E=ITKUID:$1]
AssignUserIDExpr %{reqenv:ITKUID}
Да, вы бы включили SuExec.
https://httpd.apache.org/docs/2.4/suexec.html
В частности, раздел, который начинается Использование suEXEC.
Цитируется здесь для удобства:
Использование suEXEC
Запросы для программ CGI будут вызывать оболочку suEXEC, только если они предназначены для виртуального хоста, содержащего директиву SuexecUserGroup, или если они обрабатываются модулем mod_userdir.
Виртуальные хосты: один из способов использования оболочки suEXEC - использование директивы SuexecUserGroup в определениях VirtualHost. Установив для этой директивы значения, отличные от идентификатора пользователя основного сервера, все запросы ресурсов CGI будут выполняться от имени пользователя и группы, определенных для этого ''. Если эта директива не указана для '', предполагается, что идентификатор пользователя основного сервера.
Каталоги пользователей: запросы, обрабатываемые 'mod_userdir', будут вызывать оболочку suEXEC для выполнения программ CGI под идентификатором пользователя запрошенного каталога пользователя. Единственное требование, необходимое для работы этой функции, - это чтобы для пользователя было разрешено выполнение CGI и что сценарий должен соответствовать проверкам безопасности, указанным выше. См. Также параметр времени компиляции --with-suexec-userdir.
Вам нужно будет застраховать '--with-suexec-userdir' Параметр времени компиляции включен в вашей сборке Apache.