Получение доступа для команды cmd с использованием функции php

Я запускаю PHP под IIS 6.

Когда я использую любую функцию PHP для запуска команд cmd (например, exec() или system() ), всегда отображается «Доступ запрещен».

Даже такие команды, как ipconfig , демонстрируют ту же ошибку «access denied». Я дал все разрешения на папку с моим проектом, но это не сработало.

Пожалуйста, дайте мне знать кого-нибудь причину этого.

Когда вы выполняете какую-либо команду с помощью exec , эта команда будет выполнена с учетной записью пользователя, на которой запущен IIS (который типично является IUSR_«machine-name» на IIS 6), поэтому разрешения вашего проекта не имеют к этому никакого отношения.

Вам нужно сделать так, чтобы разрешить доступ к файлу C:\Windows\System32\cmd.exe и добавить разрешения для IUSR_«machine-name» .

Помимо этого вам, вероятно, потребуется использовать CACLS для изменения списка управления доступом. Замените имя IUSR_MachineName на следующую команду для пользователя, выполняющего PHP, а затем выполните следующую команду:

 CACLS c:\windows\system32\cmd.exe /E /G IUSR_MachineName:F 

Если вы получаете сообщение об ошибке и не можете изменить ACL, ваш последний ресурс должен выполнить следующую команду:

 takeown /F c:\windows\system32\cmd.exe 

Вам также может потребоваться установить правильные разрешения и ACL для команд, которые вы пытаетесь выполнить (например, C:\Windows\System32\schtasks.exe )

Примечание : сделайте это с осторожностью. Если у вас есть уязвимость, которая позволяет вашим пользователям выполнять команды, это может иметь неприятные последствия.