Remove SuCommandRunner
This commit is contained in:
parent
70786ebf40
commit
6954359209
1 changed files with 0 additions and 36 deletions
|
|
@ -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)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use crate::args;
|
use crate::args;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue