Browse Source

Remove SuCommandRunner

master
Adrian Heine 2 years ago
parent
commit
6954359209
  1. 36
      src/command_runner.rs

36
src/command_runner.rs

@ -147,42 +147,6 @@ impl<U: AsRef<str>> CommandRunner for SetuidCommandRunner<U> {
}
}
#[derive(Debug)]
pub struct SuCommandRunner<'a, C>
where
C: CommandRunner,
{
command_runner: &'a C,
user_name: &'a str,
}
impl<'a, C> SuCommandRunner<'a, C>
where
C: 'a + CommandRunner,
{
pub fn new(user_name: &'a str, command_runner: &'a C) -> SuCommandRunner<'a, C> {
SuCommandRunner {
command_runner,
user_name,
}
}
}
// Su doesn't set XDG_RUNTIME_DIR
// https://github.com/systemd/systemd/blob/master/src/login/pam_systemd.c#L439
#[async_trait(?Send)]
impl<'a, C> CommandRunner for SuCommandRunner<'a, C>
where
C: 'a + CommandRunner,
{
async fn run(&self, program: &str, args: &[&OsStr], input: &[u8]) -> IoResult<Output> {
let raw_new_args = [self.user_name, "-s", "/usr/bin/env", "--", program];
let mut new_args: Vec<&OsStr> = raw_new_args.iter().map(AsRef::as_ref).collect();
new_args.extend_from_slice(args);
self.command_runner.run("su", &new_args, input).await
}
}
#[cfg(test)]
mod test {
use crate::args;

Loading…
Cancel
Save