From 05cf6cf9da71eaa3efee9583144ba73f8cace0dd Mon Sep 17 00:00:00 2001 From: JMARyA Date: Fri, 10 Jan 2025 09:28:03 +0100 Subject: [PATCH] wheel group --- installs/desktop.toml | 4 ++-- installs/full.toml | 4 ++-- installs/server.toml | 4 ++-- src/config.rs | 2 +- src/install/user.rs | 21 ++++++++++++--------- src/print.rs | 2 +- 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/installs/desktop.toml b/installs/desktop.toml index f83b722..668bb61 100644 --- a/installs/desktop.toml +++ b/installs/desktop.toml @@ -52,5 +52,5 @@ name = "u" # User password password = "pass" -# Allow user to use `doas` as root -doas_root= true +# Add user to wheel group +wheel = true diff --git a/installs/full.toml b/installs/full.toml index 042ca84..dc9efe9 100644 --- a/installs/full.toml +++ b/installs/full.toml @@ -69,8 +69,8 @@ home_dir = "/home/u" # Set the shell of the user shell = "/bin/bash" -# Allow user to use `doas` as root -doas_root= true +# Add user to wheel group +wheel = true # Add user to Docker group docker = true diff --git a/installs/server.toml b/installs/server.toml index b7c763c..67a33b4 100644 --- a/installs/server.toml +++ b/installs/server.toml @@ -52,8 +52,8 @@ name = "u" # User password password = "pass" -# Allow user to use `doas` as root -doas_root= true +# Add user to wheel group +wheel = true # Add user to Docker group docker = true diff --git a/src/config.rs b/src/config.rs index 1375cd8..8b37653 100644 --- a/src/config.rs +++ b/src/config.rs @@ -44,7 +44,7 @@ pub struct UserConfig { pub uid: Option, pub home_dir: Option, pub shell: Option, - pub doas_root: Option, + pub wheel: Option, pub docker: Option, pub virtualization: Option, } diff --git a/src/install/user.rs b/src/install/user.rs index 25ed68f..b463a74 100644 --- a/src/install/user.rs +++ b/src/install/user.rs @@ -1,7 +1,5 @@ use crate::{ - config::UserConfig, - linux::{arch_chroot, install_file}, - print_status, + config::UserConfig, linux::{arch_chroot, install_file}, pkg::install_pkgs, print_status }; pub fn change_passwd(user: &str, pw: &str) { @@ -10,7 +8,10 @@ pub fn change_passwd(user: &str, pw: &str) { /// Setup the users of the system pub fn setup_users(conf: &[UserConfig]) { - let mut doas_conf = String::new(); + if !conf.is_empty() { + install_pkgs(&["doas"]); + install_file("/mnt/etc/doas.conf", "permit persist :wheel as root", 0o644); + } for user in conf { let mut cmd = vec!["useradd"]; @@ -45,11 +46,13 @@ pub fn setup_users(conf: &[UserConfig]) { change_passwd(&user.name, &user.password); - if user.doas_root.unwrap_or_default() { - print_status(&format!("Allowing root doas for {}", user.name)); - doas_conf.push_str(&format!("permit {} as root\n", user.name)); + if user.wheel.unwrap_or_default() { + print_status(&format!("Adding {} to wheel", user.name)); + arch_chroot( + &vec!["usermod", "-a", "-G", "wheel", user.name.as_str()], + None, + false, + ); } } - - install_file("/mnt/etc/doas.conf", &doas_conf, 0o644); } diff --git a/src/print.rs b/src/print.rs index cd77dde..3882cc3 100644 --- a/src/print.rs +++ b/src/print.rs @@ -94,7 +94,7 @@ pub fn print_config(conf: &InstallConfig) { for user in user_conf { let mut groups = Vec::new(); - if user.doas_root.unwrap_or_default() { + if user.wheel.unwrap_or_default() { groups.push("🔑"); }