Разрешить процессу без полномочий root доступ ко всем домашним каталогам без ущерба для безопасности?

Любые идеи о том, как разрешить одному без root-процессу доступ (чтение и запись) всех домашних каталогов без ущерба для безопасности? Обычные пользователи не должны иметь доступ к домашним каталогам друг друга.

Все идеи приветствуются, даже сумасшедшие (настройки nfs & kerberos?) 🙂

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

Новые файлы должны иметь владельца домашнего каталога как владельца. Возможно ли это?

Нам понадобится дополнительная информация, если вы ищете полный ответ. Из того, что я понял, вы можете зайти в список контроля доступа . Он поддерживается многими Unices и даст вам лучший контроль над тем, какой пользователь получает доступ к файлу.

Используйте с осторожностью и попробуйте сначала в виртуальной машине, если вы не на 100% удобнее.

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

Вы можете поместить список управления доступом во все домашние каталоги, которые предоставляют конкретное разрешение на выполнение пользователем или группой в каталоге. Тогда веб-сервер потенциально сможет получить доступ к любому файлу в домашних каталогах пользователей, что может обеспечить способы эскалации привилегий (по крайней мере, это расширит влияние уязвимости доступа к локальному файлу). Например, в Solaris или Linux убедитесь, что домашняя файловая система смонтирована с опцией acl и запускается

 setfacl -m user:www-data:x /home/* 

(интегрируйте это в настройку создания учетной записи). Затем сообщите своим пользователям, что их каталог ~/public_html должен быть ~/public_html для чтения пользователем www-data ; они могут выполнить эту команду:

 setfacl -R -m default:user:www-data:rx ~/public_html setfacl -R -m user:www-data:rx ~/public_html 

Другая возможность – установить все каталоги public_html пользователей в отдельное место в файловой системе. Преимущество такого подхода заключается в том, что разрешения на домашние каталоги не будут иметь значения; он даже позволяет веб-серверу запускать chroooted. В Linux вы можете сделать это для домашнего каталога:

 mount --bind /home/joe/public_html /srv/homepages/joe 

Каталог public_html и его содержимое по-прежнему должны быть доступны для www-data .

Вариант метода привязки Linux-привязки использует файловую систему bindfs . Этот метод работает на любой ОС, которая поддерживает bindfs (которая является наиболее унифицированной) и не требует каких-либо настроек ACL, за счет того, что любой файл в public_html будет доступен для чтения веб-сервером.

 bindfs -u www-data -p 500 /home/joe/public_html /srv/homepages/joe