use crate::internal::*; use std::process::Command; pub fn new_user(username: &str, hasroot: bool, password: &str) { let return_val = Command::new("useradd") .arg("-m") .arg("-s") .arg("/bin/bash") .arg(username) .output(); match return_val { Ok(_) => { info(format!("Created user {}", username)); } Err(e) => { crash( format!("Failed to create user {}, Error: {}", username, e), 1, ); } } if hasroot { let return_val = Command::new("usermod") .arg("-a") .arg("-G") .arg("wheel") .arg(username) .output(); match return_val { Ok(_) => { info(format!("Added user {} to group wheel", username)); } Err(e) => { crash(format!("Failed to add user {}, Error: {}", username, e), 1); } } } let return_val = Command::new("arch-chroot") .arg("/mnt") .arg("usermod") .arg("--password") .arg("$(echo") .arg(format!("${{{}}}", password)) .arg("|") .arg("openssl") .arg("passwd") .arg("-1") .arg("-stdin)") .arg(username) .output(); match return_val { Ok(_) => { info(format!("Set password for user {}", username)); } Err(e) => { crash( format!("Failed to set password for user {}, Error: {}", username, e), 1, ); } } } pub fn root_pass(root_pass: &str) { println!("Setting root password to '{}'", root_pass); let return_val = Command::new("arch-chroot") .arg("/mnt") .arg("usermod") .arg("--password") .arg("$(echo") .arg(format!("${{{}}}", root_pass)) .arg("|") .arg("openssl") .arg("passwd") .arg("-1") .arg("-stdin)") .arg("root") .output(); match return_val { Ok(_) => { info("Set root password".to_string()); } Err(e) => { crash(format!("Failed to set root password, Error: {}", e), 1); } } }