Выполнить команду от имени пользователя root в сборке плагина Cpanel с Perl

Я новичок в Perl. Я создаю плагин для Cpanel для установки сертификатов SSL, когда пользователь щелкает опцию.

Я должен выполнить команду как root внутри кода Perl. Как я могу это сделать?

Это не похоже на вопрос Per, это больше связано с системой. Либо вы должны выполнить свой сценарий как пользователь root, либо вам нужно переключиться на запуск системной команды из кода Perl, который переключается на root и запускает установку ...

GMB 04.12.2018 17:19

Но мой плагин выполнит команду ... я вижу в perl пример выполнения команды bash с system(command, arg1, arg2, но мне нужно протестировать только команду sudo

Dimitrius Lachi 04.12.2018 17:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
136
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, в основном вам нужно запустить системную команду от имени пользователя root из Perl-скрипта.

Вы можете использовать встроенную функцию система с sudo внутри нее. Это вызовет ответвление нового процесса, в котором команда будет выполняться, пока родительский процесс ожидает, а затем вернет статус выхода этой команды.

Например, эта базовая команда переключается на root и печатает текущего пользователя:

perl -e 'system("sudo su -c whoami")'

Очевидно, он выводит это на стандартный вывод:

root

Примечания :

  • чтобы это работало, вам необходимо, чтобы пользователь вашего приложения мог переключиться на root (без необходимости вводить пароль); некоторые могут подумать, что это нарушение безопасности (какой-нибудь злоумышленник, который захватил бы ваше приложение, может нанести фатальный ущерб вашей системе)

  • фактическая команда для переключения на пользователя root может отличаться в зависимости от вашей ОС; тот, который я использовал в примере, предназначен для RedHat

  • Я поискал в CPAN модули, обеспечивающие функциональность «переключиться на root», и нашел только один Судо; Я не пробовал, но он не обновлялся с 2013 года и имеет несколько проблем, ожидающих решения с 3 до 9 лет.

Другие вопросы по теме