[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как исполнить .sh из веб браузера
PHPLIVE
в php есть множество альтернатив system()
вопрос такой,
я хочу ввести команду в терминал через php
вывести ответ терминала полностью в браузер
но есть команды которые прояст ввода пароля
как это обойти ,без ввода пароля, или как ввести пароль
понимаю что многое небезопасно,
использую сервер ngnix ubuntu 16.04

$last_line = system('gedit /conf/vh.conf', $retval);

// Выводим дополнительную информацию
echo '
</pre>
<hr />
Последняя строка вывода: ' . $last_line . '
<hr />Код возврата: ' . $retval;

возвращает код 1 у меня, что означает что команда не выполнена. Я считаю что всё это из за root пароля
Ron
Cамый безопасный способ в таком случае, по моему мнению, это смотреть в сторону sudo/sudoers, причем разрешить только необходимые под проект команды. То есть переложить контроль доступа на ОС, говоря другими словами.

Что касается чтения/перенаправления stdout, нужно смотреть документацию по функциям PHP.
PHPLIVE
давайте решать вместе , файл sudoers редактировал (в результате всё только сломал);
написал shell команду
gedit /conf/vh.conf сохранил в /bin

$last_line = system('bash /bin/vh.sh ', $retval);

// Выводим дополнительную информацию
echo '
</pre>
<hr />
Последняя строка вывода: ' . $last_line . '
<hr />Код возврата: ' . $retval;

выводит опять 1, а надо что бы открылся текстовый редактор после исполнения system
и ещё я хочу увидить это в браузере что код исполнен, а не только последнюю строчку.
через терминал скрипт работает.
depp
PHPLIVE
вы не правильно понимаете работу команды system и консоли linux.
PHPLIVE
в чём моя ошибка я хочу понять
я хочу оптимизировать свой рабочий процесс , что бы управлять из браузера, администрировать с помощью php
killer8080
PHPLIVE
запустить php от рута не сложно, сложней не наделать дыр в безопасности.
Ты хорошо представляешь, для чего тебе это нужно?
PHPLIVE
да, для себя, для того что бы управлять было удобно, запретить доступ из вне можно при помощи сервера.
killer8080
PHPLIVE
раньше я эту задачу решал с помощью suphp, но сейчас глянул он больше не поддерживается. Можно настроить fpm на запуск от рута, для этого демон должен запускаться с ключом -R, а в конфиге соответственно указать группу и юзера.
Но о безопасности то же не следует забывать, все скрипты запускаемые от рута должны быть доступны на запись только руту!

ЗЫ
Цитата (PHPLIVE @ 28.08.2017 - 22:18)
$last_line = system('gedit /conf/vh.conf', $retval);

ты в курсе что гуи софт так просто от рута не стартанёт?
PHPLIVE
нет но я заметил , что из терминала скрипт запускается, а из браузера нет,исполняются только некоторые команды. Мне же хочется управлять из браузера, тоесть я хочу сформировать ссылки на исполнение скриптов.
может посоветуете книги или мануалы желательно на русском.
AllesKlar
- дать пользователю, от которого запускается php sudo без требования ввода пароля.
- ограничить пользователя в запускаемых командах.

Давным-давно так субдомены создавал из веб-морды.

_____________
[продано копирайтерам]
PHPLIVE
переформлуировал вопрос только что.
я имею shell скрипт с одной записью gedit /conf/vh.con
моя цель исполнить скрипт при помощи браузера;
но для начала я должен быть уверен , что скрипт запускается из браузера
из браузера он не запускается пробовал разные функции нарпимер exec();
причём какойнибудь ls будет работать, nano тоже не работает
как вывести всю информацию о том что просиходит в терминале в браузер а не только код ?,
Иначе говоря я хочу перенести панель сисадмина в браузер. Может это глуппо и давно уже кем то написано, для меня это как учебное пособие , пожалуйста прошу помогите , уж слишком мучает этот вопрос.

brevis
Тебе не нужно запускать gedit или nano.
Тебе нужно просто отредактировать /conf/vh.conf. Это можно сделать средствами php. Нужно будет только настроить права доступа.
И еще нужно будет настроить возможность перезапускать веб-сервер без ввода пароля.
И всё.

_____________
Чатик в телеге
PHPLIVE
да я понимаю что можно, но мне не даёт покоя тот факт, что я не могу исполнять shell скрипт из браузера
killer8080
Цитата (PHPLIVE @ 29.08.2017 - 20:31)
да я понимаю что можно, но мне не даёт покоя тот факт, что я не могу исполнять shell скрипт из браузера

gedit это не шел скрипт user posted image

Цитата (PHPLIVE @ 29.08.2017 - 13:16)
ереформлуировал вопрос только что.
я имею shell скрипт с одной записью gedit /conf/vh.con
моя цель исполнить скрипт при помощи браузера;
но для начала я должен быть уверен , что скрипт запускается из браузера
из браузера он не запускается пробовал разные функции нарпимер exec();
причём какойнибудь ls будет работать, nano тоже не работает
как вывести всю информацию о том что просиходит в терминале в браузер а не только код ?,

system() и прочие выводят стандартный поток STDOUT, все консольные (и не только) юникс проги служебную инфу, и ошибки в том числе, выводят в STDERR. Поэтому ты не видишь в браузере в чём проблема. Перенаправь потоки и сам увидишь в чём проблема

echo '<pre>';
system('gedit 2>&1');


Цитата (PHPLIVE @ 29.08.2017 - 13:16)
Иначе говоря я хочу перенести панель сисадмина в браузер. Может это глуппо и давно уже кем то написано, для меня это как учебное пособие , пожалуйста прошу помогите , уж слишком мучает этот вопрос.

естественно webmin например, ставится из репы.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.