получить рутовые права из скрипта PHP или Bash

Модератор: Модераторы разделов

WTP
Сообщения: 57
ОС: Debian 5, 6

получить рутовые права из скрипта PHP или Bash

Сообщение WTP »

Проблема - выполнить скрипт с рутовыми правами, запущенный от другого пользователя. Или получить рутовые права в процессе выполнения. Рутовый пароль знаю.
От пользователя www-data (это который апачем рулит) будет запускаться php-скрипт. Нужно поменять файлик /etc/hosts. А он тока руту доступен для редактирования. Под пользовтелем www-data я разумеется в sudoers ковыряться не могу, иначе проблемы бы не было.
Пробовал на пхп чето типа этого:

Код: Выделить всё

$spec = array (
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("file", "/tmp/error-output.txt", "a")
);

$proc = proc_open("su root",$spec,$pipes);

for ($i=0; $i<100; $i++)
    fwrite($pipes[0], "пароль\n");
fclose($pipes[0]);
while (!feof($pipes[1]))
    echo fgets($pipes[1], 1024);

fclose($pipes[1]);
proc_close($proc);


Код украден из интернетов, взял один из примеров, малость поменял под себя.
Что вижу в результате выполнения в файлике /tmp/error-output.txt :
su: must be run from a terminal

Отсюда вопрос. А что вместо su можно использовать?
Может быть есть что-то аналогичное на bash?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: получить рутовые права из скрипта PHP или Bash

Сообщение drBatty »

WTP писал(а):
30.11.2011 09:39
Что вижу в результате выполнения в файлике /tmp/error-output.txt :
su: must be run from a terminal

Отсюда вопрос. А что вместо su можно использовать?
Может быть есть что-то аналогичное на bash?

man expect

Если хотите сделать из системы РЕШЕТО.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: получить рутовые права из скрипта PHP или Bash

Сообщение SLEDopit »

Если скорость обновления не критична (терпит минуту-другую), то я бы в крон повесил команду, которая раз в минуту будет чекать какой-нибудь файл, который будет создавать ваш скрипт и при наличии в нём изменений будет вносить соотвествующие изменения в /etc/hosts.
С точки зрения безопасности такой вариант гораздо лучше.
WTP писал(а):
30.11.2011 09:39
Под пользовтелем www-data я разумеется в sudoers ковыряться не могу, иначе проблемы бы не было.
Что мешает внести туда изменения, разрешающие вносить пользователю www-data изменения в /etc/hosts и ничего кроме этого?
drBatty писал(а):
30.11.2011 20:55
man expect
уточнение про решето отличное, но я всё же дополню, что тут ещё придётся хранить рутовый пароль в открытом виде в потенциально самом уязвимом месте на сервере.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: получить рутовые права из скрипта PHP или Bash

Сообщение drBatty »

SLEDopit писал(а):
30.11.2011 22:50
Что мешает внести туда изменения, разрешающие вносить пользователю www-data изменения в /etc/hosts и ничего кроме этого?

тоже дополню: для этого надо создать скрипт, который только это и делает, и не принимает никаких параметров. И вот его-то и прописать в sudoers.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
WTP
Сообщения: 57
ОС: Debian 5, 6

Re: получить рутовые права из скрипта PHP или Bash

Сообщение WTP »

Я видимо не полностью изложил условия задачи. Я не смогу ничего поменять в sudoers, ибо машины доступны только пхп-шному скрипту, который будет закинут на машину в определенный момент. Машин много. Очень много. Руками по всем не полазаешь. Поэтому надо добиться полной автоматизации. Expect опять же предварительно надо установить (рутовые права). Крон не подходит по тем же причинам.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: получить рутовые права из скрипта PHP или Bash

Сообщение drBatty »

WTP
так я не понял, чего-же вы хотите?

su специально проверяет поток вывода, и отплёвывается от всего, что покажется ей не терминалом. И только expect'ом её можно обмануть. Т.ч. ручками вводите, NoWay.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
DaemonTux
Сообщения: 1480
Статус: Юный падаван
ОС: Gentoo

