Я использую exec from child_process в приложении node для запуска некоторых команд оболочки.
Проблема в том, что мне нужно иметь sudo привилегии для запуска некоторых команд, и я не знаю, как программно ответить на запрос пароля.
Я не хочу, чтобы приложение зависало до тех пор, пока пользователь не введет пароль, я хочу, чтобы приложение вводило пароль по умолчанию и запускало команды, требующие sudo, используя указанный пароль.
Это возможно? В идеале я хотел бы сделать это без предварительного входа в систему какsu, то есть: просто запустить приложение и заставить его работать.
Пожалуйста, никаких дополнительных библиотек.
Как правило, это очень плохая идея, если вы принимаете какой-либо пользовательский ввод. sudo существует по очень веской причине... с заявлением об отказе от ответственности: это зависит от того, какую ОС вы используете, если вы работаете в Linux, вы должны поместить команды, необходимые для запуска от имени пользователя root, в файл sh и использовать visudo, чтобы дать что конкретные разрешения root скрипта. blog.rodneyrehm.de/archives/36-Always-Run-Script-As-Root.html
@Philippe Филипп Я хотел бы делать все из приложения node.
@MatthewLerner, насколько я знаю, это невозможно по очень хорошим соображениям безопасности.
@FelixKling По сути, это для «внутреннего» приложения. Я хотел бы, чтобы пользователь просто запускал приложение, и оно «просто работало».
@FelixKling единственный способ, который я могу придумать, - это использовать предварительно настроенный док-контейнер с уже настроенным visudo ... но это не будет в узле, но позволит запустить ваш пакет с помощью одной команды
или запустите узел ИЗ скрипта bash и используйте bash для выполнения sudo перед запуском узла. (пользователю все равно нужно будет ввести пароль администратора для запуска сценария bash)
@Филипп Интересно. Я определенно буду запускать это в «песочнице». Я попробую ваше предложение докера, если мой поиск не увенчается успехом, я просто надеюсь, потому что я смутно припоминаю, что читал статью, где кто-то использовал stdin.write -- возможно, чтобы ответить на запрос пароля, я просто не помню, как он использовался, и не могу найти эта статья больше.
Я думаю, вы можете неправильно понять, что такое sudo, sudo ломает песочницу и дает полные привилегии root... то есть возможность играть вне песочницы. если вы не используете виртуальную машину или докер, так как они используют искусственные корни.
Просто чтобы полностью исключить опасность sudo здесь, sudo дает разрешение на доступ к корневому каталогу вашей системы, включая конфиденциальные файлы ОС. команда с sudo вполне может стереть весь ваш жесткий диск или установить опасные программы, такие как вирусы и трояны. Я видел много серверов, которые были превращены в спам-ботов, рассылающих тысячи писем в час. sudo опасен, я не могу не подчеркнуть этого.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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