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)]
|
||||
mod test {
|
||||
use crate::args;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue