Я пытаюсь построить api, используя django, который должен изменять iptables с использованием параметров POST. Я использую django 1.4, djangorestframework, python-iptables. Проблема, с которой я сталкиваюсь, заключается в том, что для python-iptables необходим root-доступ для изменения правил iptables. Я могу изменить правила iptables, выполнив $ sudo python
, и из оболочки python я могу изменить эти правила. Также я могу изменить эти правила, используя модуль iptdump, который принимает параметры iptables и создает те правила, которые я могу впоследствии сохранить в файле (iptables.rules.txt), и использовать . Но это всегда будет запрашивать у пользователя пароль root. Есть ли способ, которым я могу предоставить привилегии администратора приложения django, чтобы я мог обойти запрос пароля sudo.Предоставление доступа к корневой папке django?
2
A
ответ
3
Если вам действительно нужна часть приложения для запуска от имени пользователя root, вы можете переписать его как демон и связаться с ним из основного приложения Django, как предлагается в this answer. Я бы рекомендовал это только в том случае, если приведенная ниже альтернатива не соответствует вашим требованиям.
Альтернатива sudo iptables-restore < iptables.rules.txt
гораздо проще, просто сказать Sudo не запрашивать пароль только для этой команды, добавив в ваш /и т.д./sudoers файла:
djangouser ALL=(ALL) NOPASSWD: /sbin/iptables-restore
Где djangouser
это пользователь Процесс Django работает как.
EDIT: Вы можете избежать написания промежуточного файла, посылая новые IPTables непосредственно в процессе iptables-restore
:
import iptdump
import subprocess
ipt = iptdump.Iptables()
proc = subprocess.Popen(['sudo', '/sbin/iptables-restore'],
stdin=subprocess.PIPE)
proc.communicate(ipt.dump())
Смежные вопросы
- 1. права доступа к файлам сброса на корневой папке макинтош
- 2. Ошибка доступа к папке с корневой папкой Azure CentOS
- 3. Project путь к корневой папке
- 4. Предоставление открытого доступа к корневому каталогу svn
- 5. .htaccess в корневой папке
- 6. Доступ к корневой папке док-станции
- 7. Предоставление доступа к пользовательской странице?
- 8. Предоставление доступа к новому хосту?
- 9. Предоставление доступа к мастеру дб
- 10. Предоставление доступа к сотням SP?
- 11. Django Admin - Предоставление сотрудникам доступа к определенным областям по умолчанию
- 12. Django admin - предоставление пользователям доступа к определенным объектам/полям?
- 13. Предоставление доступа Права доступа к файлу определенному пользователю
- 14. AWS S3 Предоставление доступа ко всей папке - C#
- 15. Subfolder .htaccess перенаправляет к корневой папке
- 16. Как применить класс css к корневой папке?
- 17. нужно перенаправить к подлинной корневой папке
- 18. Как получить доступ к корневой папке проекта
- 19. Предоставить доступ к корневой папке Cydia
- 20. Символическая ссылка перенаправляет к корневой папке
- 21. Доступ к корневой папке для клиентской стороны
- 22. Права доступа к папке Apache
- 23. ограничение доступа к папке Apache
- 24. Защита доступа к папке (IIS)
- 25. Apache ограничение доступа к папке
- 26. Netbeans IDE (HTML5) - Предоставление доступа к внешней папке при использовании коннектора Netbeans
- 27. Как получить доступ к корневой папке из файла docker, который не находится в корневой папке
- 28. Предоставление доступа пользователей
- 29. Предоставление доступа к местоположениям Firebase группе пользователей
- 30. Предоставление моего доступа функции к внешним переменным
эй спасибо это работает, но есть способ, что я могу перепускной Судо запрос на ввод пароля. – Saad
@Saad строка в **/etc/sudoers ** должна предотвратить запрос пароля, вы уверены, что код работает как пользователь, указанный в sudoers? –
Да, я сделал это, наконец, спасибо – Saad