Php от имени администратора

Запуск cmd от имени администратора в PHP

Есть ли способ запустить команду CMD от имени администратора с PHP? Я пытаюсь создать веб-сайт на IIS7 с помощью утилиты appcmd.exe, запустив exec(«%systemroot%\system32\inetsrv\APPCMD list sites»). Я получаю сообщение об ошибке, говорящее, что у меня нет правильных разрешений, но если я и запустите ту же команду в CMD от имени администратора, все работает нормально.

Что я пытаюсь сделать, так это автоматизировать создание веб-сайтов в IIS 7 с помощью веб-портала, над которым я работал, по сравнению с добавлением веб-сайтов на сервер вручную.

Если бы PHP мог сделать это легко, он был бы удален со всех компьютеров с Windows, которые у меня когда-либо были. Как и IIS. И, возможно, Windows. Вы говорите об огромной дыре в безопасности. Я (как администратор!) даже не могу запустить приложение от имени администратора без всплывающего окна UAC, но ваш PHP-код (работающий как NetworkService или что-то еще) может? Ну-ну.

Попробуйте отключить анонимную аутентификацию для своего сайта. Это должно потребовать, чтобы вы вошли в систему. войдите в систему, используя учетные данные AD, и посмотрите, работает ли сценарий.

2 ответа

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

Читайте также:  Самый огромный сетчатый питон

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

Один из способов сделать это — написать службу Windows. на другом языке, чтобы предоставить нужные вам результаты, а затем взаимодействовать с ним локально через какой-либо другой порт. Затем установите службу и запустите ее от имени администратора.

Источник

Как запускать команды cmd как администратор из php

Я пытаюсь изучить функцию php shell_exec(), которая, как мне кажется, позволяет запускать команды cmd из php script. Но в моей системе, когда я обычно открываю командную строку и набираю команду, например, ipconfig , он говорит:

'ipconfig' is not recognized as an internal or external command, operable program or batch file. 

Итак, чтобы избежать этого, я должен щелкнуть правой кнопкой мыши по командной строке и выбрать «запустить как администратор», и все будет хорошо. Теперь моя проблема заключается в том, что я пытаюсь запустить аналогичные команды типа ipconfig изнутри PHP скрипт, я получаю ту же ошибку, что и указанную выше. Есть ли способ решить эту проблему? Я имею в виду, есть ли способ запуска команд cmd в качестве администратора изнутри php? Я прилагаю пример кода ниже, чтобы вы могли отредактировать его и помочь мне. Спасибо заранее. Здесь код:

Выход (которого я хочу избежать)

‘ipconfig’ не распознается как внутренняя или внешняя команда, оперативная программа или командный файл.

Решение состоит не в том, чтобы запустить приглашение от имени администратора, а в том, чтобы убедиться, что ваше приглашение не от имени администратора может его найти. Попробуйте ввести полный путь (например, /usr/bin/ipconfig ), возможно, сначала найдя его, вручную используя whereis ipconfig .

@Harikrishnan Вы правы, конечно, я был сбит с толку перенаправлением 2>&1 которое я обычно видел в системах Linux.

Источник

Как запустить PHP скрипта с правами root?

Начну сразу по сути. У меня Os X Yosemite. Включил встроенный Apache и разблокировал встроенный же PHP.

При выполнении скриптов, работающих с файлами на компьютере, выскакивает ошибка доступа. Она благополучно лечится, если в папке, с которой работаю, указать права на чтение и запись (если второй требуется).
Скрипт запускаю из браузера Mozilla последней версии (хотя в Safari тоже самое).

Опытным путем было замечено, что скрипт запускается от имени Любых Пользователей. (собственно их права и переназначаю)

Отсюда суть вопроса. Как мне запускать php скрипт от имени меня, пользователя данной системы, у которого по умолчанию стоят права на чтение и запись, чтобы вручную не приходилось постоянно менять права доступа Любых Пользователей, от чьего имени запускается скрипт?
И почему он запускается от имени Любых Пользователей, ведь я его в системе запускаю через браузер вручную? (наверняка, это связано с политикой безопасности, но я пока не проникся всеми нюансами, если не сложно, кратко расскажите)

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

Заранее спасибо за ответы и теплого Вам солнца.

UPD — раскрытое решение для не посвященных

Мне сложно было применить все то, что ниже описали, так как я видимо еще совсем нуб.
Оба решения были верные, я выбрал запуск сервера Apache от имени пользователя
Для этого я в конфигурации php посмотрел под каким именем пользователя запускается мой сервер Apache (создаем файл php c функцией phpinfo() и открываем его в браузере, в таблице Configuration ищем колонку User/Group, в ней прописано имя пользователя, в моем случае это был _www)
Далее заходим в файл /etc/apache2/httpd.conf и ищем там ваше имя пользователя. У меня это была строка 181 User _www
строка 182 Group _www
Значение _www изменил на свое имя пользователя, сохранил и перезагрузил Apache.
Все, теперь он работает с правами read/write
ВНИМАНИЕ 1 — пишите имя пользователя без лишних знаков, так, как оно есть, моя первая ошибка была, прописать _имяпользователя. Разумеется сервер даже не запустился. Убрав подчеркивание, все получилось.
ВНИМАНИЕ 2 — осознавайте, что вы делаете. Дело в том, что ниже правильно написали, данные права, в моем случае администратора, дают вам запись и чтение почти всех файлов на компьютере, и если вас взломают, то злоумышленник получит почти полный доступ к компьютеру. У меня локальный сервер, и мне это нужно, плюс после конца работы, я выключаю Apache. Однако, безопасность Unix систем в первую очередь гарантируется жестким разграничением чего можно, а чего нельзя. Не стоит лишний раз нарушать это правило.

Источник

Как запускать команды cmd от имени администратора с php

Я пытаюсь изучить функцию php shell_exec (), которая, как я считаю, позволяет нам запускать команды cmd из сценария php, но в моей системе, когда я обычно открываю командную строку и набираю команду, например, ipconfig , он говорит:

'ipconfig' is not recognized as an internal or external command, operable program or batch file. 

Поэтому, чтобы этого избежать, мне нужно щелкнуть правой кнопкой мыши командную строку и выбрать «Запуск от имени администратора», и все работает нормально. Теперь моя проблема в том, что когда я пытаюсь запустить аналогичные команды, такие как ipconfig , из php-скрипта, я получаю ту же ошибку, что и выше. Есть ли способ решить эту проблему? Я имею в виду, есть ли способ запускать команды cmd от имени администратора изнутри php? Я прилагаю образец кода ниже, чтобы вы могли его отредактировать и помочь мне. Заранее спасибо. Вот код:

Вывод (которого я хочу избежать)

‘ipconfig’ не распознается как внутренняя или внешняя команда, работающая программа или командный файл.

Решение состоит не в том, чтобы запускать приглашение от имени администратора, а в том, чтобы убедиться, что ваше приглашение, не являющееся администратором, может его найти. Попробуйте ввести полный путь (например, /usr/bin/ipconfig ), возможно, сначала найдите его, используя whereis ipconfig вручную. — person CompuChip &nbsp schedule 01.04.2015

@CompuChip Он использует окна. В linux нет ipconfig . Это ifconfig — person Harikrishnan &nbsp schedule 02.04.2015

@Harikrishnan, вы, конечно, правы, меня сбило с толку перенаправление 2>&1 , которое я обычно видел в системах Linux. — person CompuChip &nbsp schedule 02.04.2015

Источник

Оцените статью