Re: получить рутовые права из скрипта PHP или Bash

Сообщение DaemonTux »

drBatty писал(а):
01.12.2011 08:20
WTP
так я не понял, чего-же вы хотите?

Видимо чтоб все само заработало. И было безопасно.

2топик_стартер вы понимаете что хотите невозможного?
Vladivostok Linux User Group
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: получить рутовые права из скрипта PHP или Bash

Сообщение eddy »

А что, права 666 на /etc/hosts нельзя назначить?

// кстати, не понимаю, зачем что-то править в этом файле, кроме имени localhost'а…

WTP, это не вы случайно на хабрятине выложили статейку про редактор /etc/hosts? :)
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
WTP
Сообщения: 57
ОС: Debian 5, 6

Re: получить рутовые права из скрипта PHP или Bash

Сообщение WTP »

drBatty писал(а):
01.12.2011 08:20
su специально проверяет поток вывода, и отплёвывается от всего, что покажется ей не терминалом. И только expect'ом её можно обмануть. Т.ч. ручками вводите, NoWay.


Т.е. никаких обходных маневров не может быть в принципе? На Bash'e что-то аналогичное возможно? Про Expect я уже писал выше - без рутовых прав я его не поставлю.

eddy писал(а):
01.12.2011 09:11
А что, права 666 на /etc/hosts нельзя назначить?

// кстати, не понимаю, зачем что-то править в этом файле, кроме имени localhost'а…

WTP, это не вы случайно на хабрятине выложили статейку про редактор /etc/hosts? :)


Опять же - права на /etc/hosts не поменять без рутовых привилегий. Надо мне в него залезть чтоб в vpn машина знала куда ей надо ломиться по адресу my.site.com.
К хабру отношения не имею.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: получить рутовые права из скрипта PHP или Bash

Сообщение SLEDopit »

WTP писал(а):
01.12.2011 07:22
Я не смогу ничего поменять в sudoers, ибо машины доступны только пхп-шному скрипту, который будет закинут на машину в определенный момент.
Эм, массовый взлом vps?
Просто никакой другой более-менее логичный вариант, когда может возникнуть подобная ситуация в голову не приходит.
зы. Если вы знаете рутовый пароль, и, скорее всего на машинах запущен демон ssh, и, судя по всему, операция нужна разово, может не стоит мучаться с пыхапе?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
WTP
Сообщения: 57
ОС: Debian 5, 6

Re: получить рутовые права из скрипта PHP или Bash

Сообщение WTP »

SLEDopit писал(а):
01.12.2011 10:46
Эм, массовый взлом vps?

Нет)). Есть большое количество машин в подчинении, ничего незаконного. Им всем надо поменять кой-чего в /etc/hosts. Судя по всему придется обратиться к ssh, больше ничего не остается. Но проблема в том, что не на все машины можно попасть напрямую по ssh. Такие окажутся в пролете.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: получить рутовые права из скрипта PHP или Bash

Сообщение eddy »

WTP писал(а):
01.12.2011 11:24
Им всем надо поменять кой-чего в /etc/hosts

Да что вы так привязались к этому файлу? DNS что, не вариант поднять? И править уже записи DNS. На одном компьютере!
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: получить рутовые права из скрипта PHP или Bash

Сообщение drBatty »

WTP писал(а):
01.12.2011 09:29
Т.е. никаких обходных маневров не может быть в принципе?

были-бы манёвры, взломанных серверов было-бы примерно раз в 100 больше. Если не в 1000.
WTP писал(а):
01.12.2011 09:29
Опять же - права на /etc/hosts не поменять без рутовых привилегий. Надо мне в него залезть чтоб в vpn машина знала куда ей надо ломиться по адресу my.site.com.

вам уже сказали - нормальные люди используют для этого DNS. Я-же не лезу в ВАШ /etc/hosts, что-бы вы попали на drbatty.ru ? Ы?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: