Я новичок в Perl. Я создаю плагин для Cpanel для установки сертификатов SSL, когда пользователь щелкает опцию.
Я должен выполнить команду как root внутри кода Perl. Как я могу это сделать?
Но мой плагин выполнит команду ... я вижу в perl пример выполнения команды bash с system(command, arg1, arg2, но мне нужно протестировать только команду sudo





Итак, в основном вам нужно запустить системную команду от имени пользователя root из Perl-скрипта.
Вы можете использовать встроенную функцию система с sudo внутри нее. Это вызовет ответвление нового процесса, в котором команда будет выполняться, пока родительский процесс ожидает, а затем вернет статус выхода этой команды.
Например, эта базовая команда переключается на root и печатает текущего пользователя:
perl -e 'system("sudo su -c whoami")'
Очевидно, он выводит это на стандартный вывод:
root
Примечания :
чтобы это работало, вам необходимо, чтобы пользователь вашего приложения мог переключиться на root (без необходимости вводить пароль); некоторые могут подумать, что это нарушение безопасности (какой-нибудь злоумышленник, который захватил бы ваше приложение, может нанести фатальный ущерб вашей системе)
фактическая команда для переключения на пользователя root может отличаться в зависимости от вашей ОС; тот, который я использовал в примере, предназначен для RedHat
Я поискал в CPAN модули, обеспечивающие функциональность «переключиться на root», и нашел только один Судо; Я не пробовал, но он не обновлялся с 2013 года и имеет несколько проблем, ожидающих решения с 3 до 9 лет.
Это не похоже на вопрос Per, это больше связано с системой. Либо вы должны выполнить свой сценарий как пользователь root, либо вам нужно переключиться на запуск системной команды из кода Perl, который переключается на root и запускает установку ...