Разрешение Visudo в сценарии выполнения файла

Выход в локальную оболочку означает только то, что --у пользователя теперь есть оболочка на клиенте, а не на сервере. Коснитесь файла в /tmp на обеих системах (с разными именами! ), чтобы увидеть разницу.

0
09.05.2021, 10:02
1 ответ

Вы не используете sudo /var/www/mysite/classes/builder-sites-nginx.sh, вы используете sudo sh /var/www/mysite/classes/builder-sites-nginx.sh-, а sudoне настроен для разрешения запуска данных www -sudo sh(и не должен быть -, который был бы огромная дыра в безопасности, эквивалентнаяwww-data ALL=(ALL) NOPASSWD:ALL).

Сделайте /var/www/mysite/classes/builder-sites-nginx.shисполняемым файлом с помощью chmod +xи убедитесь, что он имеет #!/bin/bash, так как первая строка(#!/bin/shтоже будет работать, потому что ваш скрипт не использует никакие функции bash -, а только ).

Затем измените код PHP на:

$command = "sudo ".dirname(__FILE__)."/builder-sites-nginx.sh {$domain}";

Кстати, в зависимости от того, где и как $domainбыло определено (, т. е. если оно получено из данных, предоставленных пользователем -), вам может потребоваться использовать функцию PHP escapeshellcmd()для их очистки.

3
28.07.2021, 11:34

Теги

Похожие вопросы