Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 11, 2016 18:05:44

carter85
Зарегистрирован: 2013-10-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск скрипта с правами root (apache)

Всем привет

Написал веб интерфейс с множеством скриптов, для своих тривиальных задач на сервере, запускаю через apache
Хотелось бы запускать некоторые скрипты с правами, чтобы можно было к примеру создавать каталоги менять права, создавать конфиги для nginx итд(вообщем всё что только захочу через скрипт), ну вообщем с правами root.
Вопрос:

как написать скрипт, чтобы можно было вызвав этот скрипт через веб морду, делать все манипуляции с сервером?

1) как сделать секьюрно?
2) как сделать не секьюрно?

Офлайн

#2 Апрель 12, 2016 05:42:39

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

запуск скрипта с правами root (apache)

Ну можно писать через веб-морду задания в базу, файлы и т.д. А скрипты крутить от рута по крону и пусть они читают и выполняют эти задания. Только фигня это все, не вижу разницы как вас поломают - получив рута или поствив задание от имени веб-сервера.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано PooH (Апрель 12, 2016 05:43:08)

Офлайн

#3 Апрель 12, 2016 10:04:56

carter85
Зарегистрирован: 2013-10-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск скрипта с правами root (apache)

1) Ну можно писать через веб-морду задания в базу, файлы

2) А скрипты крутить от рута по крону и пусть они читают и выполняют эти задания

Можно пожалуйста пояснить?

Офлайн

#4 Апрель 12, 2016 10:18:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

запуск скрипта с правами root (apache)

carter85
Обычно под скриптами понимаются некие небольшие (или большие) утилиты, которые не работают в рамках http-запроса, а запускаются отдельными процессами. Думаю, именно так вас понял PooH.
А ответ на ваш вопрос, думаю, к питону прямого отношения не имеет. Ваше wsgi-приложение будет работать с правами того пользователя, который его запустил. Добавьте этого пользователя в соответствующие группы и будут права. Посмотрите вообще всех пользователей, у вас наверняка есть пользователи свзязанные с веб-серверами.



Офлайн

#5 Апрель 12, 2016 10:58:04

carter85
Зарегистрирован: 2013-10-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск скрипта с правами root (apache)

FishHook
carter85Обычно под скриптами понимаются некие небольшие (или большие) утилиты, которые не работают в рамках http-запроса, а запускаются отдельными процессами. Думаю, именно так вас понял PooH.А ответ на ваш вопрос, думаю, к питону прямого отношения не имеет. Ваше wsgi-приложение будет работать с правами того пользователя, который его запустил. Добавьте этого пользователя в соответствующие группы и будут права. Посмотрите вообще всех пользователей, у вас наверняка есть пользователи свзязанные с веб-серверами.


Если запустить этот питон скрипт через консоль(от рута), то само собой всё работает.

конечно я могу:
1) дать права на те файлы которые я хочу изменить записать итд
2) конечно я пилю велосипед, можно использовать тот же puppet

Но хочу именно так, и это подходит на 100% под мои задачи:
Мне нужно чтобы через веб интерфейс с кнопки запускался скрипт, скрипт делает различные действия на сервере, создает файлы, изменяет права, создает конфиги для различных сервисов итд итп. хотелось бы, чтобы этот скирпт запускался с привилегиями рута.

Офлайн

#6 Апрель 12, 2016 11:39:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

запуск скрипта с правами root (apache)

Можешь в sudo (sudoers) разрешить пользователю, под которым работает веб-сервер, запускать только этот скрипт. В самом скрипте должны быть все действия зафиксированы, чтобы можно было только выбрать конкретное.



Отредактировано py.user.next (Апрель 12, 2016 11:39:36)

Офлайн

#7 Апрель 12, 2016 12:09:22

carter85
Зарегистрирован: 2013-10-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск скрипта с правами root (apache)

py.user.next
Можешь в sudo (sudoers) разрешить пользователю, под которым работает веб-сервер, запускать только этот скрипт. В самом скрипте должны быть все действия зафиксированы, чтобы можно было только выбрать конкретное.
я понял

а если использовать:
1) suid
2) демон для изменения прав на скрипт.

Практикуется такое?

Офлайн

#8 Апрель 12, 2016 14:04:36

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

запуск скрипта с правами root (apache)

carter85
1) Ну можно писать через веб-морду задания в базу, файлы

2) А скрипты крутить от рута по крону и пусть они читают и выполняют эти задания

Можно пожалуйста пояснить?

1) Вебприложение никакой работы само не делает, оно только пишет куда-нибудь на ваш выбор параметры задания.
2) В системе с правами рута работает другое приложение(демон, по крону и т.д.) не важно. Периодически оно смотрит список поставленных вебприложением задач и выполняет их.
Т.е. задачи ставятся через веб. А выполняет их другой процесс. Так понятно?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#9 Апрель 12, 2016 14:26:45

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

запуск скрипта с правами root (apache)

carter85
а если использовать:
1) suid
Не нужен тебе suid, если ты безопасно хочешь сделать.

carter85
2) демон для изменения прав на скрипт.
Демон - это туфта. У тебя скрипт, и этот скрипт выполняется веб-сервером (процесс веб-сервера запускает скрипт, который может дальше что-нибудь делать). Чтобы этот скрипт мог делать привилегированные вещи, эти привилегии должны быть у процесса веб-сервера. Но, допустим, у апача нет таких привилегий, поэтому их нужно дать.

То, что тебе PooH предлагает, - это разделено, конечно, по правам и нагрузке, но у этого варианта есть задержка. У крона потребуется в пределах минуты подождать, пока он не выполнит свой тик и не обнаружит задание. И так каждый раз.

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



Отредактировано py.user.next (Апрель 12, 2016 14:27:38)

Офлайн

#10 Апрель 12, 2016 15:47:04

carter85
Зарегистрирован: 2013-10-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск скрипта с правами root (apache)

py.user.next
1) suid - нужно обертку на си писать. да и не то это
2) по крону тоже не то
Я хочу с помощью кнопки запускать скрипт мгновенно передавая туда какие либо аргументы

Подскажите плиз:

Каким образом указать в html коде что нужно запустить скрипт с sudo?
к примеру сейчас

print (""" <form action="test.py" method="POST">""")

а нужно чтобы test.py запускался с правами sudo
print (""" <form action="sudo test.py" method="POST">""")

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version