module LoomExt::CoreMods::User::Actions

Public Instance Methods

add(user, home_dir: nil, login_shell: "/bin/bash", uid: nil, gid: nil, groups: [], is_system_user: nil) click to toggle source
# File lib/loomext/coremods/user.rb, line 27
def add(user,
        home_dir: nil,
        login_shell: "/bin/bash",
        uid: nil,
        gid: nil,
        groups: [],
        is_system_user: nil)
  if user_exists? user
    Loom.log.warn "add_user skipping existing user => #{user}"
    return
  end

  flags = []
  flags << ["--home-dir", home_dir] if home_dir
  flags << ["--create-home"] if home_dir
  flags << ["--shell", login_shell] if login_shell
  flags << ["--uid", uid] if uid
  flags << ["--gid", gid] if gid
  flags << ["--groups", groups] unless groups.empty?
  flags << "--system" if is_system_user

  loom.exec :useradd, flags, user
end
add_system_user(user, **user_fields) click to toggle source
# File lib/loomext/coremods/user.rb, line 51
def add_system_user(user, **user_fields)
  if user_exists? user
    Loom.log.warn "add_system_user skipping existing user => #{user}"
    return
  end

  add user, is_system_user: true, login_shell: "/bin/false", **user_fields
end
make_sudoer(user) click to toggle source
# File lib/loomext/coremods/user.rb, line 69
def make_sudoer(user)
  raise SudoersDNotIncluded unless includes_sudoers?
  raise SudoersDNoExistError unless sudoersd_exists?

  sudoer_conf = :"#{user} ALL=(ALL) NOPASSWD:ALL"

  loom.files(LOOM_SUDOERS_FILE).append sudoer_conf
  loom.exec :chmod, "0440", LOOM_SUDOERS_FILE
end
remove(user) click to toggle source
# File lib/loomext/coremods/user.rb, line 60
def remove(user)
  unless user_exists? user
    Loom.log.warn "remove_user skipping non-existant user => #{user}"
    return
  end

  loom.exec :userdel, "-r", user
end