added new user options
This commit is contained in:
parent
ffbc2e5e72
commit
26cd7c264c
3 changed files with 43 additions and 1 deletions
|
@ -41,6 +41,9 @@ pub struct SSHKey {
|
|||
pub struct UserConfig {
|
||||
pub name: String,
|
||||
pub password: String,
|
||||
pub uid: Option<u32>,
|
||||
pub home_dir: Option<String>,
|
||||
pub shell: Option<String>,
|
||||
pub doas_root: Option<bool>,
|
||||
pub docker: Option<bool>,
|
||||
pub virtualization: Option<bool>,
|
||||
|
|
|
@ -13,7 +13,35 @@ pub fn setup_users(conf: &[UserConfig]) {
|
|||
let mut doas_conf = String::new();
|
||||
|
||||
for user in conf {
|
||||
arch_chroot(&["useradd", "-m", &user.name], None, false);
|
||||
let mut cmd = vec!["useradd"];
|
||||
|
||||
if let Some(home_dir) = &user.home_dir {
|
||||
if home_dir.is_empty() {
|
||||
cmd.push("-M");
|
||||
} else {
|
||||
cmd.push("-m");
|
||||
cmd.push("-d");
|
||||
cmd.push(home_dir);
|
||||
}
|
||||
} else {
|
||||
cmd.push("-m");
|
||||
}
|
||||
|
||||
let uid = user.uid.map(|x| x.to_string());
|
||||
|
||||
if let Some(uid) = &uid {
|
||||
cmd.push("-u");
|
||||
cmd.push(uid);
|
||||
}
|
||||
|
||||
if let Some(shell) = &user.shell {
|
||||
cmd.push("-s");
|
||||
cmd.push(shell);
|
||||
}
|
||||
|
||||
cmd.push(&user.name);
|
||||
|
||||
arch_chroot(&cmd, None, false);
|
||||
|
||||
change_passwd(&user.name, &user.password);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue