setfsuid () и python 2.5.4 - PullRequest
       11

setfsuid () и python 2.5.4

0 голосов
/ 03 мая 2010

Я пытаюсь использовать setfsuid () с python 2.5.4 и RHEL 5.4. Так как он не включен в модуль os, я обернул его в собственный модуль C и установил его как модуль расширения python, используя distutils.

Однако, когда я пытаюсь использовать его, я не получаю ожидаемого результата. setfsuid () возвращает значение, указывающее на успешность (изменение от суперпользователя), но я не могу получить доступ к файлам, к которым только пользователь с новым доступом должен иметь доступ пользователя (используя open ()), указывая, что fsuid не был действительно изменен.

Я пытался проверить, что setfsuid () работает, запустив его дважды подряд с одним и тем же пользовательским вводом В результате ничего не изменилось, и при каждом вызове возвращаемое значение было со старым идентификатором пользователя, отличным от нового. Я также вызвал getpid () из модуля, и из скрипта python оба вернули один и тот же идентификатор. так что это не проблема.

На всякий случай важно отметить, что я делаю все это в рамках процесса демона Apache (WSGI).

Кто-нибудь может дать объяснение этому? Спасибо

1 Ответ

2 голосов
/ 03 мая 2010

Возможность изменить FSUID ограничена как корневыми, так и некорневыми процессами с возможностью CAP_SETFCAP. В наши дни, как правило, считается плохой практикой запускать веб-сервер с правами root, поэтому, скорее всего, вам нужно будет настроить эту возможность на файловом сервере (подробности см. man capabilities). Обратите внимание, что это может серьезно повлиять на общую безопасность вашей системы. Я бы порекомендовал подумать о создании небольшого бэкэнд-процесса, который запускается от имени пользователя root и конвертируется с вашим WSGI-приложением через локальный сокет UNIX до взлома с безопасностью высококлассной цели, такой как Apache.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...