class AutomateIt::AccountManager::POSIX
AccountManager::POSIX¶ ↑
A POSIX
driver for the AccountManager.
Public Instance Methods
add_group(groupname, opts={})
click to toggle source
See AccountManager#add_group
# File lib/automateit/account_manager/posix.rb, line 68 def add_group(groupname, opts={}) modified = false unless has_group?(groupname) modified = true cmd = "groupadd" cmd << " -g #{opts[:gid]}" if opts[:gid] cmd << " #{groupname}" interpreter.sh(cmd) manager.invalidate(:groups) end if opts[:members] modified = true add_users_to_group(opts[:members], groupname) end return modified ? groups[groupname] : false end
add_groups_to_user(groups, username)
click to toggle source
See AccountManager#add_groups_to_user
# File lib/automateit/account_manager/posix.rb, line 47 def add_groups_to_user(groups, username) return _add_groups_to_user_helper(groups, username) do |missing, username| targets = (groups_for_user(username) + missing).uniq cmd = "usermod -G #{targets.join(',')} #{username}" interpreter.sh(cmd) end end
add_user(username, opts={})
click to toggle source
See AccountManager#add_user
# File lib/automateit/account_manager/posix.rb, line 15 def add_user(username, opts={}) return _add_user_helper(username, opts) do |username, opts| cmd = "useradd" cmd << " -c #{opts[:description] || username}" cmd << " -d #{opts[:home]}" if opts[:home] cmd << " -m" unless opts[:create_home] == false cmd << " -G #{opts[:groups].join(',')}" if opts[:groups] cmd << " -s #{opts[:shell] || "/bin/bash"}" cmd << " -u #{opts[:uid]}" if opts[:uid] cmd << " -g #{opts[:gid]}" if opts[:gid] cmd << " #{username} < /dev/null" cmd << " > /dev/null 2>&1 | grep -v blocks" if opts[:quiet] interpreter.sh(cmd) end end
add_users_to_group(users, groupname)
click to toggle source
See AccountManager#add_users_to_group
# File lib/automateit/account_manager/posix.rb, line 104 def add_users_to_group(users, groupname) _add_users_to_group_helper(users, groupname) do |missing, groupname| for username in missing targets = (groups_for_user(username) + [groupname]).uniq cmd = "usermod -G #{targets.join(',')} #{username}" interpreter.sh(cmd) end end end
method_missing(symbol, *args, &block)
click to toggle source
Dispatch common names to Etc, but don’t define these methods here because that would make available? and suitability think these exist, when in fact, they’re just wrappers.
Calls superclass method
# File lib/automateit/account_manager/posix.rb, line 130 def method_missing(symbol, *args, &block) case symbol when :users, :has_user?, :groups, :has_group?, :groups_for_user, :users_for_group, :users_to_groups manager.send(symbol, *args, &block) else super(symbol, *args, &block) end end
remove_group(groupname, opts={})
click to toggle source
See AccountManager#remove_group
# File lib/automateit/account_manager/posix.rb, line 93 def remove_group(groupname, opts={}) return false unless has_group?(groupname) cmd = "groupdel #{groupname}" interpreter.sh(cmd) manager.invalidate(:groups) return true end
remove_groups_from_user(groups, username)
click to toggle source
See AccountManager#remove_groups_from_user
# File lib/automateit/account_manager/posix.rb, line 57 def remove_groups_from_user(groups, username) return _remove_groups_from_user_helper(groups, username) do |present, username| matches = (groups_for_user(username) - [groups].flatten).uniq cmd = "usermod -G #{matches.join(',')} #{username}" interpreter.sh(cmd) end end
remove_user(username, opts={})
click to toggle source
See AccountManager#remove_user
# File lib/automateit/account_manager/posix.rb, line 35 def remove_user(username, opts={}) return _remove_user_helper(username, opts) do |username, opts| # Options: -r -- remove the home directory and mail spool cmd = "userdel" cmd << " -r" unless opts[:remove_home] == false cmd << " #{username}" cmd << " > /dev/null" if opts[:quiet] interpreter.sh(cmd) end end
remove_users_from_group(users, groupname)
click to toggle source
See AccountManager#remove_users_from_group
# File lib/automateit/account_manager/posix.rb, line 115 def remove_users_from_group(users, groupname) _remove_users_from_group_helper(users, groupname) do |present, groupname| u2g = users_to_groups for username in present user_groups = u2g[username] # FIXME tries to include non-present groups, should use some variant of present cmd = "usermod -G #{(user_groups.to_a-[groupname]).join(',')} #{username}" interpreter.sh(cmd) end end end