【问题标题】:Electron - sudo commands电子 - sudo 命令
【发布时间】:2019-08-30 00:11:12
【问题描述】:

我有一个用于文件操作的小应用程序。它主要处理用户的文件,但它需要不时访问 macOS 文件,因此我需要管理员访问权限。

有没有办法只要求用户进行一次root访问,所以整个应用程序都有它,并且每次需要运行sudo命令时都不需要用户输入密码?

我一直在寻找一个不错的解决方案,一个是向用户询问密码并将其存储在本地,但以后使用它不再被认为是“安全的”。

【问题讨论】:

  • 您找到解决方案了吗?
  • 很遗憾没有:(

标签: node.js electron sudo


【解决方案1】:

Electron-sudo 为管理员/root 权限提供 GUI。通过安装它

npm install electron-sudo

电子码应该有,

import Sudoer from 'electron-sudo';
 
let options = {name: 'electron sudo application'},
    sudoer = new Sudoer(options);
 
/* Spawn subprocess behavior */
let cp = await sudoer.spawn(
  'echo', ['$PARAM'], {env: {PARAM: 'VALUE'}}
);
cp.on('close', () => {
  /*
    cp.output.stdout (Buffer)
    cp.output.stderr (Buffer)
  */
});
 
/* Exec subprocess behavior */
let result = await sudoer.exec(
  'echo $PARAM', {env: {PARAM: 'VALUE'}}
);
/* result is Buffer with mixed (both stdout and stderr) output */
 
 
/* Usage with Vanila JS */
 
var Sudoer = require('electron-sudo').default;
var sudoer = new Sudoer(options);
sudoer.spawn('echo', ['$PARAM'], {env: {PARAM: 'VALUE'}}).then(function (cp) {
  /*
    cp.output.stdout (Buffer)
    cp.output.stderr (Buffer)
  */
});

官方仓库在https://github.com/automation-stack/electron-sudo

【讨论】: