Синхронизация права доступа между lighttpd и системой - PullRequest
1 голос
/ 25 августа 2010

Мы находимся в процессе разработки приложения веб-сервера, которое работает на существующей системе Linux. Мы используем сервер lighttpd и столкнулись с некоторыми проблемами безопасности. По разным причинам мы выбрали Lua для разработки нашего приложения. Поскольку у нас уже есть пользователи, которые входят в систему с помощью ssh, мы бы хотели, чтобы пользователи, входящие в систему через веб-интерфейс, использовали одинаковые уровни доступа, имена пользователей и пароли. Предпочтительно, чтобы пользователи, выполняющие действия (они обращаются к различным файлам конфигурации в системе), должны иметь права доступа к файлам, обрабатываемым ОС, а не веб-сервером. Какие предложения здесь?

Заранее спасибо!

1 Ответ

1 голос
/ 25 августа 2010

Ваша проблема в том, что вы не можете изменить пользователя, под которым работает сервер, когда пользователь входит в систему. Поэтому вы не можете использовать безопасность на уровне ОС для управления доступом к файлам, пока вы остаетесь в контексте серверный процесс.

Вы можете объединить всех пользователей и веб-сервер в группу и использовать umask 002, чтобы все члены группы могли получить доступ ко всем файлам. В вашем коде LUA вы должны проверить, что текущий пользователь является владельцем файла, и отказаться от операции в противном случае.

Если необходимо создать новый файл, вам нужна программа SUID, которая может изменить владельца файла с «веб-сервера» на «пользователь».

В качестве альтернативы вы можете создать программу SUID, которая может изменить свой UID и которая принимает команды от веб-сервера. Когда пользователь входит в систему, вы запускаете программу с UID пользователя, а затем сообщаете ему, к каким файлам получить доступ.

...