sudo-rs 0.2.3

A memory safe implementation of sudo and su.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use std::{fs::File, io, os::fd::AsRawFd};

use crate::{
    cutils::cerr,
    system::interface::{GroupId, UserId},
};

pub(crate) trait Chown {
    fn chown(&self, uid: UserId, gid: GroupId) -> io::Result<()>;
}

impl Chown for File {
    fn chown(&self, owner: UserId, group: GroupId) -> io::Result<()> {
        let fd = self.as_raw_fd();

        cerr(unsafe { libc::fchown(fd, owner, group) }).map(|_| ())
    }
}