2014-01-24 2 views
0

Мне нужно слушать порт linux для запуска моего сервиса. Итак, я всегда запускаю программу python, чтобы начать с sudo previlage, что сделало файлы, созданные программой, такими как pycahee и .pyc-файлы также получают полномочия суперпользователя, файлы и каталоги могут быть удалены только в режиме sudo. Это очень неудобно. Итак, есть ли способ указать python для создания обычной папки и файлов?Python как создать папку pycache, не используя полномочия суперпользователя?

ответ

0

Выполнение скрипта как root, так что вы можете прослушивать в привилегированных портах, не является хорошей практикой (если только сценарий действительно не требует root).

Если ваш сценарий не требует root, то я бы рекомендовал использовать setuid/setgid для удаления привилегий после того, как вы установили привилегированный порт;

Об этом подробно было сказано здесь;

Dropping Root Permissions In Python

Edit: OP отметил, что pyc файл, созданный еще имеет прав суперпользователя. Вы можете использовать бит suid (chmod u+s script.py), затем setuid(0), чтобы получить права доступа root во время выполнения, гарантируя, что права собственности на файл не являются root. Установка бита suid только для владельца файла также означает, что другие пользователи не могут злоупотреблять битом suid.

+0

drop привилегия может работать, но как насчет самого первого файла py? Pyc все еще создан под правом прав root? – user2003548

+0

Хорошая точка, ответ обновлен, чтобы отразить бит suid. – sleepycal

+0

Это исправить вашу проблему в конце? Не забывайте повышать, если это сработает для вас :) – sleepycal

Смежные вопросы