Получение привилегий SUDO для «child_process.exec»

Я использую exec from child_process в приложении node для запуска некоторых команд оболочки.

Проблема в том, что мне нужно иметь sudo привилегии для запуска некоторых команд, и я не знаю, как программно ответить на запрос пароля.

Я не хочу, чтобы приложение зависало до тех пор, пока пользователь не введет пароль, я хочу, чтобы приложение вводило пароль по умолчанию и запускало команды, требующие sudo, используя указанный пароль.

Это возможно? В идеале я хотел бы сделать это без предварительного входа в систему какsu, то есть: просто запустить приложение и заставить его работать.

Пожалуйста, никаких дополнительных библиотек.

Можете ли вы предоставить больше информации? Почему бы не разрешить владельцу процесса запускать указанные команды без ввода пароля?

Felix Kling 08.03.2019 22:32

Как правило, это очень плохая идея, если вы принимаете какой-либо пользовательский ввод. sudo существует по очень веской причине... с заявлением об отказе от ответственности: это зависит от того, какую ОС вы используете, если вы работаете в Linux, вы должны поместить команды, необходимые для запуска от имени пользователя root, в файл sh и использовать visudo, чтобы дать что конкретные разрешения root скрипта. blog.rodneyrehm.de/archives/36-Always-Run-Script-As-Root.htm‌​l

Philippe 08.03.2019 22:37

@Philippe Филипп Я хотел бы делать все из приложения node.

Matthew Lerner 08.03.2019 22:53

@MatthewLerner, насколько я знаю, это невозможно по очень хорошим соображениям безопасности.

Philippe 08.03.2019 22:55

@FelixKling По сути, это для «внутреннего» приложения. Я хотел бы, чтобы пользователь просто запускал приложение, и оно «просто работало».

Matthew Lerner 08.03.2019 22:58

@FelixKling единственный способ, который я могу придумать, - это использовать предварительно настроенный док-контейнер с уже настроенным visudo ... но это не будет в узле, но позволит запустить ваш пакет с помощью одной команды

Philippe 08.03.2019 23:01

или запустите узел ИЗ скрипта bash и используйте bash для выполнения sudo перед запуском узла. (пользователю все равно нужно будет ввести пароль администратора для запуска сценария bash)

Philippe 08.03.2019 23:03

@Филипп Интересно. Я определенно буду запускать это в «песочнице». Я попробую ваше предложение докера, если мой поиск не увенчается успехом, я просто надеюсь, потому что я смутно припоминаю, что читал статью, где кто-то использовал stdin.write -- возможно, чтобы ответить на запрос пароля, я просто не помню, как он использовался, и не могу найти эта статья больше.

Matthew Lerner 08.03.2019 23:08

Я думаю, вы можете неправильно понять, что такое sudo, sudo ломает песочницу и дает полные привилегии root... то есть возможность играть вне песочницы. если вы не используете виртуальную машину или докер, так как они используют искусственные корни.

Philippe 08.03.2019 23:18

Просто чтобы полностью исключить опасность sudo здесь, sudo дает разрешение на доступ к корневому каталогу вашей системы, включая конфиденциальные файлы ОС. команда с sudo вполне может стереть весь ваш жесткий диск или установить опасные программы, такие как вирусы и трояны. Я видел много серверов, которые были превращены в спам-ботов, рассылающих тысячи писем в час. sudo опасен, я не могу не подчеркнуть этого.

Philippe 08.03.2019 23:26
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
10
1 454
1

Ответы 1

Вы можете установить SUID для файла, чтобы он всегда работал с разрешениями владельца файла или GUID, если вы хотите, чтобы он работал с разрешениями группы. Дополнительную информацию можно найти здесь

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