Как я могу получить root-доступ и использовать disk usage (du) от основного процесса electron?

Как я могу получить root-доступ и использовать disk usage (du) от основного процесса electron?

14.01.2020 06:35:57 Просмотров 33 Источник

Я создаю приложение для macOS с помощью Electron

Я пытаюсь запустить следующую команду из основного процесса, используя ipcMainи exec.

// Traverse to a directory and use disk usage to check folder sizes
cd ~/Library/Caches && du -sh *

Команда выполняется так, как я хочу, но она создает исключение.

Uncaught Exception:
Error: Command failed: cd ~/Library/Caches && du -sh *
du: DEDUCTED: Operation not permitted

    at /Users/0x1ad2/Projects/DEDUCTED/node_modules/sudo-prompt/index.js:390:27
    at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:61:3)

Я также попытался прикрепить пакет sudo-prompt, чтобы приложение могло иметь корневой доступ.

Пока не везет.

Ответ

    const exec = require("child_process").exec;
exec(
    `cd ~/Library/Caches && du -sh * && cd ${process.cwd()}`,
    (error, stdout, stderr) => {
        console.log(error);
        console.log(stdout);
        console.log(stderr);
    }
);
У вопроса есть решение - Посмотреть?

Ответы - Как я могу получить root-доступ и использовать disk usage (du) от основного процесса electron? / How can I gain root access and use disk usage (du) from electron's main process?

Является ответом!
Yaroslav Gaponov

14.01.2020 07:03:51

Проблема в cd. Модуль sudo-prompt перенаправление stderror в файл. Просто попробуйте выполнить как в этом примере или добавить команду для возврата назад, как cd ~/Library/Caches && du -sh * && cd ${process.cwd()}

child_process.exec('push /etc\ndu -sh *\npopd', (error, stdout, stderr)=> console.log(stdout))

`

https://stackoverflow.com/questions/59737073/how-can-i-gain-root-access-and-use-disk-usage-du-from-electrons-main-process/59737579#comment105625645_59737579
Это действительно cd-диск, спасибо, что указали на это. Но все же, если я позволю процессу вернуться через cd ${process.cwd()}по-прежнему вызывает то же исключение.
https://stackoverflow.com/questions/59737073/how-can-i-gain-root-access-and-use-disk-usage-du-from-electrons-main-process/59737579#comment105626340_59737579
Такие команды , как ls, mkdr, cdи touch, действительно работают. Но всякий раз, когда я добавляю du, все ломается.
https://stackoverflow.com/questions/59737073/how-can-i-gain-root-access-and-use-disk-usage-du-from-electrons-main-process/59737579#comment105642028_59737579
Я имею в виду треску, как child_process.exec(cd ~ / Library / Caches & & du-sh * & & cd ${process.чвд(), (error, stdout, stderr)=> console.log(stdout))
https://stackoverflow.com/questions/59737073/how-can-i-gain-root-access-and-use-disk-usage-du-from-electrons-main-process/59737579#comment105820236_59737579
Сработало, спасибо.
Закрыть X