diff src/user.rs @ 12:0df4d067badb

move each crates
author AnaTofuZ <k198584@ie.u-ryukyu.ac.jp>
date Thu, 29 Oct 2020 16:15:52 +0900
parents
children e6dc51066703
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/user.rs	Thu Oct 29 16:15:52 2020 +0900
@@ -0,0 +1,40 @@
+use nix;
+
+pub fn getlogin(uid: u32) -> &'static str {
+    use std::ffi::CStr;
+    let user_passwd = unsafe { nix::libc::getpwuid(uid) };
+    let c_str = unsafe { CStr::from_ptr((*user_passwd).pw_name) };
+    return c_str.to_str().unwrap();
+}
+
+pub fn getuid() -> u32 {
+    let uid_struct = nix::unistd::getuid();
+    return uid_struct.into();
+}
+
+pub fn getgid() -> u32 {
+    let gid_struct = nix::unistd::getgid();
+    return gid_struct.into();
+}
+
+pub fn set_root_id() {
+    let id = 0;
+    match nix::unistd::seteuid(nix::unistd::Uid::from_raw(id)) {
+        Err(err) => panic!("failed seteuid {}", err),
+        Ok(_) => {}
+    }
+    match nix::unistd::setegid(nix::unistd::Gid::from_raw(id)) {
+        Err(err) => panic!("failed setedid{}", err),
+        Ok(_) => {}
+    }
+
+    match nix::unistd::setuid(nix::unistd::Uid::from_raw(id)) {
+        Err(err) => panic!("failed setuid {}", err),
+        Ok(_) => {}
+    }
+
+    match nix::unistd::setgid(nix::unistd::Gid::from_raw(id)) {
+        Err(err) => panic!("failed setdid{}", err),
+        Ok(_) => {}
+    }
+}