Я пытаюсь создать команду с помощью sudo и передать пароль процессу через rpassword > реализация BufRead.
Чтобы не запрашивать пароль на TTY, я использую флаг -S для sudo. При создании команды я беру() стандартный ввод, создаю другой поток и записываю сохраненный пароль через BufRead в стандартный ввод; как предложено в документации.
Вот пример кода:
Код: Выделить всё
use rpassword::read_password_from_bufread;
use std::{
io::{Cursor, Write},
process::{Command, Stdio},
thread,
};
fn sudo_cmd(pw: String) {
let mut cmd = Command::new("sudo")
.arg("-S")
.arg("ls")
.stdin(Stdio::piped())
.stdout(Stdio::piped())
// .stderr(Stdio::null()) //
Подробнее здесь: [url]https://stackoverflow.com/questions/79316257/spawn-command-as-root-and-authenticate-with-polkit-rpassword[/url]